#pragma once
#include "DPSDKDefine.h"

#define DPSDK_URL_RTSP_LEN			256					// RTSP URL length

#define DPSDK_ALARM_ALARMCODE_LEN				50		// Length of alarm code
#define DPSDK_ALARM_HANDLERUSER_LEN				64		// Username length of the alarm handler
#define DPSDK_ALARM_EMAILRECEIVER_LEN			320		// Length of the notification email for alarm handling
#define DPSDK_ALARM_TIME_LEN					15		// Alarm relative time length
#define DPSDK_ALARM_DEVICEID_LEN				56		// Device ID length
#define DPSDK_ALARM_CHANNELID_LEN				64		// Channel ID length
#define DPSDK_ALARM_CHANNELID_INFO_LEN			64		// Info ID length
#define DPSDK_ALARM_ORGID_LEN					128		// Length of organization node ID
#define DPSDK_ALARM_ALARMID_LEN					20		// Alarm ID length
#define DPSDK_ALARM_DEVICENAME_LEN				256		// Length of device name
#define DPSDK_ALARM_CHANNELNAME_LEN				256		// Length of channel name
#define DPSDK_ALARM_PICTURE_URL_LEN				256*6	// Address length of the alarm picture(Url1|Url2)
#define DPSDK_ALARM_HANDLE_PICTURE_URL_LEN		256*2*17 // Address length of the alarm picture(Url1|Url2*(16+1))
#define DPSDK_ALARM_ALARMPICTURE_LEN			256*16	// Address length of the alarm picture
#define DPSDK_ALARM_ALARMEXTDATA_LEN			1024*2	// Extend Data Len
#define DPSDK_ALARM_GROUPNAME_LEN				50		// Length of group name
#define DPSDK_ALARM_ALARMSOURCE_LEN				100		// Length of alarm source
#define DPSDK_ALARM_ALARMTYPENAME_LEN			256		// Length of alarm type name. (Temporary, no corresponding data available in the database)
#define DPSDK_ALARM_LANGUAGE_LEN				20		// Language length (Temporary, no corresponding data available in the database)
#define DPSDK_ALARM_ALARMEXPORTDOWNLOADPATH_LEN	256		// URL address length for alarm export (Temporary, no corresponding data available in the database)
#define DPSDK_ALARM_NODECODE_LEN				90		// Code length for surveillance node
#define DPSDK_ALARM_ALARMMESSAGE_LEN			256	// Length of alarm extended information (Temporary, no corresponding data available in the database)
#define DPSDK_ALARM_EMAILRECEIVERLIST_SIZE		10		// Max email receiver list number for alarm handling notification
#define DPSDK_ALARM_LINKVEDIOINFOLIST_SIZE		16		// Max channel number for alarm linked videos
#define DPSDK_ALARM_MAIL_SUBJECT_LEN			256		// Length of alarm email's title 
#define DPSDK_ALARM_MAIL_FORMAT_LEN				512		// Alarm mail format string length
#define DPSDK_ALARM_MEMO_NUM_MAX                200
#define DPSDK_RECORD_NUM_MAX                    6000
#define DPSDK_ALARM_ALARMCOMMENT_LEN		    1024
#define DPSDK_PRESET_POINT_NUM_MAX				256
#define DPSDK_ROOMNUM_LEN						30		// Length of room number
#define DPSDK_ALARM_MAP_MAX_SIZE				3		// Max Map number of alarm record

#define DPSDK_NODE_ID_LEN						96		// Node ID length

#define DPSDK_HAS_VEHICLE_INT_FIELD_FALSE       -1000   // Integer field is not available

#define DPSDK_CONTENT_LEN_EX					1024
#define DPSDK_CONTENT_LEN_8192					8192

#define DPSDK_VCS_GPS_EXTENDINFO_STR_LEN		256		// gps extend info length

#define DPSDK_DISK_CAPACITY_LEN					24		// Disk capacity length
#define DPSDK_DISK_SLOT_NO_LEN					64		// Disk slot number length
#define DPSDK_RESOURCE_CODE_LEN				128		// Resource code length
//VEHICLE
#define DPSDK_VEHICLE_CARWAYCODE_LEN			64
#define DPSDK_VEHICLE_CARBRAND_CODE_LEN			8
#define DPSDK_VEHICLE_CARBRAND_STR_LEN			32
#define DPSDK_VEHICLE_CARDIRECT_CODE_LEN		8
#define DPSDK_VEHICLE_CARDIRECT_STR_LEN			32

#define DPSDK_SAVE_LOG_TYPE_LEN					32
#define DPSDK_SAVE_LOG_DESC_LEN					256
#define DPSDK_SAVE_LOG_DESC_LONG_LEN			1024

#define DPSDK_PLATE_TYPE_NAME_LEN				128
#define DPSDK_PLATE_AREA_CODE_LEN				128
#define DPSDK_WATERMARK_COSTOM_TEXT_LEN			512

// Unit Type
typedef enum
{
	PRO_DEV_UNIT_UNKOWN,												// 未知
	PRO_DEV_UNIT_ENC,													// 编码
	PRO_DEV_UNIT_DEC,													// 解码
	PRO_DEV_UNIT_ALARMIN,												// 报警输入
	PRO_DEV_UNIT_ALARMOUT,												// 报警输出
	PRO_DEV_UNIT_TVWALLIN,												// TvWall输入
	PRO_DEV_UNIT_TVWALLOUT,												// TvWall输出
	PRO_DEV_UNIT_DOORCTRL,												// 门禁
	PRO_DEV_UNIT_VOICE,													// 对讲
	PRO_DEV_UNIT_PE = 10,					// 动环PE,原来叫做PE=>power environment(动力环境)
	PRO_DEV_UNIT_POS = 11,
	PRO_DEV_UNIT_VIRTUAL = 12,					// 虚拟单元 针对智能服务器、雷达等没有通道概念的设备
	PRO_DEV_UNIT_ROADGATE = 14,					// 道闸
	PRO_DEV_UNIT_LED = 15,					// LED
	PRO_DEV_UNIT_CVI_ALARMIN = 16,					// CVI报警输入通道
	PRO_DEV_UNIT_ALARM_BOX = 17,					// 报警盒子通道
	PRO_DEV_UNIT_AL = 18,				    // 声光警戒
	PRO_DEV_UNIT_PARING_SPACE = 20,				    // 车位
	PRO_DEV_UNIT_EAS = 21,					// EAS通道(单元)
	PRO_DEV_UNIT_SIRENOUT = 22,					// 警号输出通道
	PRO_DEV_UNIT_IPSPEAKER = 23,					// IPSpeaker单元通道
	PRO_DEV_UNIT_UVSS = 24,					// UVSS通道
	PRO_DEV_UNIT_GATE = 25,					// 闸机单元通道
	PRO_DEV_UNIT_BOX_ALARMOUT = 26,					// 报警盒子输出
	PRO_DEV_UNIT_DISPATCHER = 33,					// 调度机
	PRO_DEV_UNIT_RADAR = 43,					// 雷达设备
	PRO_DEV_UNIT_DC = 45,				    // 显控制设备 1-解码器/NVD、2-视频综合平台/VMP 矩阵、3-拼接器/DSCON
	PRO_DEV_UNIT_ELEVATOR = 50,					// 梯控
	PRO_DEV_UNIT_NETWORK = 51,					// 网络设备 1-交换机
}DPSDK_PRO_DEV_UNIT_TYPE;

// 通道类型
typedef enum
{
	PRO_CHNL_TYPE_ENC_BEGIN,											// 编码通道
	PRO_CHNL_TYPE_STREAM = 1,					// 视频 显控设备 解码通道 1 表示输出通道； 声光警戒通道 1表示声通道
	PRO_CHNL_TYPE_PIC,													// 图片 显控设备 解码通道 2 表示解码通道； 声光警戒通道 2表示光通道
	PRO_CHNL_TYPE_MIX,													// 视频图片混合通道
	PRO_CHNL_TYPE_POS = 4,					// POS通道
	PRO_CHNL_TYPE_REMOTE,												// 远程通道
	PRO_CHNL_TYPE_ENC_END = 10,

	PRO_CHNL_TYPE_DEC_BEGIN,											// 解码通道
	PRO_CHNL_TYPE_DEC,
	PRO_CHNL_TYPE_DEC_END = 20,

	PRO_CHNL_TYPE_ALARMIN_BEGIN,										// 报警输入通道
	PRO_CHNL_TYPE_ALARMIN,
	PRO_CHNL_TYPE_ALARMIN_END = 30,

	PRO_CHNL_TYPE_ALARMOUT_BEGIN,										// 报警输出通道
	PRO_CHNL_TYPE_ALARMOUT,
	PRO_CHNL_TYPE_ALARMOUT_END = 40,

	PRO_CHNL_TYPE_LED_BEGIN,											// LED通道
	PRO_CHNL_TYPE_LED,
	PRO_CHNL_TYPE_LED_END = 50,

	PRO_CHNL_TYPE_AUDIO_BEGIN,
	PRO_CHNL_TYPE_AUDIO,
	PRO_CHNL_TYPE_AUDIO_END = 60,					// 音频通道

	PRO_CHNL_TYPE_UVSS = 1500,					//UVSS通道		

	//动环NVS
	PRO_CHNL_TYPE_PE_POWER_INTERRUPT = 1700,					// 市电中断报警 
	PRO_CHNL_TYPE_PE_POWER_ENABLED = 1701,					// 市电启用报警 
	PRO_CHNL_TYPE_PE_INFRARED_DETECT = 1702,					// 红外探测报警 
	PRO_CHNL_TYPE_PE_GAS_OVER_SECTION = 1703,					// 燃气浓度
	PRO_CHNL_TYPE_PE_FLOW_OVER_SECTION = 1704,					// 瞬时流量
	PRO_CHNL_TYPE_PE_TEMPERATURE_SECTION = 1705,					// 管道温度超过阀值 
	PRO_CHNL_TYPE_PE_PRESSURE_SECTION = 1706,					// 管道压力超过阀值

	//动环通道//开关量，不可控
	PRO_CHNL_TYPE_PE_SWITCH_START = 1800,
	PRO_CHNL_TYPE_PE_INFRARED,											// 红外对射告警
	PRO_CHNL_TYPE_PE_SMOKE,												// 烟感告警
	PRO_CHNL_TYPE_PE_WATER,												// 水浸告警
	PRO_CHNL_TYPE_PE_COMPRESSOR,										// 压缩机故障告警
	PRO_CHNL_TYPE_PE_OVERLOAD,											// 过载告警
	PRO_CHNL_TYPE_PE_BUS_ANOMALY,										// 母线异常
	CHNL_TYPE_PE_LIFE,												// 寿命告警
	CHNL_TYPE_PE_SOUND,												// 声音告警
	PRO_CHNL_TYPE_PE_TIME,												// 时钟告警
	PRO_CHNL_TYPE_PE_FLOW_LOSS,											// 气流丢失告警
	PRO_CHNL_TYPE_PE_FUSING,											// 熔断告警
	PRO_CHNL_TYPE_PE_BROWN_OUT,											// 掉电告警
	PRO_CHNL_TYPE_PE_LEAKING,											// 漏水告警
	PRO_CHNL_TYPE_PE_JAM_UP,											// 堵塞告警
	PRO_CHNL_TYPE_PE_TIME_OUT,											// 超时告警
	PRO_CHNL_TYPE_PE_REVERSE_ORDER,										// 反序告警
	PRO_CHNL_TYPE_PE_NETWROK_FAILURE,									// 组网失败告警
	PRO_CHNL_TYPE_PE_UNIT_CODE_LOSE,									// 机组码丢失告警
	PRO_CHNL_TYPE_PE_UNIT_CODE_DISMATCH,								// 机组码不匹配告警
	PRO_CHNL_TYPE_PE_FAULT,												// 故障告警
	PRO_CHNL_TYPE_PE_UNKNOWN,											// 未知告警
	PRO_CHNL_TYPE_PE_CUSTOM,											// 自定义告警
	PRO_CHNL_TYPE_PE_NOPERMISSION,										// 无权限告警
	PRO_CHNL_TYPE_PE_INFRARED_DOUBLE,									// 红外双鉴告警
	PRO_CHNL_TYPE_PE_ELECTRONIC_FENCE,									// 电子围栏告警
	PRO_CHNL_TYPE_PE_UPS_MAINS,											// 市电正常市电异常
	PRO_CHNL_TYPE_PE_UPS_BATTERY,										// 电池正常电池异常
	PRO_CHNL_TYPE_PE_UPS_POWER_SUPPLY,									// UPS正常输出旁路供电
	PRO_CHNL_TYPE_PE_UPS_RUN_STATE,										// UPS正常UPS故障
	PRO_CHNL_TYPE_PE_UPS_LINE_STYLE,									// UPS类型为在线式UPS类型为后备式
	PRO_CHNL_TYPE_PE_XC,												// 小车
	PRO_CHNL_TYPE_PE_DRQ,												// 断路器
	PRO_CHNL_TYPE_PE_GLDZ,												// 隔离刀闸
	PRO_CHNL_TYPE_PE_JDDZ,												// 接地刀闸
	PRO_CHNL_TYPE_PE_IN_END,

	//动环通道//开关量，可控
	PRO_CHNL_TYPE_PE_DOOR_SWITCH = 1850,					// 门禁控制器开关告警
	PRO_CHNL_TYPE_PE_UPS_SWITCH,										// UPS开关告警,
	PRO_CHNL_TYPE_PE_DBCB_SWITCH,										// 配电柜开关告警
	PRO_CHNL_TYPE_PE_ACDT_SWITCH,										// 空调开关告警
	PRO_CHNL_TYPE_PE_DTPW_SWITCH,										// 直流电源开关告警
	PRO_CHNL_TYPE_PE_LIGHT_SWITCH,										// 灯光控制器开关告警
	PRO_CHNL_TYPE_PE_FAN_SWITCH,										// 风扇控制器开关告警
	PRO_CHNL_TYPE_PE_PUMP_SWITCH,										// 水泵开关告警
	PRO_CHNL_TYPE_PE_BREAKER_SWITCH,									// 刀闸开关告警
	PRO_CHNL_TYPE_PE_RELAY_SWITCH,										// 继电器开关告警
	PRO_CHNL_TYPE_PE_METER_SWITCH,										// 电表开关告警
	PRO_CHNL_TYPE_PE_TRANSFORMER_SWITCH,								// 变压器开关告警
	PRO_CHNL_TYPE_PE_SENSOR_SWITCH,										// 传感器开关告警
	PRO_CHNL_TYPE_PE_RECTIFIER_SWITCH,									// 整流器告警
	PRO_CHNL_TYPE_PE_INVERTER_SWITCH,									// 逆变器告警
	PRO_CHNL_TYPE_PE_PRESSURE_SWITCH,									// 压力开关告警
	PRO_CHNL_TYPE_PE_SHUTDOWN_SWITCH,									// 关机告警
	PRO_CHNL_TYPE_PE_WHISTLE_SWITCH,									// 警笛告警
	PRO_CHNL_TYPE_PE_SWITCH_END,

	//动环通道//模拟量
	PRO_CHNL_TYPE_PE_ANALOG_START = 1880,
	PRO_CHNL_TYPE_PE_TEMPERATURE,										// 温度告警
	PRO_CHNL_TYPE_PE_HUMIDITY,											// 湿度告警
	PRO_CHNL_TYPE_PE_CONCENTRATION,										// 浓度告警
	PRO_CHNL_TYPE_PE_WIND,												// 风速告警
	PRO_CHNL_TYPE_PE_VOLUME,											// 容量告警
	PRO_CHNL_TYPE_PE_VOLTAGE,											// 电压告警
	PRO_CHNL_TYPE_PE_ELECTRICITY,										// 电流告警
	PRO_CHNL_TYPE_PE_CAPACITANCE,										// 电容告警
	PRO_CHNL_TYPE_PE_RESISTANCE,										// 电阻告警
	PRO_CHNL_TYPE_PE_CONDUCTANCE,										// 电导告警
	PRO_CHNL_TYPE_PE_INDUCTANCE,										// 电感告警
	PRO_CHNL_TYPE_PE_CHARGE,											// 电荷量告警
	PRO_CHNL_TYPE_PE_FREQUENCY,											// 频率告警
	PRO_CHNL_TYPE_PE_LIGHT_INTENSITY,									// 发光强度告警(坎)
	PRO_CHNL_TYPE_PE_PRESS,												// 力告警（如牛顿，千克力）
	PRO_CHNL_TYPE_PE_PRESSURE,											// 压强告警（帕，大气压）
	PRO_CHNL_TYPE_PE_HEAT_TRANSFER,										// 导热告警（瓦每平米）
	PRO_CHNL_TYPE_PE_THERMAL_CONDUCTIVITY,								// 热导告警（kcal/(m*h*℃)）
	PRO_CHNL_TYPE_PE_VOLUME_HEAT,										// 比容热告（kcal/(kg*℃)）
	PRO_CHNL_TYPE_PE_HOT_WORK,											// 热功告警（焦耳）
	PRO_CHNL_TYPE_PE_POWER,												// 功率告警（瓦）
	PRO_CHNL_TYPE_PE_PERMEABILITY,										// 渗透率告警（达西）
	PRO_CHNL_TYPE_PE_PROPERTION,										// 比例（包括电压电流变比，功率因素，负载单位为%） 
	PRO_CHNL_TYPE_PE_ENERGY,											// 电能（单位为J）
	PRO_CHNL_TYPE_PE_TIME_EX,											// 时间(文档中定义枚举时重名了，后缀加EX区分)
	PRO_CHNL_TYPE_PE_ANALOG_END,
	//动环通道=end

	PRO_CHNL_TYPE_AE_BEGIN = 2000,
	PRO_CHNL_TYPE_AE_DOOR_MAGNETISM = 2200,
	PRO_CHNL_TYPE_AE_PASSIVE_INFRARED = 2201,					// 被动红外
	PRO_CHNL_TYPE_AE_GAS = 2202,					// 气感
	PRO_CHNL_TYPE_AE_INITIATIVE_INFRARED = 2203,					// 主动红外
	PRO_CHNL_TYPE_AE_GLASS_CRASH = 2204,					// 玻璃破碎
	PRO_CHNL_TYPE_AE_EXIGENCY_SWITCH = 2205,					// 紧急开关
	PRO_CHNL_TYPE_AE_SHAKE = 2206,					// 震动
	PRO_CHNL_TYPE_AE_BOTH_JUDGE = 2207,					// 双鉴（红外+微波）
	PRO_CHNL_TYPE_AE_THREE_TECHNIC = 2208,					// 三技术
	PRO_CHNL_TYPE_AE_CALL_BUTTON = 2209,					// 呼叫按钮
	PRO_CHNL_TYPE_AE_SENSE_OTHER = 2210,					// 其他
	PRO_CHNL_TYPE_AE_END = 2300,

	PRO_CHNL_TYPE_PE = 2500,					// 动环通道类型

	PRO_CHNL_TYPE_TH_VISIBLE,					//可见光
	PRO_CHNL_TYPE_TH_THERMAL,					//热成像

	PRO_CHNL_TYPE_4GSPLEEP,						//4g休眠


	//显控视频通道==> 编码==>源
	PRO_CHNL_TYPE_VIDEOWALL_VIDEO_BEGIN,
	PRO_CHNL_TYPE_VIDEOWALL_VIDEO_ACQUISITON,	// 显控采集通道
	PRO_CHNL_TYPE_VIDEOWALL_VIDEO_ENCODE,	    // 显控编码通道
	PRO_CHNL_TYPE_VIDEOWALL_VIDEO_REMOTE,	    // 显控远程通道
	PRO_CHNL_TYPE_VIDEOWALL_VIDEO_END,

	//显控输出通道==> 解码==>上墙
	PRO_CHNL_TYPE_VIDEOWALL_OUT_BEGIN,
	PRO_CHNL_TYPE_VIDEOWALL_OUT,			// 显控输出通道
	PRO_CHNL_TYPE_VIDEOWALL_DECODE,	        // 显控解码通道
	PRO_CHNL_TYPE_VIDEOWALL_OUT_END,
}DPSDK_PRO_CHNL_TYPE;//"channelType"

// Device type，match web
typedef enum
{
	DEV_TYPE_ENC_BEGIN = 0,		// 编码设备
	DEV_TYPE_DVR = DEV_TYPE_ENC_BEGIN + 1,			// DVR
	DEV_TYPE_IPC = DEV_TYPE_ENC_BEGIN + 2,			// IPC
	DEV_TYPE_NVS = DEV_TYPE_ENC_BEGIN + 3,			// NVS
	DEV_TYPE_MCD = DEV_TYPE_ENC_BEGIN + 4,			// MCD
	DEV_TYPE_MDVR = DEV_TYPE_ENC_BEGIN + 5,			// MDVR
	DEV_TYPE_NVR = DEV_TYPE_ENC_BEGIN + 6,			// NVR
	DEV_TYPE_SVR = DEV_TYPE_ENC_BEGIN + 7,			// SVR
	DEV_TYPE_PCNVR = DEV_TYPE_ENC_BEGIN + 8,			// PCNVR，PSS自带的一个小型服务
	DEV_TYPE_MPT = DEV_TYPE_ENC_BEGIN + 9,			// MPT
	DEV_TYPE_EVS = DEV_TYPE_ENC_BEGIN + 10,			// EVS
	DEV_TYPE_MPGS = DEV_TYPE_ENC_BEGIN + 11,			// MPGS
	DEV_TYPE_SMART_IPC = DEV_TYPE_ENC_BEGIN + 12,			// SMART_IPC
	DEV_TYPE_SMART_TINGSHEN = DEV_TYPE_ENC_BEGIN + 13,			// 庭审主机
	DEV_TYPE_SMART_NVR = DEV_TYPE_ENC_BEGIN + 14,			// SMART_NVR
	DEV_TYPE_PRC = DEV_TYPE_ENC_BEGIN + 15,			// 防护舱
	DEV_TYPE_JT808 = DEV_TYPE_ENC_BEGIN + 18,			// 部标JT808
	DEV_TYPE_THDVR = DEV_TYPE_ENC_BEGIN + 19,			// 通过第三方服务接进来的
	DEV_TYPE_VTT = DEV_TYPE_ENC_BEGIN + 21,			// VTT
	DEV_TYPE_THC = DEV_TYPE_ENC_BEGIN + 26,			// 热成像设备
	DEV_TYPE_DSJ = DEV_TYPE_ENC_BEGIN + 27,			// DSJ
	DEV_TYPE_MAINSUB = DEV_TYPE_ENC_BEGIN + 34,			// 主从跟踪一体化IPC（多个通道）
	DEV_TYPE_MCS = DEV_TYPE_ENC_BEGIN + 35,			// 微云
	DEV_TYPE_WATCHER = DEV_TYPE_ENC_BEGIN + 36,			// WATCHER(A panoramic view of PTZ)
	DEV_TYPE_SMARTWATCHER = DEV_TYPE_ENC_BEGIN + 39,			// 守望者(视频云VSL中用该编码)
	DEV_TYPE_SD = DEV_TYPE_ENC_BEGIN + 42,			// SD（半球）
	DEV_TYPE_IVSS = DEV_TYPE_ENC_BEGIN + 43,			// IVSS(Pro中使用，非人脸服务的智能设备)
	DEV_TYPE_MNVR = DEV_TYPE_ENC_BEGIN + 44,			// 车载NVR
	DEV_TYPE_IVS = DEV_TYPE_ENC_BEGIN + 77,			// ProV8.0.1小版本PB8000配套需求--增加IVS/智能分析服务器设备类型
	DEV_TYPE_EEC = DEV_TYPE_ENC_BEGIN + 97,			// EECV8.1
	DEV_TYPE_ENC_END,

	DEV_TYPE_TVWALL_BEGIN = 100,
	DEV_TYPE_BIGSCREEN = DEV_TYPE_TVWALL_BEGIN + 1,		// 大屏
	DEV_TYPE_TVWALL_END,

	DEV_TYPE_DEC_BEGIN = 200,		// 解码设备
	DEV_TYPE_NVD = DEV_TYPE_DEC_BEGIN + 1,			// NVD
	DEV_TYPE_SNVD = DEV_TYPE_DEC_BEGIN + 2,			// SNVD
	DEV_TYPE_UDS = DEV_TYPE_DEC_BEGIN + 5,			// UDS
	DEV_TYPE_DEC_END,

	DEV_TYPE_MATRIX_BEGIN = 300,		// 矩阵设备
	DEV_MATRIX_M60 = DEV_TYPE_MATRIX_BEGIN + 1,		// M60
	DEV_MATRIX_NVR6000 = DEV_TYPE_MATRIX_BEGIN + 2,		// NVR6000
	DEV_TYPE_MATRIX_END,

	DEV_TYPE_IVS_BEGIN = 400,		// 智能设备
	DEV_TYPE_ISD = DEV_TYPE_IVS_BEGIN + 1,			// ISD 智能球
	DEV_TYPE_IVS_B = DEV_TYPE_IVS_BEGIN + 2,			// IVS-B 行为分析服务
	DEV_TYPE_IVS_V = DEV_TYPE_IVS_BEGIN + 3,			// IVS-V 视频质量诊断服务
	DEV_TYPE_IVS_FR = DEV_TYPE_IVS_BEGIN + 4,			// IVS-FR 目标识别服务
	DEV_TYPE_IVS_PC = DEV_TYPE_IVS_BEGIN + 5,			// IVS-PC 人流量统计服务
	DEV_TYPE_IVS_M = DEV_TYPE_IVS_BEGIN + 6,			// IVS_M 主从跟踪智能盒
	DEV_TYPE_IVS_PC_BOX = DEV_TYPE_IVS_BEGIN + 7,			// IVS-PC 智能盒 
	DEV_TYPE_IVS_B_BOX = DEV_TYPE_IVS_BEGIN + 8,			// IVS-B 智能盒
	DEV_TYPE_IVS_M_BOX = DEV_TYPE_IVS_BEGIN + 9,			// IVS-M 盒子
	DEV_TYPE_IVS_PRC = DEV_TYPE_IVS_BEGIN + 10,			// 防护舱
	DEV_TYPE_IVS_F7300 = DEV_TYPE_IVS_BEGIN + 12,			// IVS-F7300
	DEV_TYPE_IVS_F7500 = DEV_TYPE_IVS_BEGIN + 13,			// IVS-7500
	DEV_TYPE_IVS_IVSS = DEV_TYPE_IVS_BEGIN + 14,			// IVSS
	DEV_TYPE_IVS_SCKMACH = DEV_TYPE_IVS_BEGIN + 37,			// 安检机
	DEV_TYPE_IVS_SCKDOOR = DEV_TYPE_IVS_BEGIN + 38,			// 安检门
	DEV_TYPE_IVS_EAS = DEV_TYPE_IVS_BEGIN + 42,			// EAS
	DEV_TYPE_IVS_END,

	DEV_TYPE_BAYONET_BEGIN = 500,		// -C相关设备
	DEV_TYPE_CAPTURE = DEV_TYPE_BAYONET_BEGIN + 1,		// 卡口设备
	DEV_TYPE_SPEED = DEV_TYPE_BAYONET_BEGIN + 2,		// 测速设备
	DEV_TYPE_TRAFFIC_LIGHT = DEV_TYPE_BAYONET_BEGIN + 3,		// 闯红灯设备
	DEV_TYPE_INCORPORATE = DEV_TYPE_BAYONET_BEGIN + 4,		// 一体化设备
	DEV_TYPE_PLATEDISTINGUISH = DEV_TYPE_BAYONET_BEGIN + 5,		// 车牌识别设备
	DEV_TYPE_VIOLATESNAPPIC = DEV_TYPE_BAYONET_BEGIN + 6,		// 违停检测设备
	DEV_TYPE_CARINSPECTION_INDOOR = DEV_TYPE_BAYONET_BEGIN + 7,		// 室内车检器
	DEV_TYPE_ENTRANCE = DEV_TYPE_BAYONET_BEGIN + 8,		// 出入口设备
	DEV_TYPE_VIOLATESNAPBALL = DEV_TYPE_BAYONET_BEGIN + 9,		// 违停抓拍球机
	DEV_TYPE_THIRDBAYONET = DEV_TYPE_BAYONET_BEGIN + 10,		// 第三方卡口设备
	DEV_TYPE_ULTRASONIC = DEV_TYPE_BAYONET_BEGIN + 11,		// 超声波车位检测器
	DEV_TYPE_FACE_CAPTURE = DEV_TYPE_BAYONET_BEGIN + 12,		// 人脸抓拍设备
	DEV_TYPE_ITC_SMART_NVR = DEV_TYPE_BAYONET_BEGIN + 13,		// 卡口智能NVR设备
	DEV_TYPE_PARKINGAREASNAP = DEV_TYPE_BAYONET_BEGIN + 14,		// 停车场区域抓拍设备
	DEV_TYPE_ITC_EVS = DEV_TYPE_BAYONET_BEGIN + 15,		// EVS直存设备
	DEV_TYPE_CARINSPECTION_OUTDOOR = DEV_TYPE_BAYONET_BEGIN + 25,	// 室外车检器
	DEV_TYPE_ITC_IVS = DEV_TYPE_BAYONET_BEGIN + 18,		// IVS
	DEV_TYPE_ITC_PC_BOX = DEV_TYPE_BAYONET_BEGIN + 19,		// 智能终端盒
	DEV_TYPE_ITC_SPEED = DEV_TYPE_BAYONET_BEGIN + 20,		// 测速仪
	DEV_TYPE_ITC_TRAFFIC = DEV_TYPE_BAYONET_BEGIN + 22,		// 交通相机
	DEV_TYPE_BAYONET_END,

	DEV_TYPE_ALARM_BEGIN = 600,		// 报警设备
	DEV_TYPE_ALARMHOST = DEV_TYPE_ALARM_BEGIN + 1,			// 报警主机
	DEV_TYPE_VIDEO_ALARMHOST = DEV_TYPE_ALARM_BEGIN + 2,         // 视频报警主机
	DEV_TYPE_ALARM_END,

	DEV_TYPE_DOORCTRL_BEGIN = 700,
	DEV_TYPE_DOORCTRL_DOOR = DEV_TYPE_DOORCTRL_BEGIN + 1,		// 门禁控制器
	DEV_TYPE_DOORCTRL_RECOGNITION_TERMINAL = DEV_TYPE_DOORCTRL_BEGIN + 16,// 门禁识别终端
	DEV_TYPE_DOORCTRL_DOOR_THIRD = DEV_TYPE_DOORCTRL_BEGIN + 99,	// 第三方门禁
	DEV_TYPE_DOORCTRL_END,

	DEV_TYPE_PE_BEGIN = 800,
	DEV_TYPE_PE_PE = DEV_TYPE_PE_BEGIN + 1,			// 动环
	DEV_TYPE_PE_AE6016 = DEV_TYPE_PE_BEGIN + 2,			// AE6016设备
	DEV_TYPE_PE_NVS = DEV_TYPE_PE_BEGIN + 3,			// 带动环功能的NVS设备
	DEV_TYPE_PE_END,

	DEV_TYPE_VOICE_BEGIN = 900,		// ip对讲
	DEV_TYPE_VOICE_MIKE = DEV_TYPE_VOICE_BEGIN + 1,
	DEV_TYPE_VOICE_NET = DEV_TYPE_VOICE_BEGIN + 2,
	DEV_TYPE_VOICE_END,

	DEV_TYPE_IP_BEGIN = 1000,		// IP设备（通过网络接入的设备）
	DEV_TYPE_IP_SCNNER = DEV_TYPE_IP_BEGIN + 1,			// 扫描枪
	DEV_TYPE_IP_SWEEP = DEV_TYPE_IP_BEGIN + 2,			// 地磅
	DEV_TYPE_IP_POWERCONTROL = DEV_TYPE_IP_BEGIN + 3,			// 电源控制器
	DEV_TYPE_IP_END,

	DEV_TYPE_MULTIFUNALARM_BEGIN = 1100,		// 多功能报警主机
	DEV_TYPE_VEDIO_ALARMHOST = DEV_TYPE_MULTIFUNALARM_BEGIN + 1,	// 视频报警主机
	DEV_TYPE_MULTIFUNALARM_END,

	DEV_TYPE_SLUICE_BEGIN = 1200,
	DEV_TYPE_SLUICE_DEV = DEV_TYPE_SLUICE_BEGIN + 1,		// 出入口道闸设备
	DEV_TYPE_SLUICE_PARKING = DEV_TYPE_SLUICE_BEGIN + 2,		// 停车场道闸设备
	DEV_TYPE_SLUICE_STOPBUFFER = DEV_TYPE_SLUICE_BEGIN + 3,		// 视频档车器
	DEV_TYPE_SLUICE_END,

	DEV_TYPE_LED_BEGIN = 1400,
	DEV_TYPE_LED_INDOOR = DEV_TYPE_LED_BEGIN + 5,			// 室内余位引导屏
	DEV_TYPE_LED_OUTDOOR = DEV_TYPE_LED_BEGIN + 6,           // 室外余位引导屏
	DEV_TYPE_ENTRANCE_LED_OUTDOOR = DEV_TYPE_LED_BEGIN + 7,           // 室外入口余位屏
	DEV_TYPE_LED_END,

	DEV_TYPE_CARBOTTOMSACN_BEGIN = 1500,
	DEV_TYPE_VIBRATIONFIBER_DEV = DEV_TYPE_CARBOTTOMSACN_BEGIN + 1,// Vibration fiber device 
	DEV_TYPE_CARBOTTOMSACN_UVSS = DEV_TYPE_CARBOTTOMSACN_BEGIN + 2,// UVSS设备 
	DEV_TYPE_CARBOTTOMSACN_END,

	DEV_TYPE_PATROL_BEGIN = 1600,
	DEV_TYPE_PATROL_DEV = DEV_TYPE_PATROL_BEGIN + 1,		// 巡更棒设备
	DEV_TYPE_PATROL_SPOT = DEV_TYPE_PATROL_BEGIN + 2,		// 巡更点设备
	DEV_TYPE_PATROL_END,

	DEV_TYPE_SENTRY_BOX_BEGIN = 1700,
	DEV_TYPE_SENTRY_BOX_DEV = DEV_TYPE_SENTRY_BOX_BEGIN + 1,	// 哨位箱设备
	DEV_TYPE_SENTRY_BOX_END,

	DEV_TYPE_COURT_BEGIN = 1800,
	DEV_TYPE_COURT_DEV = DEV_TYPE_COURT_BEGIN + 1,			// 庭审设备
	DEV_TYPE_COURT_END,

	DEV_TYPE_VIDEO_TALK_BEGIN = 1900,
	DEV_TYPE_VIDEO_TALK_VTNC = DEV_TYPE_VIDEO_TALK_BEGIN + 1,
	DEV_TYPE_VIDEO_TALK_VTO = DEV_TYPE_VIDEO_TALK_BEGIN + 2,
	DEV_TYPE_VIDEO_TALK_VTH = DEV_TYPE_VIDEO_TALK_BEGIN + 3,
	DEV_TYPE_VIDEO_TALK_MVTH = DEV_TYPE_VIDEO_TALK_BEGIN + 4,
	DEV_TYPE_VIDEO_TALK_FENCE_VTO = DEV_TYPE_VIDEO_TALK_BEGIN + 5,
	DEV_TYPE_VIDEO_TALK_DOORLOCK_VTH = DEV_TYPE_VIDEO_TALK_BEGIN + 6,
	DEV_TYPE_VIDEO_TALK_2ND_VTO = DEV_TYPE_VIDEO_TALK_BEGIN + 7,
	DEV_TYPE_VIDEO_TALK_VTS = DEV_TYPE_VIDEO_TALK_BEGIN + 8,
	DEV_TYPE_VIDEO_TALK_SIP_PHONE = DEV_TYPE_VIDEO_TALK_BEGIN + 10,
	DEV_TYPE_VIDEO_TALK_APP = DEV_TYPE_VIDEO_TALK_BEGIN + 11,
	DEV_TYPE_VIDEO_TALK_END,
	DEV_TYPE_BROADCAST_BEGIN = 2000,
	DEV_TYPE_BROADCAST_ITC_T6700R = DEV_TYPE_BROADCAST_BEGIN + 1,	// ITC_T6700R广播设备
	DEV_TYPE_BROADCAST_END,

	DEV_TYPE_VIDEO_RECORD_SERVER_BEGIN = 2100,
	DEV_TYPE_VIDEO_RECORD_SERVER_BNVR = DEV_TYPE_VIDEO_RECORD_SERVER_BEGIN + 1, // BNVR设备
	DEV_TYPE_VIDEO_RECORD_SERVER_OE = DEV_TYPE_VIDEO_RECORD_SERVER_BEGIN + 2, // 手术设备(operation equipment)
	DEV_TYPE_VIDEO_RECORD_SERVER_END,

	DEV_TYPE_DISPATCHER_BEGIN = 2200,
	DEV_TYPE_DISPATCHER = DEV_TYPE_DISPATCHER_BEGIN + 1,	//指挥调度设备
	DEV_TYPE_DISPATCHER_END,

	DEV_TYPE_ALARM_STUB_BEGIN = 3400,								// 报警柱设备类
	//DEV_TYPE_ALARM_STUB_VTA				= DEV_TYPE_ALARM_STUB_BEGIN + 1,
	DEV_TYPE_EMERGENCY_TOWER = DEV_TYPE_ALARM_STUB_BEGIN + 1,
	DEV_TYPE_EMERGENCY_PHONE_BOX = DEV_TYPE_ALARM_STUB_BEGIN + 2,
	DEV_TYPE_ALARM_STUB_END,

	DEV_TYPE_POS_BEGIN = 4000,
	DEV_TYPE_POS_BOX = DEV_TYPE_POS_BEGIN + 1,		// POS盒子
	DEV_TYPE_POS_END,

	DEV_TYPE_TRANSCODER_BEGIN = 4100,                               // Transcoder device
	DEV_TYPE_TRANSCODER_VCS = DEV_TYPE_TRANSCODER_BEGIN + 1,
	DEV_TYPE_TRANSCODER_END,

	DEV_TYPE_OTHER_DEVICE_BEGIN = 4200,                             // Device without channel
	DEV_TYPE_OTHER_DEVICE_B100 = DEV_TYPE_OTHER_DEVICE_BEGIN + 1,
	DEV_TYPE_OTHER_DEVICE_B300 = DEV_TYPE_OTHER_DEVICE_BEGIN + 2,
	DEV_TYPE_OTHER_DEVICE_END,

	DEV_TYPE_RADAR_BEGIN = 4300,							// 雷达设备
	DEV_TYPE_RADAR_B100 = DEV_TYPE_RADAR_BEGIN + 1,
	DEV_TYPE_RADAR_B300 = DEV_TYPE_RADAR_BEGIN + 2,
	DEV_TYPE_RADAR_SINGLE = DEV_TYPE_RADAR_BEGIN + 3,	//single radar
	DEV_TYPE_RADAR_PTZ = DEV_TYPE_RADAR_BEGIN + 4,		//radar system - ptz
	DEV_TYPE_RADAR_CAM = DEV_TYPE_RADAR_BEGIN + 5,		//radar camera
	DEV_TYPE_RADAR_END,

	DEV_TYPE_IPSPEAKER_BEGIN = 4400,					// IPSpeaker device
	DEV_TYPE_IPSPEAKER = DEV_TYPE_IPSPEAKER_BEGIN + 1,
	DEV_TYPE_IPSPEAKER_END,

	DEV_TYPE_VIDEOWALL_CONTROLLER_BEGIN = 4500,								// 显控设备
	DEV_TYPE_VIDEOWALL_NVD = DEV_TYPE_VIDEOWALL_CONTROLLER_BEGIN + 2,		// 显控 解码器/NVD   
	DEV_TYPE_VIDEOWALL_DSCON = DEV_TYPE_VIDEOWALL_CONTROLLER_BEGIN + 4,		// 显控 拼接器/DSCON  大屏
	DEV_TYPE_VIDEOWALL_VMP = DEV_TYPE_VIDEOWALL_CONTROLLER_BEGIN + 6,		// 显控 视频综合平台/VMP 矩阵
	DEV_TYPE_VIDEOWALL_CONTROLLER_END,

	DEV_TYPE_ELEVATOR_BEGIN = 5000,					// 梯控设备
	DEV_TYPE_ELEVATOR_ASEH21 = DEV_TYPE_ELEVATOR_BEGIN + 1,
	DEV_TYPE_ELEVATOR_END,

	DEV_TYPE_NETWORKBASE_BEGIN = 5100,										// 网络设备
	DEV_TYPE_NETWORK_SWITCH = DEV_TYPE_NETWORKBASE_BEGIN + 1,				// 网络设备 交换机 
	DEV_TYPE_NETWORKBASE_END,

	DEV_TYPE_GATE_MACHINE_BRGIN = 5200,										//闸机设备
	DEV_TYPE_GATE_MACHINE_GENERAL = DEV_TYPE_GATE_MACHINE_BRGIN + 1,		//闸机设备 普通闸机
	DEV_TYPE_GATE_MACHINE_END,

	DEV_TYPE_VISITOR_MACHINE_BRGIN = 5300,										//访客机
	DEV_TYPE_VISITOR_MACHINE_STANDING = DEV_TYPE_VISITOR_MACHINE_BRGIN + 16,	//立式访客机
	DEV_TYPE_VISITOR_MACHINE_DESKTOP = DEV_TYPE_VISITOR_MACHINE_BRGIN + 17,		//桌式访客机
	DEV_TYPE_VISITOR_MACHINE_END,

	DEV_TYPE_IVSS_EX_BEGIN = 7000,		// 智能设备
	DEV_TYPE_IVSS_EX = DEV_TYPE_IVSS_EX_BEGIN + 43,		// new IVSS
	DEV_TYPE_IVSS_EX_END,		// 智能设备
}DPSDK_DEV_TYPE;

// 设备大类型
typedef enum
{
	DEV_UNKNOW = 0,			// 未知设备
	DEV_ENC = 1,			// 编码设备
	DEV_DEC,								// 解码设备
	DEV_ALARM,								// 报警设备
	DEV_TVWALL,								// 电视墙
	DEV_BAYONET,							// 卡口设备
	DEV_MARTIX,								// 矩阵设备
	DEV_IVS,								// 智能设备
	DEV_DOORCTRL,							// 门禁设备
	DEV_PE,									// 动环设备(env_gather)
	DEV_VOICE,								// 对讲设备
	DEV_VSC,								// 转发设备
	DEV_IP,									// IP设备（通过网络接入的设备）
	DEV_MULTIFUN_ALARM,						// 多功能的报警设备（如视频报警主机）
	DEV_SLUICE,								// 道闸设备
	DEV_CARBOTTOMSCAN,						// 车底扫描
	DEV_LED,								// LED设备
	DEV_PATROL = 17,			// 巡更设备
	DEV_VIBRATIONFIBER = 18,			// 震动光纤设备
	DEV_SENTRY_BOX = 19,			// 哨位箱设备
	DEV_COURT = 20,			// 庭审设备
	DEV_VIDEO_TALK = 21,			// 可视对讲设备
	DEV_BROADCAST = 22,			// 广播设备
	DEV_VIDEO_RECORD_SERVER = 23,			// 录播服务器设备
	DEV_VISITOR_MACHINE = 30,			// 访客机
	DEV_DISPATCHER = 33,			// 指挥调度设备
	DEV_ALARM_STUB = 34,			// 报警柱大类
	DEV_POS = 40,           // POS大类
	DEV_RADAR = 43,           // 雷达设备
	DEV_DC = 45,           // 显控制设备 1-解码器/NVD、2-视频综合平台/VMP 矩阵、3-拼接器/DSCON
	DEV_SCKMACH = 46,						// 安检设备大类
	DEV_ELEVATOR = 50,			// 梯控设备
	DEV_NETWORK = 51,			// 网络设备 1-交换机
	DEV_IP_SPEAKER = 53,			// IP_Speaker设备
	DEV_GATE_MACHINE = 70,			// 闸机设备大类
}DPSDK_DEV_MAIN_TYPE;

typedef struct
{
	DPSDK_LOGIN_PARAM struLoginParam;	//登录参数
	DPSDK_CHAR szUserId[DPSDK_ID_LEN];	//用户ID
	DPSDK_USHORT ushHttpPort;			//http端口
	DPSDK_LOGIN_RESULT struLoginRes;
}USER_LOGIN_INFO;

typedef struct
{
	DPSDK_CHAR				szUserName[DPSDK_NAME_LEN_EX];				// User name
	DPSDK_CHAR				szUserId[DPSDK_ID_LEN];						// UserID
	DPSDK_CHAR				szGroupId[DPSDK_ID_LEN];						// GroupID
	DPSDK_CHAR				szIP[DPSDK_IP_LEN];							// IP address
	DPSDK_CHAR				szMACAddress[DPSDK_MACADDRESS_LEN];			// MAC address
	DPSDK_CHAR				szPWD[DPSDK_PWD_LEN];						// Cleartext password, the login type is0(basic account), can not be empty
	DPSDK_CHAR				szClientType[DPSDK_PWD_LEN];
	DPSDK_CHAR				szRsaEncryptKey[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR				szAesKey[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR				szSecretVector[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR				szPOCId[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR				szPOCPwd[DPSDK_CERT_KEY_LEN];
	DPSDK_CHAR				szClientAesKey[DPSDK_AESKEY_LEN];
	DPSDK_CHAR				szClientSecretVector[DPSDK_SECRETVECTOR_LEN];
	DPSDK_CHAR				szNetMode[DPSDK_LEN_256];
	DPSDK_INT32				iEncryptMod;
	DPSDK_BOOL				bHighVersion;
	DPSDK_UINT32			uiPort;										// Login server port
	DPSDK_BOOL				bDomainUser;
	DPSDK_INT32				iHttpsMode;
	DPSDK_INT32				iCompressType;
	DPSDK_INT32				iClientType;
	DPSDK_INT32				iUseMqFlag;
	DPSDK_INT32				iProtocolVersion;
	DPSDK_INT32				iServerMode;								// look	DPSDK_SERVER_MOD
	DPSDK_MQ_SSL_INFO		struSSLInfo;
	DPSDK_TOKENCHANGEEVENT_NOTIFY struTokenInfo;
	USER_LOGIN_INFO struUserLoginInfo;
}DPSDK_PRO_PARAMS;

typedef enum
{
	LOG_LevelUnknown = 0, // Unknown
	LOG_LevelFatal,	     // fatal
	LOG_LevelError,	     // fatal，error
	LOG_LevelWarn,	     // fatal，error，warn
	LOG_LevelInfo,	     // fatal，error，warn，info
	LOG_LevelTrace,	     // fatal，error，warn，info，trace
	LOG_LevelDebug	     // fatal，error，warn，info，trace，debug
}LOG_VAXPLAYER_LEVEL;

typedef enum
{
	MQ_QUQUE = 1,    // Alarm queue
	MQ_TOPIC = 2,	// Alarm topic.
	MQ_EVENT_TOPIC = 3,    // Event topic.
	MQ_COMMON_TOPIC = 4,    // Common topic
	MQ_ANPR_TOPIC = 5,	// Carsurvey topic.
	MQ_VEHICLE_TOPIC = 6,	// Vehicle topic
}DPSDK_MQ_TYPE;

/**
* @brief	Data sync callback function. Used for upper level data copy.
* @param	[IN] iDataType		Data type. For details, see DPSDK_DATA_TYPE definition.
* @param	[IN] pDataBuf		Data buffer.
* @param	[IN] uiBufSize		Data size
* @param	[IN] pUserData		User data
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL * DPSDK_DataCallback)(DPSDK_INT32 iDataType,
	DPSDK_VOID* pDataBuf,
	DPSDK_UINT32 uiBufSize,
	DPSDK_VOID* pUserData);

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];				// Session ID
}DPSDK_SESSION_ID;

// Order information
typedef struct
{
	DPSDK_UINT32 uiOrderType;										// Order type
	DPSDK_UINT32 uiDirection;										// Order direction, 0：Ascending order, 1：Descending order
}DPSDK_ORDER_INFO;

typedef struct
{
	DPSDK_INT32 iOrgCodeNum;
	DPSDK_ID* pOrgCodeList; //Person and Vehicle Group
}DPSDK_ORGCODE_LIST;

typedef struct
{
	DPSDK_CHAR		szChannelCode[DPSDK_CHANNEL_ID_LEN];	// Channel code						 
	DPSDK_INT32		iX;										// X coordinates
	DPSDK_INT32		iY;										// Y coordinates
}DPSDK_RADIO_POINT_PARAM;

typedef struct
{
	DPSDK_CHAR		szTemperUnit[DPSDK_TYPE_LEN];			// the unit of temperature				 
	DPSDK_INT32		iTemperAver;							// the value of temperature
}DPSDK_RADIO_POINT_INFO;

typedef enum
{
	FTP_UNKNOW = 0,	// Unknown
	FTP_ALARM = 1,	// Alarm
	FTP_TAG = 2,	// Tag
	FTP_DOOR = 3,	// Access
}DPSDK_FTP_DATA_TYPE;

typedef struct
{
	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR  szSession[DPSDK_SESSION_LEN];
}DPSDK_EXPORT_FILE_RESULT;

// FTP server information
typedef struct
{
	DPSDK_CHAR		szUrl[DPSDK_URL_LEN];					// FTP absolute path ftps://192.168.1.1:21
	DPSDK_CHAR		szUserName[DPSDK_NAME_LEN];				// User name
	DPSDK_CHAR		szPWD[DPSDK_PWD_LEN];					// Password
	DPSDK_UINT32	uiDataType;								// Data type Refer: DPSDK_FTP_DATA_TYPE
}DPSDK_FTP_SERVER_INFO;

// FTP server list information
typedef struct
{
	DPSDK_UINT32			uiTotal;						// The total number of result
	DPSDK_FTP_SERVER_INFO	struFtpServerInfo[1];			// FTP server information
}DPSDK_FTP_SERVER_INFO_LIST;

// The notify of FTP server configuration modify
typedef struct
{
	DPSDK_CHAR		szUrl[DPSDK_FTP_MODIFY_URL_LEN];		// FTP absolute path ftps://192.168.1.1:21|ftps://192.168.1.2:21
	DPSDK_CHAR		szUserName[DPSDK_NAME_LEN];				// User name
	DPSDK_CHAR		szPWD[DPSDK_PWD_LEN];					// Password
}DPSDK_FTP_CONFIG_MODIFY_NOTIFY;

//////////////////////////////////////////////////////////////////////////
/**
* @brief	Fisheye Data Callback Function
* @param [OUT] uszCorrectMode		Correction Mode
* @param [OUT] uRadius				Radius [0,8192)
* @param [OUT] uCircleX				Abscissa of Circle Center
* @param [OUT] uCircleY				Ordinate of Circle Center
* @param [OUT] uWidthRatio			Width Ratio
* @param [OUT] uHeigthRatio			Height Ratio
* @param [OUT] uszGain				Gain
* @param [OUT] uszDenoiseLevel		Noise Reduction Level
* @param [OUT] uszInstallStyle		Fisheye Installation Type
* @param [OUT] pUserData			User Data
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL *DPSDK_FISHEYE_CALLBACK)(DPSDK_UCHAR uszCorrectMode,
	DPSDK_USHORT uRadius,
	DPSDK_USHORT uCircleX,
	DPSDK_USHORT uCircleY,
	DPSDK_UINT32 uWidthRatio,
	DPSDK_UINT32 uHeigthRatio,
	DPSDK_UCHAR uszGain,
	DPSDK_UCHAR uszDenoiseLevel,
	DPSDK_UCHAR uszInstallStyle,
	DPSDK_LPVOID pUserData);

/**
* @brief	Data Callback Function after Source Data Analysis
* @param [OUT] pUserData	User Data
* @param [OUT] iEncode		MPEG4, H264, STDH264
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_DEMUXDEC_CALLBACK)(DPSDK_LPVOID pUserData,
	DPSDK_INT32 iEncode);

/**
* @brief	Media Stream Callback Function
* @param	[IN] iMediaType Corresponding Business of Media Stream
* @param	[IN] pData		Media Stream Data
* @param	[IN] iDataLen	Data Length
* @param	[IN] pUserParam	User Parameter
* @return	Returned value is 0 in case of success
*/
typedef DPSDK_INT32(DPSDK_CALL* DPSDK_REALDATA_CALLBACK)(DPSDK_INT32 iMediaType,
	DPSDK_CHAR* pData,
	DPSDK_INT32 iDataLen,
	DPSDK_VOID* pUserParam);


/**
* @brief	Local Record Event Callback Funciton
* @param	[IN] iEventType		 Event Type
* @param	[IN] iMediaSessionID Media Session ID
* @param	[IN] pData			 callback data
* @param	[IN] pUserParam		 User Parameter
* @return	Returned value is 0 in case of success
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_EVENT_LOCALPLAY_CALLBACK)(DPSDK_INT32 iEventType,
	DPSDK_INT32 iMediaSessionID,
	DPSDK_VOID* pData,
	DPSDK_VOID* pUserParam);

/**
* @brief	IVS Data Callback Funciton
* @param	[IN] pData		Media Stream Data
* @param	[IN] iDataLen	Data Length
* @param	[IN] lRealLen	Real Length
* @param	[IN] pReserved	Reserved Param
* @param	[IN] pUserData		 User Data
* @return	Returned value is 0 in case of success
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_IVSDATA_CALLBACK)(DPSDK_CHAR* pData,
	DPSDK_LONG lType,
	DPSDK_LONG lDateLen,
	DPSDK_LONG lRealLen,
	DPSDK_VOID* pReserved,
	DPSDK_VOID* pUserData);

/**
* @brief	IVS Translate Callback Funciton
* @param	[IN] strSrc		Source String Data
* @param	[IN] nSrsLen	Source String Length
* @param	[OUT] strDst	Real Length
* @param	[OUT] nDstLen	Reserved Param
* @param	[IN] pUserData	User Data
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_IVSTRANSLATE_CALLBACK)(DPSDK_UCHAR* pSrc,
	DPSDK_INT32 uiSrsLen,
	DPSDK_UCHAR* pDst,
	DPSDK_INT32* uiDstLen,
	DPSDK_VOID* pUserData);

/**
* @brief	Data Callback Function after Decoding
* @param [OUT] struDecData	decode info
* @param [OUT] struFrameInfo	frame info
* @param [OUT] pUserData	User Data
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_DEC_CALLBACK)(DPSDK_DEC_DATA struDecData,
	DPSDK_FRAME_INFO struFrameInfo,
	DPSDK_LPVOID pUserData);

/**
* @brief	Fisheye param Callback Function
* @param [OUT] iState
* @param [OUT] iParam1
* @param [OUT] iParam2
* @param [OUT] bParam
* @param [OUT] pUserData	User Data
* @return
*/
typedef DPSDK_VOID(DPSDK_CALL* DPSDK_FISHEYE_PARAM_CALLBACK)(DPSDK_INT32 iState,
	DPSDK_INT32 iParam1,
	DPSDK_INT32 iParam2,
	DPSDK_BOOL bParam,
	DPSDK_LPVOID pUserData);

/**
* @brief	Picture Data Callback Function
* @param	[IN] iSession		 Returned Session of Corresponding Request
* @param	[IN] pData			 Picture Stream Data
* @param	[IN] iDataLen		 Data Length
* @param	[IN] pUserParam		 User Parameter
* @param	[IN] iPicEventType	 Picture Event Type
* @return	Returned value is 0 in case of success
*/
typedef DPSDK_INT32(DPSDK_CALL *DPSDK_PICDATA_CALLBACK)(DPSDK_INT32 iSession, DPSDK_CHAR* pData, DPSDK_INT32 iDataLen, DPSDK_LPVOID pUserParam, DPSDK_INT32 iPicEventType);

// Resource Roles
typedef struct
{
	DPSDK_INT32 iResourceType;					// ResourceType: 1=Person Group, 2=Vehicle Group, 3=Access Group, 4=Face Comparison Group, 5=Vehicle Arming Group, 6=Lift Group, 7=Area
	DPSDK_CHAR szResourceId[DPSDK_ID_LEN];		//Resource Id
	DPSDK_BOOL	bAuthority;
}DPSDK_RESOURCE_ROLE_INFO_PARA;

typedef struct
{
	DPSDK_INT32 iReason;					// 下线原因：1=用户有效时段已过，2=用户登陆权限变更，3=角色业务功能变更，4=角色资源操作变更，5=用户角色变更
}DPSDK_USER_FORCEOFFLINE_INFO;

typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_USER_ID_LEN]; // Role ID
}DPSDK_ROLEID;

typedef struct
{
	DPSDK_INT32 iRoleNum;
	DPSDK_ROLEID* pRoleIdList; // Role id list
}DPSDK_ROLE_ID_LIST;

typedef struct
{
	DPSDK_CHAR szRoleCode[DPSDK_PERSON_ID_LEN];   //Role Id
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];		// Role Name
	DPSDK_BOOL bIsEdit;							// 0=No, 1=Yes
}DPSDK_RESROLE_DETAIL_INFO;

// Bayonet dispatched alarm
typedef struct
{
	DPSDK_CHAR			szChannelID[DPSDK_CHANNEL_ID_LEN];			// Alarm channel ID
	DPSDK_TIMET			lAlarmTime;									// Alarm time (unit: seconds))
	DPSDK_CHAR			szPlateNumber[DPSDK_PLATE_NUMBER_LEN];		// Number plate number
	DPSDK_INT32			iPlateColor;								// License plate color coding 99-Unidentified,0-Blue,1-Yellow,2-White,3-黑Color,100-Other colors
	DPSDK_INT32			iSurveyType;								// Control type encoding 1-Overspeed vehicles,2-Theft of vehicles,3-Traffic accident vehicle,4-suspicion Vehicles,5-Intercepting vehicles,6-Check and check,7-Observation and tracking,8-High risk vehicles,9-Allowlist,11-Special abnormal vehicle,12-Yellow label vehicle
	DPSDK_INT32			iCarColor;									// Vehicle color coding 0-White,1-Black,2-Red,3-Yellow,4-Silver gray，5-Blue,6-Green,7-Orange,8-Violet，9-Green,10-Pink,11-Brown,99-Unidentified,100-Other
	DPSDK_CHAR			szImgPath[DPSDK_URL_LEN];					// Snapshot the image download path
}DPSDK_CAR_SURVEY_ALARM;

// E-mail address
typedef struct
{
	DPSDK_CHAR				szEmailAddr[DPSDK_ALARM_EMAILRECEIVER_LEN];		// E-mail address
}DPSDK_EMAILADDRESS;

typedef struct
{
	DPSDK_CHAR				szFileName[DPSDK_RECORD_FILE_NAME_LEN];			// attachments name 
	DPSDK_INT32				iFileDataLen;									// attachments data size
	DPSDK_CHAR*				pFileData;										// attachments data, Base64 encode				
}DPSDK_EMAIL_ATTACHMENT;

typedef struct
{
	DPSDK_INT32				iReceiversCount;								// The count of receivers
	DPSDK_EMAILADDRESS*		pReceiversList;									// Receivers list 
	DPSDK_CHAR				szTitle[DPSDK_EMAIL_CONTENT_LEN];				// Email title
	DPSDK_CHAR				szContent[DPSDK_EMAIL_CONTENT_LEN];				// Email content
	DPSDK_INT32				iAttachmentsCount;								// The count of attachments
	DPSDK_EMAIL_ATTACHMENT* pAttachmentsList;								// Attachments List;
}DPSDK_SEND_INCLUDE_ATTACHMENT_EMAIL_PARAM;

//Alarm confirmation parameter
typedef struct
{
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];			// Alarm code
	DPSDK_CHAR				szHandleUser[DPSDK_ALARM_HANDLERUSER_LEN];		// Handling human username
	DPSDK_CHAR				szHandleMessage[DPSDK_ALARM_HANDLEMESSAGE_LEN];	// Handling opinions
	DPSDK_UINT32			uiEmailRevceiverNumber;							// Alarm processing mailbox number
	DPSDK_INT32				iHandleStatus;									// Processing state (Reference resources AlarmDealWith_e)
	DPSDK_CHAR              szAlarmComment[DPSDK_ALARM_ALARMCOMMENT_LEN];
	DPSDK_TIMET             tAlarmDate;										// Alarm date
	DPSDK_CHAR				szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_EMAILADDRESS		struEmailReceiverList[1];						// Alarm processing notification mailbox list
}DPSDK_CONFIRMALARM_PARAM;


//Alarm batch confirmation parameter
typedef struct
{
	DPSDK_CHAR				szAlarmDate[DPSDK_ALARM_HANDLERUSER_LEN];		// Handling human username
	DPSDK_CHAR				szDeviceCode[DPSDK_ALARM_HANDLERUSER_LEN];		// Handling opinions
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_HANDLERUSER_LEN];		// Handling opinions
	DPSDK_CHAR				szComment[DPSDK_ALARM_HANDLEMESSAGE_LEN];		// Handling comment
}DPSDK_BATCHPROCESS_PARAM;

//Alarm batch confirmation parameter
typedef struct
{
	DPSDK_CHAR					szHandleUser[DPSDK_ALARM_HANDLERUSER_LEN];		// Handling human username
	DPSDK_CHAR					szHandleMessage[DPSDK_ALARM_HANDLEMESSAGE_LEN];	// Handling opinions
	DPSDK_INT32					iHandleStatus;									// Processing state (Reference resources AlarmDealWith_e)
	DPSDK_INT32					iBatchProcessNum;
	DPSDK_BATCHPROCESS_PARAM	*struBatchParam;								// Alarm batch processing 
}DPSDK_BATCHCONFIRM_ALARM_PARAM;

// The list of channel id
typedef struct
{
	DPSDK_INT32 iChannelNum;										// The number of channel
	DPSDK_INT32 iMaxChannelNum;										// Max number of channel
	DPSDK_CHANNEL_ID* pChannelId;									// Channel id
}DPSDK_CHANNEL_ID_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];							// Channel id
	DPSDK_CHAR szName[DPSDK_CHANNEL_NAME_LEN];							// Channel name
	DPSDK_CHAR szFirstName[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_CHAR szLastName[DPSDK_CHANNEL_NAME_LEN];
}DPSDK_CHANNEL_INFO;

typedef struct
{
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];					// Channel no.
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
}DPSDK_CHANNEL_ID_AND_NAME;

typedef struct
{
	DPSDK_INT32 iChannelNum;										// The number of channel
	DPSDK_CHANNEL_ID_AND_NAME* pChannelList;									// Channel id
}DPSDK_CHANNEL_BASE_LIST;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];			// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];			// Device name
}DPSDK_DEVICE_INFO;

typedef struct
{
	DPSDK_INT32 iDeviceNum;										// The number of device
	DPSDK_DEVICE_INFO* pDeviceList;								// Device code
}DPSDK_DEVICE_INFO_LIST;

//Alarm total query parameters
typedef struct
{
	DPSDK_CHAR				szBeginTime[DPSDK_ALARM_TIME_LEN];				// Start time of alarm yyyymmddhhmmss
	DPSDK_CHAR				szEndTime[DPSDK_ALARM_TIME_LEN];				// The end time of the alarm yyyymmddhhmmss
	DPSDK_CHAR				szHandleBeginTime[DPSDK_ALARM_TIME_LEN];		// Alarm processing start time yyyymmddhhmmss
	DPSDK_CHAR				szHandleEndTime[DPSDK_ALARM_TIME_LEN];			// Alarm processing end time yyyymmddhhmmss
	DPSDK_DEVICE_ID*		pDeviceIdList;									// Device list
	DPSDK_INT32				iDeviceIdNum;									// Device quantity
	DPSDK_CHANNEL_ID*       pChannelIdList;
	DPSDK_INT32             iChannelIdNum;
	DPSDK_CHAR				szOrgId[DPSDK_ALARM_ORGID_LEN];					// Organization node ID
	DPSDK_CHAR				szAlarmId[DPSDK_ALARM_ALARMID_LEN];				// Alarm ID
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];			// Alarm code (specifying this condition to ignore other conditions)
	DPSDK_CHAR				szHandleUser[DPSDK_ALARM_HANDLERUSER_LEN];		// Alarm processing person
	DPSDK_INT32*			pAlarmType;										// Alarm type (Reference resources Alarm_type_e)
	DPSDK_UINT32			uiAlarmTypeNumber;								// Number of alarm types
	DPSDK_INT32*			pAlarmGrade;									// Alarm level (Reference resources AlarmLevel_e)
	DPSDK_UINT32			uiAlarmGradeNumber;								// The number of alarm levels
	DPSDK_INT32*			pAlarmStatus;									// Alarm state (Reference resources AlarmState_e)
	DPSDK_UINT32			uiAlarmStatusNumber;							// The number of alarm states
	DPSDK_INT32*			pHandleStatus;									// Alarm processing state (Reference resources AlarmDealWith_e)
	DPSDK_UINT32			uiHandleStatusNumber;							// The number of state of the alarm processing
}DPSDK_QUERYALARMCOUNT_PARAM;

// Shielded alarm parameter
typedef struct
{
	DPSDK_CHAR				szAlarmCodeSource[DPSDK_ALARM_ALARMSOURCE_LEN];	// Shielded alarm source (device alarm for device code, channel alarm as channel Code, system alarm for service code)
	DPSDK_INT32				iAlarmType;										// Shielding alarm type (Reference resources Alarm_type_e)
	DPSDK_INT32				iDisarmType;									// Disarm type, 1: Disable alarm 2: Block alarm
	DPSDK_INT32				iMode;											// Disarm mode, 1: Disarm for a while, 2: Disarm to a specific time
	DPSDK_INT32				iDuration;										// The length of the shielding time (unit: Second)
	DPSDK_INT32				iUnit;											// Time unit, 1: min, 2: hour, 3: day
	DPSDK_TIMET				tAbortTime;										// Disarm end time, unit(second)
	DPSDK_CHAR				szRemark[DPSDK_ORG_REMARK_LEN];					// Remark
}DPSDK_BLOCKALARM_PARAM;

typedef struct
{
	DPSDK_CHAR				szLocale[DPSDK_ID_LEN];
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];			// Alarm code
}DPSDK_CAR_ALARM_PARAM;

typedef struct
{
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];			// Alarm code
	DPSDK_CHAR				szAlarmTime[DPSDK_ALARM_TIME_LEN];				// Alarm time
	DPSDK_CHAR				szCarColor[DPSDK_COLOR_LEN];
	DPSDK_CHAR				szCarNum[DPSDK_ID_LEN];
	DPSDK_CHAR				szCarType[DPSDK_TYPE_LEN];
	DPSDK_CHAR				szCarImgUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szChannelId[DPSDK_ALARM_CHANNELID_LEN];
	DPSDK_CHAR				szChannelName[DPSDK_ALARM_CHANNELNAME_LEN];
	DPSDK_CHAR				szBlocklistType[DPSDK_TYPE_LEN];
	DPSDK_CHAR				szCarNumcolor[DPSDK_COLOR_LEN];
}DPSDK_CAR_BLOCKALARM_RESULT;

typedef struct
{
	DPSDK_CHAR				szCarColor[DPSDK_COLOR_LEN];
	DPSDK_CHAR				szCarNum[DPSDK_ID_LEN];
	DPSDK_CHAR				szCarBrand[DPSDK_TYPE_LEN];
	DPSDK_CHAR				szCarImgUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szCarNumImgUrl[DPSDK_URL_LEN_EX];
}DPSDK_VEHICLE_ARMING_INOF_WITH_DOUBLE_PIC_RESULT;

typedef struct
{
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];			// Alarm code
	DPSDK_CHAR				szAlarmTime[DPSDK_ALARM_TIME_LEN];				// Alarm time
	DPSDK_CHAR				szCarColor[DPSDK_COLOR_LEN];
	DPSDK_CHAR              szCarBrand[DPSDK_ID_LEN];
	DPSDK_CHAR				szCarImgUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szCarNumImgUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szCarNum[DPSDK_ID_LEN];
	DPSDK_CHAR				szChannelId[DPSDK_ALARM_CHANNELID_LEN];
	DPSDK_CHAR				szChannelName[DPSDK_ALARM_CHANNELNAME_LEN];
	DPSDK_CHAR				szParkingLotName[DPSDK_NAME_LEN];						// parkingLot Name
}DPSDK_ENTRANCE_BLOCK_INFO;

typedef struct
{
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];			// Alarm code
	DPSDK_CHAR				szAlarmTime[DPSDK_ALARM_TIME_LEN];				// Alarm time
	DPSDK_CHAR				szEnterTime[DPSDK_ALARM_TIME_LEN];				// enter time
	DPSDK_TIMET             tParkingTime;									// parking Time
	DPSDK_CHAR				szCarColor[DPSDK_COLOR_LEN];
	DPSDK_CHAR              szCarBrand[DPSDK_ID_LEN];
	DPSDK_CHAR				szCarImgUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szCarNumImgUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szCarNum[DPSDK_ID_LEN];
	DPSDK_CHAR				szChannelId[DPSDK_ALARM_CHANNELID_LEN];
	DPSDK_CHAR				szChannelName[DPSDK_ALARM_CHANNELNAME_LEN];
	DPSDK_CHAR				szParkingLotName[DPSDK_NAME_LEN];						// parkingLot Name
}DPSDK_ENTRANCE_OVERTIME_INFO;

typedef struct
{
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];			// Alarm code
	DPSDK_CHAR				szAlarmTime[DPSDK_ALARM_TIME_LEN];				// Alarm time
	DPSDK_CHAR				szCarColor[DPSDK_COLOR_LEN];
	DPSDK_CHAR				szCarNum[DPSDK_ID_LEN];
	DPSDK_CHAR				szCarType[DPSDK_TYPE_LEN];
	DPSDK_CHAR				szCarImgUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szChannelId[DPSDK_ALARM_CHANNELID_LEN];
	DPSDK_CHAR				szChannelName[DPSDK_ALARM_CHANNELNAME_LEN];
	DPSDK_CHAR				szPeccancyType[DPSDK_TYPE_LEN];
	DPSDK_CHAR				szCarWayCode[DPSDK_ID_LEN];
	DPSDK_CHAR              szCarSpeed[DPSDK_ID_LEN];
}DPSDK_CAR_PECCANCYALARM_RESULT;

typedef struct
{
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];			// Alarm code
	DPSDK_TIMET             tAlarmDate;										// Alarm date
	DPSDK_CHAR				szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
}DPSDK_FACE_ALARM_PARAM;

typedef struct
{
	int			iPurpose;												// Purpose of alarm type: 1=Public (alarm input), 2=Defense zone, required
	DPSDK_CHAR	szAlarmTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR	szAlarmTypeName[DPSDK_ALARM_ALARMTYPENAME_LEN];			// Alarm type name
}DPSDK_CUSTOM_ALARM_INFO;

typedef struct
{
	DPSDK_CHAR	szAlarmTypeId[DPSDK_ID_LEN];
}DPSDK_CUSTOM_ALARM_ID;

typedef struct
{
	DPSDK_INT32 iIdNum;
	DPSDK_CUSTOM_ALARM_ID*	pAlarmTypeIdList;
}DPSDK_CUSTOM_ALARMID_LIST;

typedef struct
{
	DPSDK_CHAR	szAlarmTypeName[DPSDK_ALARM_ALARMTYPENAME_LEN];			// Alarm type name
}DPSDK_CUSTOM_ALARM_NAME;

typedef struct
{
	DPSDK_INT32 iNameNum;
	DPSDK_CUSTOM_ALARM_NAME*	pAlarmTypeNameList;
}DPSDK_CUSTOM_ALARMNAME_LIST;

typedef struct
{
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];			// Alarm code
	DPSDK_CHAR				szAlarmTime[DPSDK_ALARM_TIME_LEN];				// Alarm time
	DPSDK_CHAR				szName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR				szRepositoryName[DPSDK_NAME_LEN];
	DPSDK_CHAR				szPersonId[DPSDK_USER_ID_LEN];
	DPSDK_CHAR				szPersonTypeName[DPSDK_NAME_LEN];
	DPSDK_INT32             iGender;                                        // 1:man, 2:girl
	DPSDK_CHAR				szBirthday[DPSDK_ID_LEN];
	DPSDK_CHAR				szNationality[DPSDK_NATIONALITRY_LEN];
	DPSDK_CHAR				szDetectionImageUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szRepositoryImageUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR              szSimilarity[DPSDK_ID_LEN];
	DPSDK_CHAR				szTelNum[DPSDK_PHONE_LEN];						// Phone Number
}DPSDK_FACE_ALARM_RESULT;

// Ask for handle alarm parameters
typedef struct
{
	DPSDK_CHAR szRecordID[DPSDK_ID_LEN];									// Record ID
}DPSDK_ASK_FOR_HANDLE_PARAM;

typedef struct
{
	DPSDK_INT32 iRecordType;												// 0=pend,1=processing,2=processed
	DPSDK_CHAR	szRecordID[DPSDK_ID_LEN];									// Record ID
	DPSDK_CHAR  szOrgCode[DPSDK_ORG_CODE_LEN];								// Organization code
	DPSDK_CHAR	szOrgName[DPSDK_ORG_NAME_LEN];								// Organization name
	DPSDK_CHAR	szDeviceID[DPSDK_DEVICE_ID_LEN];							// Device ID of PAAS 
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];						// Device code
	DPSDK_CHAR  szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];					// Device name
	DPSDK_CHAR	szChannelId[DPSDK_ALARM_CHANNELID_LEN];						// Channel ID of PAAS
	DPSDK_CHAR	szChannelCode[DPSDK_ALARM_CHANNELID_LEN];					// Channel code
	DPSDK_CHAR	szChannelName[DPSDK_CHANNEL_NAME_LEN];						// Channel name
	DPSDK_TIMET tAlarmTime;													// Alarm time
	DPSDK_INT32 iAlarmType;													// Alarm type
	DPSDK_INT32 iAlarmGrade;												// Alarm grade
	DPSDK_CHAR	szAlarmName[DPSDK_NAME_LEN];								// Alarm name
	DPSDK_INT32 iAlarmBusType;												// Business type
	DPSDK_CHAR  szAlarmBusName[DPSDK_NAME_LEN];								// Business name
	DPSDK_INT32 iAlarmTemplateId;											// Alarm template ID
	DPSDK_INT32 iAlarmTimes;												// Alarm times
}DPSDK_ALARM_INFO;

typedef struct
{
	DPSDK_UINT32					uiTotal;								// Total number of pend alarm information
	DPSDK_ALARM_INFO*				pPendAlarmList;							// Pend alarm information
}DPSDK_PEND_ALARM_LIST;

typedef struct
{
	DPSDK_UINT32					uiTotal;								// Total number of processed alarm information
	DPSDK_ALARM_INFO*				pProcessedAlarmList;					// Processed alarm information
}DPSDK_PROCESSED_ALARM_LIST;

typedef struct
{
	DPSDK_BOOL  bOther;														// false=disable edit
	DPSDK_CHAR	szContent[DPSDK_ALARM_ALARMCOMMENT_LEN];					// Alarm content
	DPSDK_CHAR	szTip[DPSDK_ALARM_ALARMCOMMENT_LEN];						// Alarm tip
}DPSDK_ALARM_TEMPLATE_DATA_DETAIL;

typedef struct
{
	DPSDK_CHAR	szCategoryName[DPSDK_NAME_LEN];								// Template type name
	DPSDK_BOOL  bRadio;														// true=single select
	DPSDK_INT32 iDetailsNum;												// Detail information number
	DPSDK_ALARM_TEMPLATE_DATA_DETAIL* pStruDetails;							// Detail information list
}DPSDK_ALARM_TEMPLATE_DATA;

typedef struct
{
	DPSDK_CHAR	szAlarmTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR	szAlarmTypeName[DPSDK_NAME_LEN];
	DPSDK_INT32 iOther;														// 0:no, 1:yes
}DPSDK_CHANNEL_FACEALARM_TYPE_INFO;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_CHANNEL_FACEALARM_TYPE_INFO* pAlarmTypeInfo;
}DPSDK_CHANNEL_FACEALARM_TYPE_LIST;

typedef struct
{
	DPSDK_INT32 iID;														// Template ID
	DPSDK_CHAR	szTemplateName[DPSDK_NAME_LEN];								// Template name
	DPSDK_BOOL  bAlarmInRelate;												// true=relate to alarm in channel						
	DPSDK_INT32 iDataNum;
	DPSDK_ALARM_TEMPLATE_DATA* pStruData;
}DPSDK_ALARM_TEMPLATE_INFO;

typedef struct
{
	DPSDK_UINT32					uiTotal;								// Total number of processed alarm information
	DPSDK_ALARM_TEMPLATE_INFO*		pAlarmTemplateList;						// Alarm template information
}DPSDK_ALARM_TEMPLATE_LIST;

typedef struct
{
	DPSDK_INT32 iTemplateID;												// Template ID
}DPSDK_GET_TEMPLATE_PARAM;


typedef struct
{
	DPSDK_CHAR	szRecordID[DPSDK_ID_LEN];									// Record ID
	DPSDK_CHAR	szHandleContent[DPSDK_ALARM_ALARMCOMMENT_LEN];				// Handle content
}DPSDK_ALARM_ONFILE_PARAM;

typedef struct
{
	DPSDK_INT32	iSearchType;												// Search type,1=channel,2=organization,3=device
	DPSDK_CHAR	szCode[DPSDK_ALARM_CHANNELID_LEN];							// Channel,organization or device code
	DPSDK_TIMET tStartTime;													// Start time
	DPSDK_TIMET tEndTime;													// End time
	DPSDK_INT32 iAlarmType;													// Alarm type
	DPSDK_CHAR szKey[DPSDK_KEY_WORD_LEN];									// Keyword
}DPSDK_GET_HANDLE_ALARM_PARAM;

typedef struct
{
	DPSDK_ALARM_INFO struAlarmInfo;
	DPSDK_CHAR szHandleUser[DPSDK_ALARM_HANDLERUSER_LEN];					// Alarm processing person
	DPSDK_TIMET tHandleTime;												// Alarm time
	DPSDK_CHAR szHandleMessage[DPSDK_ALARM_HANDLEMESSAGE_LEN];				// Handling opinions
}DPSDK_HANDLE_ALARM_INFO;

typedef struct
{
	DPSDK_INT32 iHandleAlarmNum;											// Handle alarm number
	DPSDK_HANDLE_ALARM_INFO struHandleAlarmList[1];							// Handle alarm list
}DPSDK_HANDLE_ALARM_LIST;

typedef struct
{
	DPSDK_INT32	iSearchType;												// Search type,1=channel,2=organization,3=device
	DPSDK_CHAR	szCode[DPSDK_ALARM_CHANNELID_LEN];							// Channel,organization or device code
	DPSDK_TIMET tStartTime;													// Start time
	DPSDK_TIMET tEndTime;													// End time
	DPSDK_INT32 iAlarmType;													// Alarm type
	DPSDK_CHAR szKey[DPSDK_KEY_WORD_LEN];									// Keyword
}DPSDK_EXPORT_HANDLE_ALARM_PARAM;

typedef struct
{
	DPSDK_INT32	iExportRange;
	DPSDK_CHAR  szExportType[DPSDK_TYPE_LEN];
	DPSDK_CHAR	szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_INT32 iCustomColumnsNum;
	DPSDK_INT32* pCustomColumns;
	DPSDK_INT32  iSelectIdsNum;
	DPSDK_BASE_ID_INFO* pSelectIdsList;
	DPSDK_INT32	        iDisplayTimezoneOffset;
	DPSDK_INT32         iDeviceNum;
	DPSDK_CHANNEL_ID*	pDeviceCodes;
	DPSDK_INT32         iChannelNum;
	DPSDK_CHANNEL_ID*	pChannelIds;
	DPSDK_INT32         iAlarmStatusNum;
	DPSDK_INT32* pAlarmStatus;
	DPSDK_INT32  iAlarmTypesNum;
	DPSDK_BASE_ID_NAME_INFO*  pAlarmTypesList;
	DPSDK_TIMET  tStartAlarmTime;
	DPSDK_TIMET  tEndAlarmTime;
	DPSDK_INT32  iAlarmGradeNum;
	DPSDK_INT32* pAlarmGrade;
	DPSDK_CHAR	 szHandleUser[DPSDK_ALARM_HANDLERUSER_LEN];
	DPSDK_TIMET  tStartHandleTime;
	DPSDK_TIMET  tEndHandleTime;
	DPSDK_INT32  iHandleStatusNum;
	DPSDK_INT32* pHandleStatus;
	DPSDK_INT32  iOrderType;
	DPSDK_INT32  iOrderDirection;
	DPSDK_CHAR   szSiteName[DPSDK_NAME_LEN];
	DPSDK_CHAR   szCredence[DPSDK_TOKEN_LEN];
}DPSDK_EXPORT_ALARM_RECORDS_PARAM;

typedef struct
{
	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR  szSession[DPSDK_SESSION_LEN];
}DPSDK_EXPORT_ALARM_RECORDS_RESULT;

typedef struct
{
	DPSDK_CHAR		    szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];
	DPSDK_INT32         iDeviceNum;
	DPSDK_CHANNEL_ID*	pDeviceCodes;
	DPSDK_INT32         iChannelNum;
	DPSDK_CHANNEL_ID*	pChannelIds;
	DPSDK_INT32         iAlarmStatusNum;
	DPSDK_INT32*        pAlarmStatus;
	DPSDK_INT32         iAlarmTypesNum;
	DPSDK_BASE_ID_NAME_INFO*  pAlarmTypesList;
	DPSDK_TIMET         tStartAlarmTime;
	DPSDK_TIMET         tEndAlarmTime;
	DPSDK_INT32         iAlarmGradeNum;
	DPSDK_INT32*        pAlarmGrade;
	DPSDK_CHAR	        szHandleUser[DPSDK_ALARM_HANDLERUSER_LEN];
	DPSDK_TIMET         tStartHandleTime;
	DPSDK_TIMET         tEndHandleTime;
	DPSDK_INT32         iHandleStatusNum;
	DPSDK_INT32*        pHandleStatus;
	DPSDK_CHAR	        szHandleMessage[DPSDK_ALARM_HANDLERUSER_LEN];
	DPSDK_TIMET	        tSplitTime;
	DPSDK_CHAR	        szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32	        iCurrentPage;
	DPSDK_INT32		    iPageSize;
	DPSDK_INT32		    iPage;
	DPSDK_INT32         iOrderType;
	DPSDK_INT32         iOrderDirection;
	DPSDK_CHAR			szSequence[DPSDK_SEQUENCE_LEN];					// interface sequence
}DPSDK_GET_PAGE_ALARM_RECORDS_PARAM;

typedef struct
{
	DPSDK_INT32		    iDays;											// Last N days, default 7, range: 1-7, optional
	DPSDK_INT32         iTop;											// Latest N entries, default 1000, range: 1-1000, optional
}DPSDK_GET_HISTORY_ALARM_RECORDS_PARAM;


// Get binding resource parameters
typedef struct
{
	DPSDK_CHAR	szKeyCode[DPSDK_ID_LEN];									// Key code of binding resource
}DPSDK_GET_RESOURCE_BINDING_PARAM;

typedef struct
{
	DPSDK_INT32 iCustomType;												// Custom type
	DPSDK_CHAR szID[DPSDK_ID_LEN];											// Resource ID
	DPSDK_CHAR szName[DPSDK_NAME_LEN];										// Resource name
}DPSDK_RESOURCE_CODE;

typedef struct
{
	DPSDK_INT32 iBindingValueType;											// Binding value type
	DPSDK_INT32 iResourceType;												// Resource type
	DPSDK_INT32 iResourceCodeNum;											// Resource code number
	DPSDK_RESOURCE_CODE* pResourceCodeList;									// Resource code list
}DPSDK_RESOURCE_INFO;

typedef struct
{
	DPSDK_CHAR szKeyCode[DPSDK_ID_LEN];										// Key code of binding resource
	DPSDK_CHAR szKeyName[DPSDK_NAME_LEN];									// Key name
	DPSDK_INT32 iKeyType;													// Key type
	DPSDK_INT32 iResourceNum;												// Resource number
	DPSDK_RESOURCE_INFO* pResourceList;										// Resource list
}DPSDK_RESOURCE_BINDING_INFO;

typedef struct
{
	DPSDK_CHAR              szMemo[DPSDK_MEMO_LEN_LONG];	// Alarm memo data
}DPSDK_ALARM_MEMO_INFO;

// Alarm information
typedef struct
{
	DPSDK_CHAR				szAlarmId[DPSDK_ALARM_ALARMID_LEN];							// Alarm ID
	DPSDK_CHAR				szDeviceId[DPSDK_ALARM_DEVICEID_LEN];						// Device ID
	DPSDK_CHAR				szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];					// Device name
	DPSDK_CHAR				szChannelId[DPSDK_ALARM_CHANNELID_LEN];						// Channel ID
	DPSDK_CHAR				szChannelName[DPSDK_ALARM_CHANNELNAME_LEN];					// Channel name
	DPSDK_INT32				iAlarmGrade;												// Alarm level(Reference resources AlarmLevel_e)
	DPSDK_INT32				iAlarmType;													// Alarm type(Reference resources Alarm_type_e)
	DPSDK_INT32				iAlarmStatus;												// Alarm state(Reference resources AlarmState_e)
	DPSDK_CHAR				szHandleUser[DPSDK_ALARM_HANDLERUSER_LEN];					// Alarm processing person
	DPSDK_CHAR				szHandleTime[DPSDK_ALARM_TIME_LEN];							// Alarm processing time yyyymmddhhmmss
	DPSDK_INT32				iHandleStatus;												// Alarm processing state(Reference resources AlarmDealWith_e)
	DPSDK_CHAR				szHandleMessage[DPSDK_ALARM_HANDLEMESSAGE_LEN];				// Handling opinions
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];						// Alarm code
	DPSDK_CHAR				szAlarmTime[DPSDK_ALARM_TIME_LEN];							// Alarm time yyyymmddhhmmss
	DPSDK_CHAR				szAlarmPicture[DPSDK_ALARM_RECORD_PICTURE_URL_LEN];			// Alarm snapshot path
	DPSDK_UINT32			uiAlarmPictureSize;											// Alarm snapshot size
	DPSDK_UINT32			uiEmailReceiverListSize;									// The actual number of notification mailbox lists is not greater than that of the alarm DPSDK_EMAILRECEIVERLIST_SIZE
	DPSDK_EMAILADDRESS		struEmailReceiverList[DPSDK_ALARM_EMAILRECEIVERLIST_SIZE];	// Alarm processing notification mailbox list(Most return DPSDK_EMAILRECEIVERLIST_SIZEA mail address)
	DPSDK_ALARM_MEMO_INFO   struMemoList[DPSDK_ALARM_MEMO_NUM_MAX];                     // Alarm memo list
	DPSDK_CHAR				szAlarmExtData[DPSDK_ALARM_ALARMEXTDATA_LEN];				// Alarm Extend Data
	DPSDK_CHAR				szProtocolTemplateId[DPSDK_ID_LEN];							// Alarm plan template ID
	DPSDK_CHAR				szEventRemark[DPSDK_CONTENT_LEN_2048];						// Event Remark
	DPSDK_INT32             iMemoNum;                                                   // Alarm memo number
	DPSDK_TIMET             tAlarmTime;													// Alarm time
	DPSDK_TIMET             tHandleTime;												// Alarm processing
	DPSDK_TIMET             tQueryTime;
	DPSDK_DOUBLE			fLongitude;													// Longitude
	DPSDK_DOUBLE			fLatitude;													// Latitude	
	DPSDK_UINT32			uiRecordListCount;											// record count
	DPSDK_INT32				iPlanTemplateId;											// Template Id
	DPSDK_ALARMLINKRECORD_INFO*	pLinkRecordsList;										// Alarm record linkage information list(Most return DPSDK_ALARM_LINKRECORDINFOLIST_SIZE record linkage information)
}DPSDK_ALARM_DETAILINFO;

// Alarm record list
typedef struct
{
	DPSDK_INT32                 iTotalCount;
	DPSDK_INT32					iCurrentPageNo;
	DPSDK_TIMET					tQueryTime;				// The service time of this query,unit seconds
	DPSDK_UINT32				uiTotal;				// Total number of alarm records
	DPSDK_ALARM_DETAILINFO		struAlarmInfoList[1];	// Alarm record
}DPSDK_ALARM_DETAILINFO_LIST;

// Alarm processing record
typedef struct
{
	DPSDK_CHAR				szHandleUser[DPSDK_ALARM_HANDLERUSER_LEN];		// Alarm processing person
	DPSDK_CHAR				szHandleTime[DPSDK_ALARM_TIME_LEN];				// Alarm processing time yyyymmddhhmmss
	DPSDK_CHAR				szHandleMessage[DPSDK_ALARM_HANDLEMESSAGE_LEN];	// Warning handling opinion
	DPSDK_INT32				iHandleStatus;									// Alarm processing state(Reference resources AlarmDealWith_e)
}DPSDK_ALARMPROCESS_DETAILINFO;

// Alarm processing record list
typedef struct
{
	DPSDK_CHAR						szAlarmCode[DPSDK_ALARM_HANDLERUSER_LEN];		// Alarm code
	DPSDK_UINT32					uiTotal;						// Total number of alarm processing information
	DPSDK_ALARMPROCESS_DETAILINFO*	pAlarmProcessInfoList;		// Alarm processing information
}DPSDK_ALARMPROCESS_DETAILINFO_LIST;

// Alarm linkage video information
typedef struct
{
	DPSDK_CHAR			szLinkVedioId[DPSDK_ALARM_CHANNELID_LEN];		// Linkage video channel ID
	DPSDK_CHAR			szLinkVedioName[DPSDK_ALARM_CHANNELNAME_LEN];	// Linkage video channel Name
	DPSDK_INT32			iStreamType;									// Code stream type
	DPSDK_INT32			iScreenId;										// Screen ID
}DPSDK_ALARMLINKVEDIO_INFO;

// Alarm event (notice)
typedef struct
{
	DPSDK_CHAR					szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];				// Alarm code
	DPSDK_CHAR					szAlarmNodeCode[DPSDK_ALARM_NODECODE_LEN];			// Alarm source code
	DPSDK_CHAR					szAlarmTime[DPSDK_ALARM_TIME_LEN];					// Alarm time yyyymmddhhmmss
	DPSDK_CHAR					szAlarmSourceName[DPSDK_NAME_LEN_EX];				// Alarm Source Name
	DPSDK_CHAR					szAlarmDeviceName[DPSDK_NAME_LEN_EX];				// Alarm Device Name
	DPSDK_INT32					iAlarmGrade;										// Alarm level (Reference resources AlarmLevel_e)
	DPSDK_INT32					iAlarmStatus;										// Alarm state (Reference resources AlarmState_e)
	DPSDK_INT32					iAlarmObjType;										// Alarm object type (Reference resources AlarmObject_e)
	DPSDK_INT32					iAlarmType;											// Alarm type (Reference resources Alarm_type_e)
	DPSDK_INT32					iAlarmCategory;										// Type of alarm (Reference resources AlarmCategory_e)
	DPSDK_CHAR					szAlarmMessage[DPSDK_ALARM_ALARMMESSAGE_LEN];		// Alarm extension information (for example,GPSThe extended information of the alarm includes the latitude and longitude, the heightEtc
	DPSDK_UINT32				uiAlarmLinkVedioListSize;							// Alarm video linkage information list number(Not greater than DPSDK_ALARM_LINKVEDIOINFOLIST_SIZE)
	DPSDK_ALARMLINKVEDIO_INFO	struAlarmLinkVedioList[DPSDK_ALARM_LINKVEDIOINFOLIST_SIZE];	// Alarm video linkage information list(Most return DPSDK_ALARM_LINKVEDIOINFOLIST_SIZE Video linkage information)
	DPSDK_UINT32				uiAlarmLinkRecordListSize;							// Alarm record linkage information list number(Not greater than DPSDK_ALARM_LINKRECORDINFOLIST_SIZE)
	DPSDK_ALARMLINKRECORD_INFO	struAlarmLinkRecordList[DPSDK_ALARM_LINKVEDIOINFOLIST_SIZE];// Alarm record linkage information list(Most return DPSDK_ALARM_LINKRECORDINFOLIST_SIZE record linkage information)
	DPSDK_CHAR					szAlarmPicture[DPSDK_ALARM_PICTURE_URL_LEN];		// Alarm smart snapshot path
	DPSDK_UINT32				uiAlarmPictureSize;									// Alarm smart snapshot size
	DPSDK_INT32					iScreenNum;											// The number of Screen
	DPSDK_ALARM_MEMO_INFO       struMemoList[DPSDK_ALARM_MEMO_NUM_MAX];             // Alarm memo list
	DPSDK_CHAR					szAlarmExtData[DPSDK_ALARM_ALARMEXTDATA_LEN];		// Alarm Extend Data
	DPSDK_CHAR					szEventRemark[DPSDK_CONTENT_LEN_2048];				// Event Remark
	DPSDK_INT32                 iMemoNum;                                           // Alarm memo number
	DPSDK_INT64					lRuleThreshold;										// Rule threshold
	DPSDK_INT64					lStayNumber;										// Stay number
	DPSDK_TIMET					tAlarmTime;											// Alarm time

	DPSDK_CHAR					szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Device code
	DPSDK_INT32					iChannelSeq;										// Channel number
	DPSDK_INT32					iUnitSeq;											// Unit sequence
	DPSDK_INT32					iUnitType;											// Unit type
	DPSDK_USER_ID_LIST			struUserIds;										// User ID list
	DPSDK_FLOAT					fLongitude;											// Longitude
	DPSDK_FLOAT					fLatitude;											// Latitude
	DPSDK_FLOAT					fHeight;											// Height
	DPSDK_FLOAT					fAngle;												// Angle
	DPSDK_FLOAT					fSpeed;												// Speed
	DPSDK_CHAR					szProtocolTemplateId[DPSDK_ID_LEN];					// Alarm plan template ID
	DPSDK_INT32					iMapNumber;
	DPSDK_MAP_INFO				szMapInfoList[DPSDK_ALARM_MAP_MAX_SIZE];			// Alarm plan maps
	DPSDK_INT32					iLinkedOutput;										// The number of alarm link output channels
	DPSDK_BOOL					bLinkAudioLight;									// Wether alarm link audio light
	DPSDK_BOOL					bLinkAudio;											// Wether alarm link ip speaker audio
	DPSDK_BOOL					bLinkedVoicePrompt;									// Wether alarm link voice prompt
	DPSDK_CHAR					szVoicePromptContent[DPSDK_CONTENT_LEN];			// Voice Prompt Content
	DPSDK_BOOL					bShowLinkInfo;										// Wether show alarm link info
}DPSDK_ALARMEVENT_NOTIFY;

// Alarm information (notice
typedef struct
{
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];				// Alarm code
	DPSDK_CHAR				szAlarmTime[DPSDK_ALARM_TIME_LEN];					// Alarm time yyyymmddhhmmss
	DPSDK_CHAR				szAlarmPicture[DPSDK_ALARM_HANDLE_PICTURE_URL_LEN];		// Alarm snapshot path
	DPSDK_UINT32			uiAlarmPictureSize;									// Alarm snapshot size
}DPSDK_ALARM_DETAILINFO_NOTIFY;

// Zone Snapshot Notify
typedef struct
{
	DPSDK_CHAR				szAlarmPicture[DPSDK_ALARM_PICTURE_URL_LEN];		// Alarm snapshot path
	DPSDK_CHAR				szSession[DPSDK_ALARM_ORGID_LEN];					// Session
	DPSDK_CHAR				szErrorCode[DPSDK_ALARM_ORGID_LEN];					// error code
}DPSDK_ALARMHOST_ZONE_SNAPSHOT_NOTIFY;

// Alarm confirmation (notice)
typedef struct
{
	DPSDK_INT32				iFileType;									//0=Unknown，1=Video，2=Audio，3=Picture
	DPSDK_CHAR				szAlarmPicture[DPSDK_ALARM_PICTURE_URL_LEN];		// Alarm snapshot path
	DPSDK_UINT32			uiAlarmPictureSize;									// Alarm snapshot size
	DPSDK_CHAR				szSSId[DPSDK_ID_LEN];
	DPSDK_CHAR				szChannelID[DPSDK_ID_LEN];
	DPSDK_INT32				iFileStatus;								//File Status 1:unrecord 1:hasrecord
	DPSDK_INT32				iFileTimeLength;
	DPSDK_UINT64			iFileLength;
	DPSDK_TIMET				tRecordTime;
}DPSDK_ALARMHOST_FILE_INFO;

// Alarm information
typedef struct
{
	DPSDK_CHAR						szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];				// Alarm code
	DPSDK_CHAR						szUploadSeq[DPSDK_ALARM_TIME_LEN];					// Alarm seq
	DPSDK_UINT32					iFileCount;
	DPSDK_ALARMHOST_FILE_INFO*		pFileDataList;
}DPSDK_ALARMHOST_FILE_INFO_NOTIFY;

// Alarm confirmation (notice)
typedef struct
{
	DPSDK_CHAR				szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];						// Alarm code
	DPSDK_INT32				iHandleStatus;												// Processing state
	DPSDK_CHAR				szHandleMessage[DPSDK_ALARM_HANDLEMESSAGE_LEN];				// Handling opinions
	DPSDK_CHAR				szHandleUser[DPSDK_ALARM_HANDLERUSER_LEN];					// Handling human user name
	DPSDK_UINT32			uiEmailReceiverListSize;									// The actual number of notification mailbox lists is not greater than that of the alarm. DPSDK_EMAILRECEIVERLIST_SIZE）
	DPSDK_EMAILADDRESS		struEmailReceiverList[DPSDK_ALARM_EMAILRECEIVERLIST_SIZE];	// Alarm processing notification mailbox list(Most return PSDK_EMAILRECEIVERLIST_SIZEA mail address)
	DPSDK_INT32				iAlarmGrade;												// Alarm level (Reference resources AlarmLevel_e)
	DPSDK_CHAR				szAlarmPicture[DPSDK_ALARM_HANDLE_PICTURE_URL_LEN];			// Alarm smart snapshot path
	DPSDK_UINT32			uiAlarmPictureSize;											// Alarm smart snapshot size
	DPSDK_INT32				iAlarmStatus;												// Alarm state (Reference resources AlarmState_e)
	DPSDK_INT32				iAlarmType;													// Alarm type (Reference resources Alarm_type_e)
	DPSDK_CHAR				szDeviceId[DPSDK_ALARM_DEVICEID_LEN];						// Device ID
	DPSDK_INT32				iChannelSeq;												// Channel number
	DPSDK_INT32				iUnitType;													// Unit type
	DPSDK_INT32				iAlarmObjType;												// Alarm object type (Reference resources AlarmObject_e)
	DPSDK_CHAR				szAlarmNodeCode[DPSDK_ALARM_NODECODE_LEN];					// Alarm source code	
	DPSDK_ALARM_MEMO_INFO   struMemoList[DPSDK_ALARM_MEMO_NUM_MAX];						// Alarm memo list
	DPSDK_INT32             iMemoNum;													// Alarm memo number
	DPSDK_CHAR              szAlarmComment[DPSDK_ALARM_ALARMCOMMENT_LEN];
	DPSDK_CHAR              szAlarmSourceName[DPSDK_NAME_LEN];
	DPSDK_TIMET				tAlarmTime;													// Alarm time
	DPSDK_CHAR				szAlarmExtData[DPSDK_ALARM_ALARMEXTDATA_LEN];				// Alarm Extend Data
	DPSDK_INT32				iLinkedVoicePrompt;
	DPSDK_CHAR				szVoicePrompt[DPSDK_CONTENT_LEN];							// Voice Prompt
}DPSDK_ALARMCONFIRM_NOTIFY;

typedef struct
{
	DPSDK_INT32						iNumber;											// Handle number
	DPSDK_ALARMCONFIRM_NOTIFY		*struAlarmConfriNotify;								// Handle alarm data
}DPSDK_ALARM_BATCHCONFIRM_NOTIFY;

// Alarm export results (notice)
typedef struct
{
	DPSDK_UINT32				uiSessionId;											// Session marking
	DPSDK_CHAR					szDownloadPath[DPSDK_ALARM_ALARMEXPORTDOWNLOADPATH_LEN];// Downloading path
}DPSDK_ALARMEXPORT_RESULT_NOTIFY;

typedef struct
{

	DPSDK_CHAR					szSessionId[DPSDK_SESSION_LEN];
	DPSDK_UINT32				uiProcessRatio;
	DPSDK_UINT32				uiStatus;
	DPSDK_UINT32				uiErrorCode;
	DPSDK_CHAR					szFileUrl[DPSDK_URL_LEN];
	DPSDK_UINT32				uiSuccessfulCount;
	DPSDK_UINT32				uiFailedCount;
}DPSDK_IMPORT_EQUIPMENTS;

typedef struct
{
	DPSDK_CHAR					szPlanID[DPSDK_CODE_LEN];
	DPSDK_CHAR					szPointID[DPSDK_CODE_LEN];
	DPSDK_CHAR					szChannelID[DPSDK_CODE_LEN];
	DPSDK_CHAR					szPresetPointCode[DPSDK_CODE_LEN];
}DPSDK_INSPECT_START_POINT;

typedef struct
{
	DPSDK_CHAR					szPlanID[DPSDK_CODE_LEN];
	DPSDK_CHAR					szPointID[DPSDK_CODE_LEN];
	DPSDK_INT32					iPointResult;
}DPSDK_INSPECT_END_POINT;

typedef struct
{
	DPSDK_CHAR		szSubSystemCode[DPSDK_SERVER_CODE_LEN];			// SubSystem Code
	DPSDK_CHAR		szSubSystemName[DPSDK_NAME_LEN];				// SubSystem name
	DPSDK_CHAR		szSubSystemIP[DPSDK_IP_LEN];					// SubSystem IP
	DPSDK_CHAR		szSubSystemVer[DPSDK_SOFTWARE_VERSION_LEN];		// SubSystem version
	DPSDK_BOOL		bWarning;										// result
}DPSDK_SUBSYSTEM_REGISTER_NOTIFY;

typedef struct
{
	DPSDK_CHAR					szPlanID[DPSDK_CODE_LEN];
	DPSDK_CHAR					szPlanName[DPSDK_NAME_LEN];
	DPSDK_CHAR					szPlanRecordID[DPSDK_NAME_LEN];
	DPSDK_CHAR					szEndTime[DPSDK_CODE_LEN];
}DPSDK_REMIND_AUDIT_PLAN_NOTIFY;

typedef struct
{
	DPSDK_CHAR					szPlanID[DPSDK_CODE_LEN];
	DPSDK_UINT32				uiRunningStatus;
	DPSDK_CHAR					szBeginTime[DPSDK_CODE_LEN];
	DPSDK_CHAR					szEndTime[DPSDK_CODE_LEN];
}DPSDK_INSPECT_RUNNING_STATUS;

typedef struct
{
	DPSDK_UINT32 uiSessionId;
	DPSDK_BOOL bIsSuccess;
	DPSDK_CHAR szDownloadPath[DPSDK_FILE_PATH_LEN]; // Downloading path
}DPSDK_ALERTREPORT_RESULT_NOTIFY;

typedef struct
{
	DPSDK_UINT32 uiSessionId;
	DPSDK_BOOL bIsSuccess;
	DPSDK_CHAR szDownloadPath[DPSDK_FILE_PATH_LEN]; // Downloading path
}DPSDK_EXPORTALARMCOUNT_NOTIFY;

typedef struct
{
	DPSDK_INT32 iId;
	DPSDK_CHAR szAlarmName[DPSDK_MEMO_LEN];
}DPSDK_ADD_ALARMUSERDEFINED_NOTIFY;

typedef struct
{
	DPSDK_INT32 iId;
}DPSDK_DEL_ALARMUSERDEFINED_NOTIFY;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code, if 0 query the root node.
	DPSDK_INT32 iChannelType;										// Channel type. Please refer to DPSDK_DEV_UNIT_TYPE. DPSDK_HAS_INT_FIELD_FALSE, it is not available.
	DPSDK_INT32 iAnaylseEnabled;									// Enable or not.1 represents enable; 0 represents ****. DPSDK_HAS_INT_FIELD_FALSE,it is not available.
	DPSDK_INT32 iState;												// 0. Offline; 1. online. DPSDK_HAS_INT_FIELD_FALSE,it is not available.
	DPSDK_FLOAT fMinMapX;											// Min. longitude; not available beyond [-180,180]
	DPSDK_FLOAT fMaxMapX;											// Max. longitude; not available beyond [-180,180]
	DPSDK_FLOAT fMinMapY;											// Min. dimensionality; not available beyond [-90,90]
	DPSDK_FLOAT fMaxMapY;											// Max. dimensionality; not available beyond [-90,90]
	DPSDK_CHAR szKeyword[DPSDK_CHANNEL_NAME_LEN];					// Keyword; fuzzy search of channel name
}DPSDK_QUERY_FACE_CHANNEL_PARAM;

typedef struct
{
	DPSDK_INT32 iType;												// 1=face alarm,2=face snap,3=GPS alarm
	DPSDK_INT32 iRange;												// 1=all,2=part
	DPSDK_INT32 iChannelCodeNum;									// Channel number
	DPSDK_CHANNEL_ID* pChannelCodeList;								// iType=1/2 and iRange=2 is effective
	DPSDK_INT32 iDeviceCodeNum;										// Device number
	DPSDK_DEVICE_ID* pDeviceCodeList;								// iType=3 and iRange=2 is effective
}DPSDK_CONFIG_FACE_EVENT_PARAM;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Device code
	DPSDK_INT32 iDeviceType;										// Device type
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];					// Channel code
	DPSDK_INT32 iChannelType;										// Channel type
	DPSDK_INT32 iDomainID;											// Domain ID
	DPSDK_DOUBLE fGpsX;												// Longitude
	DPSDK_DOUBLE fGpsY;												// Latitude
	DPSDK_INT32 iState;												// 0.Offling；1.Online
	DPSDK_INT32 iAnaylseEnabled;									// Face analysis status，0 Stop；1 Enable
	DPSDK_INT32 iAnaylseType;										// Face analysis type，0 Video stream；1 Picture stream
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
}DPSDK_FACE_CHANNEL_INFO;

typedef struct
{
	DPSDK_UINT32 uiTotal;											// The number of face channel
	DPSDK_FACE_CHANNEL_INFO struChannelList[1];						// The list of face channel
}DPSDK_FACE_CHANNEL_LIST;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];
}DPSDK_ORG_SIMPLE_INFO;

//Operator of logical Organization
typedef struct
{
	DPSDK_LOGICAL_ORG_OPERATOR_TYPE eOperatorType;                  // operator Type 1:insert 2:update 3:delete
	DPSDK_INT32 iOrgChangeNum;                                      // change org num
	DPSDK_LOGIC_ORG_INFO* pOrgInfoList;                             // change orgInfo;  (upadte or delete)
	DPSDK_LOGIC_ORG_INFO  pLogicalOrgInfo;                          // change logical orgInfo;(insert)
}DPSDK_LOGIC_ORG_OPERATOR;

//Operator of Logical Organization Channels
typedef struct
{
	DPSDK_LOGICAL_ORG_CHANNEL_OPERATOR_TYPE eOperatorType;          // operator Type 1:insert 2:move 3:delete
	DPSDK_LOGIC_ORG_INFO pOrgAddInfo;                               // change orgAddInfo;
	DPSDK_LOGIC_ORG_INFO pOrgDelInfo;                               // change orgDelInfo;
}DPSDK_LOGIC_ORG_CHANNEL_OPERATOR;

// Creat organization parameter
typedef struct
{
	DPSDK_CHAR	szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_CHAR	szParentCode[DPSDK_ORG_CODE_LEN];					// Organization parent node ID
	DPSDK_CHAR	szPlatformCode[DPSDK_ORG_CODE_LEN];					//GB ID
}DPSDK_ORG_CREATE_PARAM;

// Basic Organizational Data
typedef struct
{
	DPSDK_UINT32 uiTotal;											// The total number
	DPSDK_ORG_BASE_INFO struOrgInfo[1];								// The list of organization information
}DPSDK_ORG_LIST;

// Collection channel information
typedef struct
{
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT32 iCameraType;										// Camera type see DPSDK_CAMERA_TYPE
	DPSDK_INT32 szPlatformID[DPSDK_ID_LEN];							// Platform ID
	DPSDK_CHAR szDeviceID[DPSDK_DEVICE_ID_LEN];						// Device ID
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_INT32 iStatus;											// Channel status see DPSDK_DEV_STATUS
	DPSDK_INT32 iBitrate;											// The rule code rate of front configuration unit:kbps
	DPSDK_INT32 iIntelliState;										// Intelligent processing status
	DPSDK_CHAR szRegionID[DPSDK_ID_LEN];							// The id of VAL domain which channel belong to
	DPSDK_DOUBLE fLongitude;										// Longitude
	DPSDK_DOUBLE fLatitude;											// Latitude
}DPSDK_COLLECTION_CHANNEL_INFO;

// Collection channel information
typedef struct
{
	DPSDK_UINT32 uiTotal;											// The number of collection channel list
	DPSDK_COLLECTION_CHANNEL_INFO struChannelList;					// Collection channel list
}DPSDK_COLLECTION_CHANNEL_LIST;

// Add/update collection channel information
typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization ID
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_INT32 iCameraType;
	DPSDK_INT32 iChannelType;
	DPSDK_INT32 iChannelSubtype;
	DPSDK_CHAR szSiteIP[DPSDK_IP_LEN];								//empty is main site
	DPSDK_CHAR szSiteName[DPSDK_NAME_LEN];
}DPSDK_COLLECTION_INFO;

typedef struct
{
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_CHAR szSiteIP[DPSDK_IP_LEN];								//empty is main site
}DPSDK_BASECOLLECTION_INFO;

typedef struct
{
	DPSDK_CHAR szSrcOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szDstOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_BASECOLLECTION_INFO stuBaseCollectionInfo;
}DPSDK_MOVECOLLECTION_INFO;


typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_INT32 iNum;
	DPSDK_BASECOLLECTION_INFO *pBaseCollectionInfo;
}DPSDK_DELCOLLECTION_INFO;


typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];
	int		   failedReason;		//0表示成功，分享失败的原因：1=收藏夹超限，2=通道数量超限，3=收藏夹层级超过10
}DPSDK_SHARECOLLECTION_FAILDINFO;


typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
}DPSDK_UNREAD_COLLECTION_INFO;

typedef struct
{
	int iNum;
	DPSDK_UNREAD_COLLECTION_INFO* pUnReadInfo;
}DPSDK_UNREAD_COLLECTIONLIST_INFO;

// Add collection channel information
typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization ID
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
	DPSDK_INT32 iChannelSeq;										// Channel code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_CHAR szDeviceID[DPSDK_DEVICE_ID_LEN];						// Device D
	DPSDK_INT32 iUnitType;											// Unit type
	DPSDK_INT32 iChannelType;										// Channel type
	DPSDK_INT32 iCameraType;										// Camera type
	DPSDK_DOUBLE fGpsX;												// Longitude
	DPSDK_DOUBLE fGpsY;												// Latitude
	DPSDK_INT32 iMapID;												// Map
	DPSDK_INT32 iState;												// 0.Offline；1.Online
	DPSDK_INT32 iBitrate;											// The rule code rate of front-end configuration unit:kbps
	DPSDK_INT32 iIntelliState;										// Intelligent status
	DPSDK_BOOL bSubSite;
	DPSDK_CHAR szSiteIP[DPSDK_IP_LEN];
	DPSDK_CHAR szSiteName[DPSDK_NAME_LEN];
}DPSDK_COLLECTION_DETAIL_INFO;

// Add collection channel information
typedef struct
{
	DPSDK_INT32 iNum;												// The number of collection channel list
	DPSDK_COLLECTION_DETAIL_INFO struCollectList[1];				// Collection channel list
}DPSDK_COLLECTION_DETAIL_LIST;

// Collection channel information request parameters
typedef struct
{
	DPSDK_CHAR szKeyword[DPSDK_CHANNEL_NAME_LEN];					// Keywords channel name
	DPSDK_INT32 iNodeCodeNum;										// The number of code
	DPSDK_INT32 iNodeType;											// 1.Channel；2.Collection organization
	DPSDK_ID struNodeCodeList[1];									// The list of code
}DPSDK_COLLECTION_DETAIL_PARAM;

// Collectors' information
typedef struct DPSDK_COLLECTION_ORG_INFO_T
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization ID
	DPSDK_CHAR szParentCode[DPSDK_ORG_CODE_LEN];					// Parent organization ID
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_BOOL bShared;												// by shared
	DPSDK_BOOL bReaded;												// by readed

	DPSDK_INT32 iCollectionlNum;											// fav channel number
	DPSDK_COLLECTION_INFO* pCollectionInfo;
}DPSDK_COLLECTION_ORG_INFO;

typedef struct
{
	int iNum;
	DPSDK_COLLECTION_ORG_INFO* pOrgInfo;
}DPSDK_COLLECTION_ORG_INFO_LSIT;

typedef struct
{
	DPSDK_INT32		iUnitType;
	DPSDK_CHAR		szDeviceCode[DPSDK_DEVICE_ID_LEN];	// Device code
	DPSDK_CHAR		szOrgCode[DPSDK_ORG_CODE_LEN];		// Organization ID
	DPSDK_CHAR		szOldOrgCode[DPSDK_ORG_CODE_LEN];	// Organization ID
	DPSDK_CHAR		szChannelID[DPSDK_CHANNEL_ID_LEN];	// Channel ID
}DPSDK_COLLECTION_CHANNEL_DATE;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization ID
}DPSDK_COLLECTION_ORG_CODE;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization ID
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];					// Channel ID
}DPSDK_COLLECTION_CHANNEL_CODE;

typedef struct
{
	DPSDK_CHAR szSourceOrgCode[DPSDK_ORG_CODE_LEN];						// Organization ID
	DPSDK_CHAR szTargetOrgCode[DPSDK_ORG_CODE_LEN];						// Organization ID
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization ID
}DPSDK_MOVECOLLECTION_ORG_INFO;


typedef struct
{
	DPSDK_INT32 iOrgNum;											// The number of collection org
	DPSDK_COLLECTION_ORG_CODE* pCollectionOrgList;				    // Collection org list
	DPSDK_INT32 iChannelNum;										// The number of collection channel list
	DPSDK_COLLECTION_CHANNEL_CODE* pCollectionChannelList;			// Collection channel list
}DPSDK_COLLECTION_DATE_LIST;

typedef struct
{
	DPSDK_COLLECTION_ORG_INFO stuCollectOrgInfo;
}DPSDK_COLLECTION_UPDATE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization ID
	DPSDK_BOOL bShare;
	DPSDK_BOOL bRead;
}DPSDK_COLLECTION_ORG_STATUS;

typedef struct
{
	int iNum;
	DPSDK_COLLECTION_ORG_STATUS* pStatusInfo;
}DPSDK_COLLECTION_ORG_STATUS_NOTIFY;

typedef struct
{
	int iNum;
	DPSDK_COLLECTION_ORG_CODE* pOrgCode;
}DPSDK_COLLECTION_DELETE_NOTIFY;

typedef struct
{
	DPSDK_INT32				iWindowNo;											// Window No
	DPSDK_INT32				iResourceType;										// Resource type (0,1,2,3,4,5,6,7)
	DPSDK_CHAR				szResourceCode[DPSDK_VIEW_RESOURCE_CODE_LEN];		// Resource code (Channel/pos/map/url)
	DPSDK_CHAR				szResourceName[DPSDK_NAME_LEN_EX];					// Resource name 
	DPSDK_INT32				iStreamType;										// Stream type
	DPSDK_CHAR				szSiteIp[DPSDK_IP_LEN];								// Site ip (Multi-site)
	DPSDK_INT32				iAlarmWindow;										// Alarm window
}DPSDK_VIEW_WINDOW_DATA_INFO;

typedef struct
{
	DPSDK_INT32				iGriddingIndex;										// Grid index
	DPSDK_BOOL				bGriddingEnable;									// Grid enable
	DPSDK_INT32				iGriddingCombine;									// Grid combine
	DPSDK_INT32				iWindowFromX;										// Window from x
	DPSDK_INT32				iWindowToX;											// Window to x
	DPSDK_INT32				iWindowFromY;										// Window from y
	DPSDK_INT32				iWindowToY;											// Window to y
}DPSDK_VIEW_WINDOW_LAYOUT_INFO;

typedef struct
{
	DPSDK_CHAR								szViewCode[DPSDK_ORG_CODE_LEN];		// View Code
	DPSDK_CHAR								szName[DPSDK_ORG_NAME_LEN];			// Name	
	DPSDK_BOOL								bShared;							// Whether shared by others
	DPSDK_BOOL								bShareable;							// Whether can be shared
	DPSDK_BOOL								bReaded;							// Read or not
	DPSDK_INT32								iWindowTotal;						// Window total
	DPSDK_INT32								iGriddingRows;						// Grid row
	DPSDK_INT32								iGriddingCols;						// Grid col
	DPSDK_INT32								iWindowLayoutNum;					// Window layout num
	DPSDK_VIEW_WINDOW_LAYOUT_INFO*			pWindowLayout;						// Window layout
	DPSDK_INT32								iWindowDataNum;						// Window data num
	DPSDK_VIEW_WINDOW_DATA_INFO*			pWindowData;						// Window data
}DPSDK_VIEW_INFO;

typedef struct
{
	DPSDK_CHAR				szDirCode[DPSDK_ORG_CODE_LEN];						// View dir Code	
	DPSDK_BOOL				bRootDir;											// Whether root dir
	DPSDK_CHAR				szName[DPSDK_ORG_NAME_LEN];							// View dir name
	DPSDK_INT32				iViewNum;											// View num
	DPSDK_VIEW_INFO*		pViewList;											// View list
}DPSDK_VIEW_DIR_INFO;

typedef struct
{
	DPSDK_INT32				iType;												// View type (1:public, 2:private)
	DPSDK_INT32				iDirNum;											// View dir num
	DPSDK_VIEW_DIR_INFO*	pViewDirInfo;										// View dir info list
}DPSDK_VIEW_DIR_LIST;

typedef struct
{
	DPSDK_INT32					iViewDirNum;									//View dir num
	DPSDK_VIEW_DIR_LIST*		pViewDirList;									//View dir list
}DPSDK_VIEW_ORG_INFO;

typedef struct
{
	DPSDK_CHAR szRoleID[DPSDK_ID_LEN];				         // Role ID
}DPSDK_ROLE_ID;

typedef struct
{
	DPSDK_CHAR				szViewDirCode[DPSDK_ORG_CODE_LEN];					// Dir Code
	DPSDK_CHAR				szViewDirName[DPSDK_ORG_NAME_LEN];					// View dir name
	DPSDK_CHAR				szReMark[DPSDK_CONTENT_LEN_2048];					// ReMark
	DPSDK_INT32				iRoleNum;											// Role num
	DPSDK_ROLE_ID*			pRoleId;											// Role ID
}DPSDK_VIEW_PUBLIC_DIR_INFO;

typedef struct
{
	DPSDK_CHAR					szSharedViewCode[DPSDK_ORG_CODE_LEN];			// View Code
	DPSDK_CHAR					szUserId[DPSDK_USER_ID_LEN];					// user id
	DPSDK_CHAR					szReMark[DPSDK_CONTENT_LEN_2048];				// Note info
}DPSDK_VIEW_SHARE_INFO;

typedef struct
{

	DPSDK_CHAR					szSharedViewCode[DPSDK_ORG_CODE_LEN];			// View Code
	DPSDK_CHAR					szShareUserName[DPSDK_ORG_NAME_LEN];			// View name
	DPSDK_CHAR					szShareTime[DPSDK_TIME_LEN];					// Share time
	DPSDK_CHAR					szReMark[DPSDK_CONTENT_LEN_2048];				// Note info
}DPSDK_SHARE_VIEW;

typedef struct
{
	DPSDK_CHAR					szSharedViewCode[DPSDK_ORG_CODE_LEN];			// View Code
	DPSDK_CHAR					szViewName[DPSDK_ORG_NAME_LEN];					// View name
}DPSDK_VIEW_UNREAD_SHARE_RESULT;

typedef struct
{
	DPSDK_INT32							iViewNum;								// View num
	DPSDK_VIEW_UNREAD_SHARE_RESULT*		pResult;								// Unread share view
}DPSDK_VIEW_UNREAD_SHARE_INFO;

typedef struct
{
	DPSDK_CHAR				szViewDirName[DPSDK_ORG_NAME_LEN];					// View dir name
	DPSDK_CHAR				szViewDirCode[DPSDK_ORG_CODE_LEN];					// View dir Code
	DPSDK_INT32				iViewType;											// View dir type: 1 public, 2 private
	DPSDK_INT32				iRoleNum;											// Role num
	DPSDK_ROLE_ID*			pRoleId;											// Role ID
	DPSDK_CHAR				szReMark[DPSDK_CONTENT_LEN_2048];					// ReMark
}DPSDK_VIEW_ADD_DIR_PARAM;

typedef struct
{
	DPSDK_CHAR				szDirCode[DPSDK_ORG_CODE_LEN];						// View dir Code
	DPSDK_CHAR				szViewDirName[DPSDK_ORG_NAME_LEN];					// View dir name
	DPSDK_INT32				iRoleNum;											// Role num
	DPSDK_ROLE_ID*			pRoleId;											// Role Id
	DPSDK_CHAR				szReMark[DPSDK_CONTENT_LEN_2048];					// ReMark
}DPSDK_VIEW_UPDATE_DIR_PARAM;

typedef struct
{
	DPSDK_CHAR				szViewCode[DPSDK_ORG_CODE_LEN];						// Move view Code
	DPSDK_CHAR				szSourceViewDirCode[DPSDK_ORG_CODE_LEN];			// Source view dir Code
	DPSDK_CHAR				szTargetViewDirCode[DPSDK_ORG_CODE_LEN];			// Target view dir Code
}DPSDK_VIEW_MOVE_PARAM;

typedef struct
{
	DPSDK_CHAR				szCode[DPSDK_ORG_CODE_LEN];							// Delete code
}DPSDK_VIEW_DELETE_CODE;

typedef struct
{
	DPSDK_INT32				iNum;											// View/Dir id num
	DPSDK_VIEW_DELETE_CODE*	pCode;											// View/Dir Code
}DPSDK_VIEW_BATCH_DELETE_PARAM;

typedef struct
{
	DPSDK_CHAR							szViewCode[DPSDK_ORG_CODE_LEN];			// View Code
	DPSDK_CHAR							szViewName[DPSDK_ORG_NAME_LEN];			// View name
	DPSDK_INT32							iViewType;								// View type: 1 public, 2 private
	DPSDK_CHAR							szViewDirCode[DPSDK_ORG_CODE_LEN];		// View dir Code, null is root dir
	DPSDK_INT32							iCustomSplit;							// Whether split
	DPSDK_INT32							iWindowTotal;							// Window total
	DPSDK_INT32							iGriddingRows;							// Grid row
	DPSDK_INT32							iGriddingCols;							// Grid col
	DPSDK_INT32							iWindowLayoutNum;						// Window layout num
	DPSDK_VIEW_WINDOW_LAYOUT_INFO*		pWindowLayout;							// Window layout
	DPSDK_INT32							iWindowDataNum;							// Window data num
	DPSDK_VIEW_WINDOW_DATA_INFO*		pWindowData;							// Window data
}DPSDK_VIEW_ADD_PARAM;

typedef struct
{
	DPSDK_CHAR							szViewCode[DPSDK_ORG_CODE_LEN];			// View Code
	DPSDK_INT32							iCustomSplit;							// Whether split
	DPSDK_INT32							iWindowTotal;							// Window total
	DPSDK_INT32							iGriddingRows;							// Grid row
	DPSDK_INT32							iGriddingCols;							// Grid col
	DPSDK_INT32							iWindowLayoutNum;						// Window layout num
	DPSDK_VIEW_WINDOW_LAYOUT_INFO*		pWindowLayout;							// Window layout
	DPSDK_INT32							iWindowDataNum;							// Window data num
	DPSDK_VIEW_WINDOW_DATA_INFO*		pWindowData;							// Window data
}DPSDK_VIEW_UPDATE_PARAM;

typedef struct
{
	DPSDK_CHAR							szViewCode[DPSDK_ORG_CODE_LEN];			// View Code
	DPSDK_CHAR							szViewName[DPSDK_ORG_NAME_LEN];			// View name
}DPSDK_VIEW_RENAME_PARAM;

typedef struct
{
	DPSDK_CHAR				szViewType[DPSDK_TYPE_LEN];							// Query view type: 1 public, 2 private, null all
}DPSDK_VIEW_GET_TREE_PARAM;

typedef struct
{
	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];
}DPSDK_VIEW_THUMBNAILS_INFO;

typedef struct
{
	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];
}DPSDK_VIEW_ICON_INFO;

typedef struct
{
	DPSDK_CHAR								szDirCode[DPSDK_ORG_CODE_LEN];		// View dir Code
	DPSDK_INT32								iViewType;							// View Type
	DPSDK_CHAR								szViewCode[DPSDK_ORG_CODE_LEN];		// View Code
	DPSDK_CHAR								szViewName[DPSDK_ORG_NAME_LEN];		// View Name	
	DPSDK_BOOL								bViewShared;						// Whether shared by others
	DPSDK_BOOL								bViewShareable;						// Whether can be shared
	DPSDK_BOOL								bViewReaded;						// Read or not
	DPSDK_INT32								iWindowTotal;						// Window total
	DPSDK_INT32								iGriddingRows;						// Grid row
	DPSDK_INT32								iGriddingCols;						// Grid col
	DPSDK_INT32								iWindowLayoutNum;					// Window layout num
	DPSDK_VIEW_WINDOW_LAYOUT_INFO*			pWindowLayout;						// Window layout
	DPSDK_INT32								iWindowDataNum;						// Window data num
	DPSDK_VIEW_WINDOW_DATA_INFO*			pWindowData;						// Window data
}DPSDK_VIEW_NOTIFY;

typedef struct
{
	DPSDK_CHAR							szDirCode[DPSDK_ORG_CODE_LEN];				// View dir Code
	DPSDK_CHAR							szViewDirName[DPSDK_ORG_NAME_LEN];		// View dir name
	DPSDK_INT32							iViewDirType;
	DPSDK_INT32							iViewNum;								// View num
	DPSDK_VIEW_NOTIFY*					pViewList;								// View list
}DPSDK_VIEW_DIR_NOTIFY;

typedef struct
{
	DPSDK_CHAR							szDirCode[DPSDK_ORG_CODE_LEN];			// View dir Code
	DPSDK_INT32							iViewType;								// View type
	DPSDK_CHAR							szViewDirName[DPSDK_ORG_NAME_LEN];		// View dir name
}DPSDK_VIEW_DELETE_DIR_NOTIFY;

typedef struct
{
	DPSDK_CHAR							szDirCode[DPSDK_ORG_CODE_LEN];			// View dir Code
	DPSDK_CHAR							szViewCode[DPSDK_ORG_CODE_LEN];;		// View Code
	DPSDK_INT32							iViewType;								// View type
	DPSDK_CHAR							szViewName[DPSDK_ORG_NAME_LEN];			// View name
}DPSDK_VIEW_DELETE_NOTIFY;

typedef struct
{
	DPSDK_CHAR							szShareUserName[DPSDK_ORG_NAME_LEN];	// Share user name
	DPSDK_CHAR							szSharedViewCode[DPSDK_ORG_CODE_LEN];	// View Code
	DPSDK_CHAR							szSharedViewName[DPSDK_ORG_NAME_LEN];	// View name
	DPSDK_CHAR							szReMark[DPSDK_CONTENT_LEN_2048];		// Remark
	DPSDK_INT64							tShareTime;								// share time
	DPSDK_INT32							iViewType;								// View Type
	DPSDK_CHAR							szViewDirCode[DPSDK_ORG_NAME_LEN];		// View dir Code
	DPSDK_BOOL							bViewShared;							// Whether shared by others
	DPSDK_BOOL							bViewShareable;							// Whether can be shared
	DPSDK_BOOL							bViewReaded;							// Read or not
	DPSDK_INT32							iWindowTotal;							// Window total
	DPSDK_INT32							iGriddingRows;							// Grid row
	DPSDK_INT32							iGriddingCols;							// Grid col
	DPSDK_INT32							iWindowLayoutNum;						// Window layout num
	DPSDK_VIEW_WINDOW_LAYOUT_INFO*		pWindowLayout;							// Window layout
	DPSDK_INT32							iWindowDataNum;							// Window data num
	DPSDK_VIEW_WINDOW_DATA_INFO*		pWindowData;							// Window data

}DPSDK_VIEW_SHARE_NOTIFY;

typedef struct
{
	DPSDK_CHAR							szSharedViewCode[DPSDK_ORG_CODE_LEN];	// View Code
	DPSDK_CHAR							szSharedViewName[DPSDK_ORG_NAME_LEN];	// View name
	DPSDK_INT32							iViewType;								// View Type
	DPSDK_CHAR							szSharedDirCode[DPSDK_ORG_CODE_LEN];	// View dir Code
}DPSDK_VIEW_ACK_SHARE_NOTIFY;

typedef struct
{
	DPSDK_CHAR							szViewCode[DPSDK_ORG_CODE_LEN];			// View code
	DPSDK_CHAR							szSourceViewDirCode[DPSDK_ORG_CODE_LEN];// Source view dir code
	DPSDK_CHAR							szTargetViewDirCode[DPSDK_ORG_CODE_LEN];// Target view dir code
}DPSDK_VIEW_MOVE_NOTIFY;

typedef struct
{
	DPSDK_CHAR							szViewDirCode[DPSDK_ORG_CODE_LEN];		// View dir code
	DPSDK_CHAR							szViewCode[DPSDK_ORG_CODE_LEN];			// View code
	DPSDK_INT32							iViewType;								// View Type
	DPSDK_CHAR							szViewName[DPSDK_ORG_NAME_LEN];			// View name
}DPSDK_VIEW_RENAME_NOTIFY;

typedef struct
{
	DPSDK_CHAR							szViewDirCode[DPSDK_ORG_CODE_LEN];		// View dir code
	DPSDK_CHAR							szViewCode[DPSDK_ORG_CODE_LEN];			// View code
	DPSDK_INT32							iViewType;								// View Type
	DPSDK_CHAR							szViewIconUrl[DPSDK_URL_LEN];			// View icon url
}DPSDK_VIEW_ICON_NOTIFY;

typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_COLLECTION_ORG_INFO_LSIT stuOrgListInfo;
}DPSDK_COLLECTION_SHARE_NOTIFY;

typedef struct
{
	DPSDK_CHAR					szChannelCode[DPSDK_CHANNEL_ID_LEN];// Channel code
	DPSDK_INT32					iIndex;								// Label seq
}DPSDK_AR_TURN_PARAM;

typedef struct
{
	DPSDK_INT32					iModelType;							// Template type
}DPSDK_AR_DELETE_LABEL_TEM_PARAM;

typedef struct
{
	DPSDK_INT32					iX;
	DPSDK_INT32					iY;
	DPSDK_INT32					iWidth;
	DPSDK_INT32					iHeight;
}DPSDK_AR_TEMPLATE_LAYOUT;

typedef struct
{
	DPSDK_INT32					iKeyType;
	DPSDK_CHAR					szKeyName[DPSDK_NAME_LEN];
	DPSDK_AR_TEMPLATE_LAYOUT	struKeyNameLayout;
	DPSDK_CHAR					szKeyValue[DPSDK_CONTENT_LEN_2048];
	DPSDK_AR_TEMPLATE_LAYOUT	struKeyValueLayout;
}DPSDK_AR_TEMPLATE_KEY;

typedef struct
{
	DPSDK_INT32					iWidth;
	DPSDK_INT32					iHeight;
	DPSDK_INT32					iLayoutType;						// Template layout Type
	DPSDK_INT32					iKeyNum;
	DPSDK_AR_TEMPLATE_KEY*      pKeyList;
}DPSDK_AR_TEMPLATE_DATA;

typedef struct
{
	DPSDK_CHAR					szModelId[DPSDK_NAME_LEN];			//Template UUID
	DPSDK_CHAR					szModelType[DPSDK_SERVER_CODE_LEN];	//Template type
	DPSDK_CHAR					szModelName[DPSDK_NAME_LEN_EX];		// Template name
	DPSDK_AR_TEMPLATE_DATA		struModelData;						// Template data
}DPSDK_AR_LABEL_TEMPLATE_INFO;

typedef struct
{
	DPSDK_AR_LABEL_TEMPLATE_INFO struTemplateInfo;					// Template info
	DPSDK_INT32					 iUserDefine;						// 0:system，1:custom
}DPSDK_AR_ADD_LABEL_TEM_PARAM;

typedef struct
{
	DPSDK_AR_LABEL_TEMPLATE_INFO struTemplateInfo;					// Template info
	DPSDK_INT32					 iUserDefine;						// 0:system，1:custom
}DPSDK_AR_UPDATE_LABEL_TEM_PARAM;

typedef struct
{
	DPSDK_INT32					iModelType;							// Template type,iModelType = -1:all
}DPSDK_AR_GET_LABEL_TEM_PARAM;

typedef struct
{
	DPSDK_INT32						iTotalCount;
	DPSDK_AR_LABEL_TEMPLATE_INFO*	pTemplateInfoList;
}DPSDK_AR_LABEL_TEM_LIST;

typedef struct
{
	DPSDK_CHAR					szChannelCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32					nTitleIndex;
	//DPSDK_INT32*				pIndexList;
}DPSDK_AR_DELETE_LABEL_PARAM;

typedef struct
{
	DPSDK_CHAR					szChannelCode[DPSDK_CHANNEL_ID_LEN];
}DPSDK_AR_GET_LABEL_PARAM;

typedef struct
{
	DPSDK_INT32					nPageIndex;
	DPSDK_INT32					nPageSize;
}DPSDK_AR_GET_PLAN_PARAM;

typedef struct
{
	DPSDK_INT32					iIndex;
	DPSDK_CHAR					szTitleName[DPSDK_NAME_LEN];
	DPSDK_INT32					iTitleLevel;
	DPSDK_INT32					iPointX;
	DPSDK_INT32					iPointY;
	DPSDK_INT32					iShapType;							// 0=fold line,1=sector,point 1 is the center of circle,point 2 and point 3 is the end of two sides
	DPSDK_INT32					iPolygonNum;
	DPSDK_POINT*				pPolygonList;
	DPSDK_CHAR					szModelId[DPSDK_NAME_LEN];
	DPSDK_AR_TEMPLATE_DATA		struModelData;								//Template data
}DPSDK_AR_LABEL_BASE_INFO;

typedef struct
{
	DPSDK_CHAR					szModelType[DPSDK_SERVER_CODE_LEN];			//Template type
	DPSDK_AR_TEMPLATE_DATA		struModelData;								//Template data
	DPSDK_INT32					iLabelLevel;								//label level
	DPSDK_INT32					iTagIndex;									//label id
	DPSDK_CHAR					szTitleName[DPSDK_NAME_LEN];				//label name
	DPSDK_CHAR					szModelId[DPSDK_NAME_LEN];					//Template UU id
	DPSDK_CHAR					szChannelCode[DPSDK_ALARM_CHANNELID_LEN];	//Ar schnl Id 
}DPSDK_AR_LABEL_INFO;

typedef struct
{
	DPSDK_INT32						iTotalCount;
	DPSDK_AR_LABEL_INFO*			pLabelList;
}DPSDK_AR_LABEL_LIST;

typedef struct
{
	DPSDK_CHAR					szChannelCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_AR_LABEL_INFO			struLabelInfo;
}DPSDK_AR_SET_LABEL_PARAM;

// Alarm output control parameters
typedef struct
{
	DPSDK_CHANNEL_ID*			pChannelIds;						// Channel ID List
	DPSDK_INT32					iChannelCount;						// count of channels
	DPSDK_INT32					iOperateType;						// Control type:1-Status control,2-Pattern control
	DPSDK_INT32					iCommand;							// Control commands: state control,1-Open,0-Shut down; mode control:0-Close，1-Automatically,2-Manual
}DPSDK_PTZOPERATE_ALARMOUT_PARAM;

#define DPSDK_MAX_RIGHT_NUM		256									// Max number of right

// The list of user right
typedef struct
{
	DPSDK_INT32 iMenuRightNum;										// The number of menu right
	DPSDK_MENU_RIGHT struMenuRightList[DPSDK_MAX_RIGHT_NUM];		// Menu right
	DPSDK_INT32 iFunctionRightNum;									// The number of function right
	DPSDK_UINT32 uiFunctionRightList[DPSDK_MAX_RIGHT_NUM];			// Function right: 1 preview video, 5 lock video, 6 marking video, 2 control PTZ, 3 audio talk
}DPSDK_USER_RIGHT_LIST;

typedef struct
{
	DPSDK_CHAR szFunCode[DPSDK_ID_LEN];								// Func id
	DPSDK_CHAR szFunName[DPSDK_NAME_LEN];							// Func name
	DPSDK_CHAR szPid[DPSDK_ID_LEN];
}DPSDK_FUNCTION_INFO;

typedef struct
{
	DPSDK_INT32 iFuncNum;
	DPSDK_FUNCTION_INFO* pFuncInfo;
}DPSDK_AVAILABLE_FUNCTIONS_LIST;

typedef struct
{
	DPSDK_CHAR szSystemCode[DPSDK_ID_LEN];
	DPSDK_CHAR szSystemName[DPSDK_NAME_LEN];
	DPSDK_INT32 iActivated;		//sub system is activate 0:no 1:yes
	DPSDK_INT32 iDeployed;		//sub system is deployed 0:no 1:yes
}DPSDK_SUBSYSTEMS_INFO;

typedef struct
{
	DPSDK_INT32 iSystemNum;
	DPSDK_SUBSYSTEMS_INFO* pSystemInfo;
}DPSDK_SUBSYSTEMS_LIST;

typedef struct
{
	DPSDK_CHAR szMenuCode[DPSDK_ID_LEN];							// Menu id
	DPSDK_CHAR szMenuName[DPSDK_NAME_LEN];							// Menu name
	DPSDK_CHAR szPid[DPSDK_ID_LEN];
}DPSDK_MENU_INFO;

typedef struct
{
	DPSDK_INT32 iMenuNum;
	DPSDK_MENU_INFO* pMenuInfo;
}DPSDK_AVAILABLE_MENUS_LIST;

typedef struct
{
	DPSDK_CHAR szFunctionCode[DPSDK_CODE_LEN];						// Function Code
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Source channel device code
}DPSDK_ACCOUNT_FUNCTION_DEVICE_AUTH_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;									// Total Count
	DPSDK_INT32 iOnlineCount;									// Online Count
	DPSDK_INT32 iOfflineCount;									// Offline Count"
}DPSDK_ACCOUNT_DEVICE_OVERVIEW;

typedef struct
{
	DPSDK_CHAR szFunctionCode[DPSDK_CODE_LEN];						// Function Code
	DPSDK_CHAR szChannelId[DPSDK_ALARM_CHANNELID_LEN];				// Channel Id
}DPSDK_ACCOUNT_FUNCTION_CHANNEL_AUTH_PARAM;

/// BRMS---User
typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name// User Name
	DPSDK_CHAR szRoleId[DPSDK_USER_ID_LEN];				// Role ID
}DPSDK_GET_USER_INFO_PARA;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struUserInfo;							// user is and user name
	DPSDK_BOOL bOnline;												// online status： 0=offline, 1=online
	DPSDK_INT32 iUserType;											// user type： 0=general user，1=Domain user
	DPSDK_INT32	iStatus;											// user status： 1=thaw，0=freeze
}DPSDK_GET_USERS_INFO_EX;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_GET_USERS_INFO_EX* pResultList;
}DPSDK_GET_USER_INFO_RESULT;

// Client name
typedef struct
{
	DPSDK_CHAR szX32[DPSDK_URL_LEN];								//  Client name X32
	DPSDK_CHAR szX64[DPSDK_URL_LEN];								//  Client name X64
}DPSDK_CLIENT_NAME;

// The list of organization node
typedef struct
{
	DPSDK_INT32 iOrgNum;											// The number of node
	DPSDK_ORG_CODE* pOrgCode;										// node code
}DPSDK_ORE_CODE_LIST;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_CHAR szRemark[DPSDK_ORG_REMARK_LEN];						// Organization remark
	DPSDK_CHAR szPId[DPSDK_ID_LEN];									// Parent node
}DPSDK_BRMS_ORGANIZATION_BASE_INFO;

typedef struct
{
	DPSDK_INT32 iOrgNum;											// Organization number
	DPSDK_BRMS_ORGANIZATION_BASE_INFO* pOrgList;					// Prganization list
}DPSDK_BRMS_ORGANIZATION_LIST;

// User group information
typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_USER_ID_LEN];						// Group id
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];							// Group name
	DPSDK_USER_RIGHT_LIST struUserRightList;						// User right
	DPSDK_INT32 iChannelNum;										// The number of channel
	DPSDK_CHANNEL_ID* pChannelId;									// Channel id
}DPSDK_USER_GROUP_INFO;

// The list of user group
typedef struct
{
	DPSDK_INT32 iUserGroupNum;										// The number of user group
	DPSDK_USER_GROUP_INFO* pUserGroupInfo;							// User group information
}DPSDK_USER_GROUP_LIST;

typedef struct
{
	DPSDK_CHAR szKeyWord[DPSDK_NAME_LEN];						// VTH name|app user name|SIP
	DPSDK_INT32 iUserStatus;									// -1=all, 0=Frozen, 1=normal
}DPSDK_SEARCH_USER_INFO;

typedef struct
{
	DPSDK_SEARCH_USER_INFO struSearchInfo;						// Search Info
	DPSDK_PAGE_INFO struPageInfo;								// page Info
}DPSDK_GET_APP_USERS_PARAM;

typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name
	DPSDK_CHAR szPersonId[DPSDK_USER_ID_LEN];						// Person id
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];						// Person name
	DPSDK_BOOL bHouseHolder;										// Is houseHolder
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];								// Vttalk SIP-ID
	DPSDK_TIMET tLastLoginDate;
	DPSDK_INT32 iUserStatus;										// 0=Frozen, 1=normal
	DPSDK_TIMET tLastUpdatePasswordDate;
}DPSDK_APP_USER_INFO;

typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name
	DPSDK_CHAR szPersonId[DPSDK_USER_ID_LEN];						// Person id
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];						// Person name
	DPSDK_BOOL bHouseHolder;										// Is houseHolder
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];								// Vttalk SIP-ID
	DPSDK_INT32 iUserStatus;										// 0=Frozen, 1=normal
}DPSDK_REG_APPUSER_NOTIFY;

typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id
	DPSDK_TIMET tLastLoginDate;
	DPSDK_TIMET tLastUpdatePasswordDate;
	DPSDK_INT32 iUserStatus;										// 0=Frozen, 1=normal
}DPSDK_MODIFY_APPUSER_NOTIFY;

typedef struct
{
	DPSDK_INT32 iUserNum;										// The number of user
	DPSDK_USER_ID* pUserList;									// App User list
}DPSDK_DEL_APPUSER_NOTIFY;

// The list of app user
typedef struct
{
	DPSDK_INT32 iTotalCount;									// Total Count
	DPSDK_INT32 iUserNum;										// The number of user
	DPSDK_APP_USER_INFO* pAppUserInfo;						    // App User information
}DPSDK_APP_USER_LIST;

typedef struct
{
	DPSDK_INT32 iUserNum;										// The number of user
	DPSDK_USER_ID* pUserList;									// App User list
}DPSDK_DELETE_APP_USER_PARAM;

typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name
	DPSDK_INT32 iUserStatus;										// 0=Frozen, 1=normal
	DPSDK_CHAR szPassword[DPSDK_PWD_LEN];							// Password (encrypt)
}DPSDK_UPDATE_APP_USER_PARAM;

#define DPSDK_MAX_GROUP_ID_NUM		512								// Max number of group id

#define DPSDK_MAX_USER_NUM		100									// Max number of user

// User detail information
typedef struct
{
	DPSDK_USER_BASE_INFO struUserBaseInfo;							// Basic information

	DPSDK_CHAR szPassword[DPSDK_PWD_LEN];							// Password
	DPSDK_CHAR szPasswordExpiry[DPSDK_PWD_EXPIRY_LEN];				// The expiry of password
	DPSDK_CHAR szMac[DPSDK_MACADDRESS_LEN];							// Mac address
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];						// Memo
	DPSDK_CHAR szMailAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];		// Mail address
	DPSDK_USER_RIGHT_LIST struUserRightList;						// User right
	DPSDK_CHANNEL_ID_LIST struChannelIdList;						// The list of channel id
	DPSDK_ORE_CODE_LIST   struOrgCodeList;							// The list of organization node code
}DPSDK_USER_DETAIL_INFO;

// The parameter of query user detail information
typedef struct
{
	DPSDK_INT32 iUserIdNum;											// The number of user id
	DPSDK_USER_ID szUserIdList[DPSDK_MAX_USER_NUM];					// The list of user id
}DPSDK_QUERY_USER_DETAIL_INFO;

// The list of user detail information
typedef struct
{
	DPSDK_INT32 iUserDetailInfoNum;									// The number of user detail information
	DPSDK_USER_DETAIL_INFO* pUserDetailInfoList;					// The list of user detail information
}DPSDK_USER_DETAIL_INFO_LIST;

// Role information
typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_USER_ID_LEN];							// The ID of role
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];							// The name of role
	DPSDK_INT32 iUserIDNum;											// The number of user ID
	DPSDK_USER_ID* pUserIDList;										// The list of user ID
}DPSDK_USER_EMAIL_ROLE_INFO;

// User information
typedef struct
{
	DPSDK_CHAR szUserID[DPSDK_USER_ID_LEN];							// The ID of user
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN_EX];						// The name of user
	DPSDK_CHAR szAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];			// Email address
}
DPSDK_USER_EMAIL_USER_INFO;

// Email information
typedef struct
{
	DPSDK_INT32 iRoleNum;											// The number of role information
	DPSDK_USER_EMAIL_ROLE_INFO* pRoleList;							// The list of role information
	DPSDK_INT32 iUserNum;											// The number of user information
	DPSDK_USER_EMAIL_USER_INFO* pUserList;							// The list of user information
}DPSDK_USER_EMAIL_INFO;

typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN_EX];						// The name of user
	DPSDK_CHAR szAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];			// Email address
}DPSDK_ASSOCIATE_USER_EMAIL_INFO;

typedef struct
{
	DPSDK_INT32 iUserNum;											// User number
	DPSDK_ASSOCIATE_USER_EMAIL_INFO* pUserList;						// User list
}DPSDK_ASSOCIATE_USER_EMAIL_LIST;

typedef struct
{
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN_EX];						// The keywords of search
}DPSDK_KEYWORD_INFO;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;									// Page info
	DPSDK_CHAR szRoleId[DPSDK_ROLE_ID_LEN];							// Role ID
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
}DPSDK_GET_PAGE_USER_EMAIL_PARAM;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ID_LEN];							// org ID
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
}DPSDK_GET_PAGE_PARKING_LOT_SPACE_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total records
	DPSDK_INT32 iUserNum;											// User number
	DPSDK_USER_EMAIL_USER_INFO* pUserList;							// User list
}DPSDK_USER_EMAIL_USER_LIST;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];								// Disk group ID
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];							// Disk group name

	DPSDK_INT32 iUserNum;											// User number
	DPSDK_USER_DATA_INFO* pUserList;								// User list
}DPSDK_USER_GROUP_BY_ROLE_INFO;

typedef struct
{
	DPSDK_INT32 iGrpNum;											// Group number
	DPSDK_USER_GROUP_BY_ROLE_INFO* pGrpList;						// Group list
}DPSDK_USER_GROUP_BY_ROLE_LIST;

// Email attachment
typedef struct
{
	DPSDK_CHAR szAttachmentPath[DPSDK_URL_LEN];						// The path of mail attachment
}DPSDK_USER_EMAIL_ATTACHMENT;

// Email recipient
typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];								// The name of recipient
	DPSDK_CHAR szAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];			// The mail address of recipient
}DPSDK_USER_EMAIL_RECIPIENT;

// Send email message parameter
typedef struct
{
	DPSDK_CHAR* pSubject;											// Email subject
	DPSDK_CHAR* pMessage;											// Email message
	DPSDK_INT32 iAttachmentPathNum;									// The number of mail attachment
	DPSDK_USER_EMAIL_ATTACHMENT* pAttachmentList;					// The list of mail attachment
	DPSDK_INT32 iRecipientNum;										// The number of recipient
	DPSDK_USER_EMAIL_RECIPIENT* pRecipientList;						// recipient
	DPSDK_INT32 iCCRecipientNum;									// The number of copy recipient
	DPSDK_USER_EMAIL_RECIPIENT* pCCRecipientList;					// copy recipient
	DPSDK_INT32 iBCCRecipientNum;									// The number of privite copy recipient
	DPSDK_USER_EMAIL_RECIPIENT* pBCCRecipientList;					// privite copy recipient
}DPSDK_SEND_EMAIL_PARAM;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_MACADDRESS_LEN];							//Mac Address
}DPSDK_MAC_ADDRESS_INFO;

typedef struct
{
	DPSDK_INT32				iMacAddressNum;
	DPSDK_MAC_ADDRESS_INFO* pMacAddress;
}DPSDK_MAC_ADDRESS_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ROLE_ID_LEN];
}DPSDK_ROLEID_INFO;

typedef struct
{
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];
}DPSDK_ROLE_USERNAME_INFO;

typedef struct
{
	DPSDK_CHAR szMenuCode[DPSDK_CODE_LEN];
}DPSDK_MENUCODE_INFO;

typedef struct
{
	DPSDK_CHAR szFuncCode[DPSDK_CODE_LEN];
}DPSDK_FUNCCODE_INFO;

typedef struct
{
	DPSDK_CHAR szSubSystemCode[DPSDK_CODE_LEN];
}DPSDK_SUBSYSTEMCODE_INFO;

typedef struct
{
	DPSDK_INT32			iRoleIdNum;
	DPSDK_ROLEID_INFO*	pRoleId;
}DPSDK_ROLEID_LIST;

typedef struct
{
	DPSDK_INT32			iUserNameNum;
	DPSDK_ROLE_USERNAME_INFO* pUserName;
}DPSDK_ROLE_USERNAME_LIST;

typedef struct
{
	DPSDK_ROLEID_LIST struRolelIdList;
	DPSDK_ROLE_USERNAME_LIST struUserNameList;
}DPSDK_DOMAINUSER_ADDUSER_PARAM;

typedef struct
{
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];
	DPSDK_CHAR szFailedReason[DPSDK_MEMO_LEN];							// reason
}DPSDK_FAILED_USER_INFO;

typedef struct
{
	DPSDK_INT32 iUserNum;
	DPSDK_FAILED_USER_INFO* pFailedUserList;
}DPSDK_DOMAINUSER_ADDUSER_FAILEDUSER_LIST;

typedef struct
{
	DPSDK_CHAR szKeyword[DPSDK_KEYWORD_LEN_EX];							// keyword
	DPSDK_CHAR szDomainOrgCode[DPSDK_ID_LEN];							// Domain Org Code
	DPSDK_INT32	iDomainOrgType;											// Domain Org Type,1:Org 2:Group optional
}DPSDK_GET_DOMAIN_ORG_PARAM;

typedef struct
{
	DPSDK_CHAR szDomainOrgCode[DPSDK_ID_LEN];							// Domain Org Code
	DPSDK_CHAR szDomainOrgName[DPSDK_NAME_LEN];							// Domain Org Name
	DPSDK_CHAR szDomainOrgDN[DPSDK_DOMAIN_ORG_DN_LEN];					// Domain Org DN
	DPSDK_INT32 iDomainOrgType;											// Domain Org Type, 1:Org 2:Group
	DPSDK_CHAR szPId[DPSDK_ID_LEN];										// pID
	DPSDK_CHAR szDomainOrgPath[DPSDK_DOMAIN_ORG_DN_LEN];				// Domain Org Path
}DPSDK_DOMAIN_ORGANIZATIONS_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iDomainOrgExceeded;
	DPSDK_DOMAIN_ORGANIZATIONS_INFO* pDomainOrgsList;
}DPSDK_GET_DOMAIN_ORG_RESULT;

typedef struct
{
	DPSDK_CHAR szDomainOrgCode[DPSDK_ID_LEN];							// domain Org Code
	DPSDK_CHAR szDomainOrgName[DPSDK_NAME_LEN];							// domain Org Name
	DPSDK_INT32	iDomainOrgType;											// Domain Org Type,1:Org 2:Group optional
	DPSDK_INT32	iRoleIdsCount;
	DPSDK_ROLEID* pRoleIdsList;											// Role id list
}DPSDK_IMPORT_DOMAIN_ORG_USERS_PARAM;

typedef struct
{
	// Using to Update or get Domain info(s by page)
	DPSDK_CHAR szDomainId[DPSDK_ID_LEN];							// Domain ID

																	// Using to Add or Update Domain info
	DPSDK_CHAR szPassword[DPSDK_PWD_LEN];							// Password

																	// Using to get Domain info(s by page) 
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_CHAR szDomainStatus[DPSDK_STATUS_LEN];					// Domain status: 0 = offline, 1 = online, 2 = unknown
	DPSDK_CHAR szOfflineReasonCode[DPSDK_ID_LEN_EX];				// Offline Reason code
	DPSDK_CHAR szOfflineReasonDesc[DPSDK_MEMO_LEN];					// Offline Reason description

	DPSDK_CHAR szDomainName[DPSDK_NAME_LEN_EX];						// Domain name
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_INT32 iDomainType;										// Domain type: 1 = Dahua, required
	DPSDK_IP   struDomainIp;										// Domain IP
	DPSDK_INT32 iDomainPort;										// Domain port
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name;
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_CHAR szServerIP[DPSDK_NAME_LEN_EX];                      // server IP
}DPSDK_DOMAIN_INFO;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;									// Page info
	DPSDK_ORDER_INFO struOrderInfo;									// Order info
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_CHAR szDomainStatus[DPSDK_STATUS_LEN];					// Domain status: 0 = offline, 1 = online, blank means all, optional
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN_EX];						// The keywords of search
}DPSDK_GET_PAGE_DOMAINS_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total records
	DPSDK_INT32 iDomainNum;											// Domain number
	DPSDK_DOMAIN_INFO* pDomainList;									// Domain list
}DPSDK_DOMAIN_LIST;

typedef struct
{
	DPSDK_CHAR szSectetkey[DPSDK_NAME_LEN_MAX];							// Sectet key
	DPSDK_CHAR szSectetVector[DPSDK_NAME_LEN_MAX];						// Sectet Vector
}DPSDK_ACCOUNT_DELIVER_SECTET_INFO;

typedef struct
{
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
}DPSDK_DOMAINUSER_GETUSERS_KEYWORD;

typedef struct
{
	DPSDK_CHAR szDomainOrgCode[DPSDK_ID_LEN];							// Domain Organization Code
}DPSDK_DOMAINUSER_GETUSERS_CODE;

typedef struct
{
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDisplayName[DPSDK_NAME_LEN];
}DPSDK_DOMAINUSER_NAME_INFO;

typedef struct
{
	DPSDK_INT32			iNameNum;
	DPSDK_DOMAINUSER_NAME_INFO* pUserNameList;
}DPSDK_DOMAINUSER_NAME_LIST;

typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_USER_ID_LEN];							// Role id
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];							// Role name
	DPSDK_CHAR	szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_INT32	iAllowEdit;
	DPSDK_INT32	iRoleType;
	DPSDK_INT32 iManageable;
	DPSDK_INT32 iOwning;
}DPSDK_USEROLES_INFO;

typedef struct
{
	DPSDK_INT32				iRoleNum;
	DPSDK_USEROLES_INFO*	pUserRoleList;
}DPSDK_USERROLES_INFO_LIST;

typedef struct
{
	DPSDK_BRMS_ORGANIZATION_INFO stuBaseOrgInfo;
	DPSDK_INT32 iHasChild;											// Whether there are child nodes											// Domain ID
	DPSDK_INT32 iChecked;											// Check ID
	DPSDK_INT32 iAutoAuthorize;										// Wheather auto authorize, 0-No, 1-Yes
}DPSDK_BRMS_FULL_ORGANIZATION_INFO;

typedef struct
{
	DPSDK_BRMS_CHANNEL_INFO struChannelInfo;
	DPSDK_INT32 iChecked;											// CheckID
}DPSDK_BRMS_FULL_CHANNEL_INFO;

typedef struct
{
	DPSDK_BRMS_BASE_DEVICE_INFO struBaseInfo;
	DPSDK_BRMS_CHANNEL_INFO* pChannelList;
}DPSDK_BRMS_DEVICE_INFO;

typedef struct
{
	DPSDK_INT32 iChecked;											// CheckID
	DPSDK_BRMS_BASE_DEVICE_INFO struBaseInfo;
	DPSDK_BRMS_FULL_CHANNEL_INFO* pChannelList;
}DPSDK_BRMS_FULL_DEVICE_INFO;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_INT32 iDomainID;											// Domain ID
	DPSDK_INT32 iSourceType;										// Source type
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];					// Third organization Id
	DPSDK_INT32 iChecked;											// CheckID
	DPSDK_INT32 iAutoAuthorize;										// Wheather auto authorize, 0-No, 1-Yes
	DPSDK_INT32 iOrganizationNum;
	DPSDK_BRMS_FULL_ORGANIZATION_INFO* pOrganizationList;
	DPSDK_INT32 iDeviceNum;
	DPSDK_BRMS_FULL_DEVICE_INFO* pDeviceList;
	DPSDK_INT32 iChannelNum;
	DPSDK_BRMS_FULL_CHANNEL_INFO* pChannelList;
}DPSDK_TREE_GRADE_FULL_DEVICE_TREE_INFO;

typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_ID_LEN];								// Role Id
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_CHAR szSourceType[DPSDK_ORG_CODE_LEN];					// Channel Type,1=platefrom, 3=Third party,empty = All
}DPSDK_TREE_GRADE_FULL_DEVICE_TREE_PARAM;

typedef struct
{
	DPSDK_CHAR szKeyWord[DPSDK_ID_LEN];								// key word
	DPSDK_INT32 iTreeType;											// tree type
	DPSDK_INT32 iDomain;
	int iMaxConditonCount;											// conditon count
	DPSDK_INT32 iEmptyDeviceFilter;
	DPSDK_TREE_GRADE_DEVICE_TREE_CONDITION* pGradeDeviceConditonList;// condition list
}DPSDK_TREE_SEARCH_GRADE_DEVICE_TREE_PARAM;

typedef struct
{
	DPSDK_INT32 iOrganizationExceeded;								// Whether the number of organization matching results exceeds 100, 0-no, 1-yes
	DPSDK_INT32 iOrganizationNum;
	DPSDK_BRMS_FULL_ORGANIZATION_INFO* pOrganizationList;
	DPSDK_INT32 iDeviceExceeded;									// Whether the number of device matching results exceeds 100, 0-no, 1-yes
	DPSDK_INT32 iDeviceNum;
	DPSDK_BRMS_FULL_DEVICE_INFO* pDeviceList;
	DPSDK_INT32 iChannelExceeded;									// Whether the number of channel matching results exceeds 100, 0-no, 1-yes
	DPSDK_INT32 iChannelNum;
	DPSDK_BRMS_FULL_CHANNEL_INFO* pChannelList;
}DPSDK_TREE_SEARCH_FULL_GRADE_DEVICE_TREE_INFO;

typedef struct
{
	DPSDK_INT32 iOrganizationExceeded;								// Whether the number of organization matching results exceeds 100, 0-no, 1-yes
	DPSDK_INT32 iOrganizationNum;
	DPSDK_BRMS_ORGANIZATION_INFO* pOrganizationList;
	DPSDK_INT32 iDeviceExceeded;									// Whether the number of device matching results exceeds 100, 0-no, 1-yes
	DPSDK_INT32 iDeviceNum;
	DPSDK_BRMS_DEVICE_INFO* pDeviceList;
	DPSDK_INT32 iChannelExceeded;									// Whether the number of channel matching results exceeds 100, 0-no, 1-yes
	DPSDK_INT32 iChannelNum;
	DPSDK_BRMS_CHANNEL_INFO* pChannelList;
}DPSDK_TREE_SEARCH_GRADE_DEVICE_TREE_INFO;

typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_ID_LEN];								// Role Id
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN_EX];						// The keywords of search
	DPSDK_CHAR szSourceType[DPSDK_ID_LEN];							// Source type,1=Platefrom, 3=Third party, Empty = All
}DPSDK_TREE_SEARCH_FULL_GRADE_DEVICE_TREE_PARAM;

typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_ID_LEN];								// Role Id
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];
}DPSDK_ROLE_DETAIL;

typedef struct
{
	DPSDK_INT32			iRoleInfoNum;
	DPSDK_ROLE_DETAIL*	pRoleInfo;
}DPSDK_ROLEINFO_LIST;

// Save user
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id, when add user need not to assignment
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User  name
	DPSDK_CHAR szPassword[DPSDK_PWD_LEN];							// Password ,RSA(md5(md5(username+md5(password))))
	DPSDK_BOOL bEnableExpireDate;									// Is enable user expire
	DPSDK_INT32 iExpireDate;										// ExpireDate
	DPSDK_BOOL bIsPassword;											// Is it encryption
	DPSDK_BOOL bEnableMacAddresses;									// Is it Enable Mac Addresses
	DPSDK_CHAR szPasswordExpiry[DPSDK_PWD_EXPIRY_LEN];				// The expiry of password
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];						// Memo
	DPSDK_CHAR szMailAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];		// Mail address
	DPSDK_CHAR szPtzLevel[DPSDK_NAME_LEN];							// Ptz Control level
	DPSDK_CHAR szGroupId[DPSDK_NAME_LEN];							// group id
	DPSDK_BOOL bEnablePasswordValidity;								// Is it Password Validity
	DPSDK_BOOL bForceResetPassword;									// Is force reset password
	DPSDK_BOOL bReuse;												// Is reuse
	DPSDK_INT32 iStatus;											// User status
	DPSDK_BOOL bEnbaleMPT;											// Is Support MPT Login
	DPSDK_CHAR szNickName[DPSDK_NAME_LEN];							// NickName, Support MPT Login must set
	DPSDK_ROLEID_LIST struRolelIdList;								// Role Ids
	DPSDK_MAC_ADDRESS_LIST  struMacAddressList;						// Mac Address	
	DPSDK_CHAR szPoliceOfficeNo[DPSDK_POLICE_OFFICE_NO_LEN];		// PoliceOfficeNo.
	DPSDK_CHAR szPhoneNo[DPSDK_PHONE_NO_LEN];						// PhoneNo.
	DPSDK_CHAR szPoliceType[DPSDK_POLICE_OFFICE_TYPE_LEN];			//"警员类型 多个类型，分隔",
}DPSDK_EDIT_USER_INFO;

typedef struct
{
	DPSDK_INT32			iMenuNum;
	DPSDK_MENUCODE_INFO* pMenuCode;
}DPSDK_MENUCODE_LIST;

typedef struct
{
	DPSDK_INT32			iFuncNum;
	DPSDK_FUNCCODE_INFO* pFuncCode;
}DPSDK_FUNCTIONCODE_LIST;

typedef struct
{
	DPSDK_INT32			iSubsystemNum;
	DPSDK_SUBSYSTEMCODE_INFO* pSubSystemCode;
}DPSDK_SUBSYSTEMCODE_LIST;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_INT32 iAutoAuthorize;										// Wheather auto authorize, 0-No, 1-Yes
}DPSDK_ROLE_ORG_CODE_INFO;

typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_ROLE_ID_LEN];							// Role id, when add user need not to assignment
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];							// Role  name
	DPSDK_INT32 iRoleType;											// Role type
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];						// Memo
	DPSDK_MENUCODE_LIST struMenuList;								// Menu code list, optional
	DPSDK_FUNCTIONCODE_LIST struFunCodeList;						// Function code list, optional
	DPSDK_SUBSYSTEMCODE_LIST struSubSystemCodeList;					// Sub system code list, optional
	DPSDK_INT32 iOrgCodeNum;
	DPSDK_ROLE_ORG_CODE_INFO* pOrgCodeList;
	DPSDK_INT32 iDevNum;											// Device quantity
	DPSDK_DEVICE_CODE* pDevCodeList;								// Device code list, optional
	DPSDK_INT32 iChannelNum;										// The number of channel
	DPSDK_CHANNEL_ID* pChannelList;									// The list of channel
}DPSDK_EDIT_ROLE_INFO;

typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_ROLE_ID_LEN];							// Role id, when add user need not to assignment
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];							// Role  name
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];						// Memo
	DPSDK_MENUCODE_LIST struMenuList;								// Menu code list, optional
	DPSDK_FUNCTIONCODE_LIST struFunCodeList;						// Function code list, optional
	DPSDK_SUBSYSTEMCODE_LIST struSubSystemCodeList;					// Sub system code list, optional
	DPSDK_INT32 iUpdateOrgCodeNum;
	DPSDK_ROLE_ORG_CODE_INFO* pUpdateOrgCodeList;
	DPSDK_ORE_CODE_LIST struDelOrgCodeList;							// Organization code list, optional
	DPSDK_INT32 iAddDevNum;											// Device quantity
	DPSDK_DEVICE_CODE* pAddDevCodeList;								// Device code list, optional
	DPSDK_INT32 iDelDevNum;											// Device quantity
	DPSDK_DEVICE_CODE* pDelDevCodeList;								// Device code list, optional
	DPSDK_INT32 iAddChannelNum;										// The number of channel
	DPSDK_CHANNEL_ID* pAddChannelList;									// The list of channel
	DPSDK_INT32 iDelChannelNum;										// The number of channel
	DPSDK_CHANNEL_ID* pDelChannelList;									// The list of channel
}DPSDK_UPDATE_EDIT_ROLE_INFO;

typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id, when add user need not to assignment
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User  name
	DPSDK_BOOL bEnableExpireDate;									// Is enable user expire
	DPSDK_INT32 iExpireDate;										// ExpireDate
	DPSDK_BOOL bEnableMacAddresses;									// Is it Enable Mac Addresses
	DPSDK_CHAR szPasswordExpiry[DPSDK_PWD_EXPIRY_LEN];				// The expiry of password
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];						// Memo
	DPSDK_CHAR szMailAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];		// Mail address
	DPSDK_CHAR szPtzLevel[DPSDK_NAME_LEN];							// Ptz Control level
	DPSDK_BOOL bEnablePasswordValidity;								// Is it Password Validity
	DPSDK_BOOL bForceResetPassword;									// Is force reset password
	DPSDK_BOOL bReuse;												// Is reuse
	DPSDK_INT32 iStatus;											// User status
	DPSDK_INT32 iUserType;											// User Type  0=Normal，1=Domain User
	DPSDK_BOOL bEnbaleMPT;											// Is Support MPT Login
	DPSDK_CHAR szNickName[DPSDK_NAME_LEN];							// NickName, Support MPT Login must set
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];							// group name
	DPSDK_CHAR szGroupId[DPSDK_NAME_LEN];							// group id
	DPSDK_ROLEINFO_LIST struRolelInfoList;							// Role Infos
	DPSDK_MAC_ADDRESS_LIST  struMacAddressList;						// Mac Address	
	DPSDK_CHAR szPoliceOfficeNo[DPSDK_POLICE_OFFICE_NO_LEN];		// PoliceOfficeNo.
	DPSDK_CHAR szPhoneNo[DPSDK_PHONE_NO_LEN];						// PhoneNo.
	DPSDK_CHAR szPoliceType[DPSDK_POLICE_OFFICE_TYPE_LEN];			//"警员类型 多个类型，分隔"
}DPSDK_GET_USER_INFO;


typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_USER_ID_LEN];							// Role id, when add user need not to assignment
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];							// Role  name
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];						// Memo
	DPSDK_INT32 iAllowEdit;											// Allow  Edit
	DPSDK_INT32 iRoleType;
	DPSDK_MENUCODE_LIST struMenuList;								// Menu code
	DPSDK_FUNCTIONCODE_LIST struFunCodeList;						// Function code	
	DPSDK_SUBSYSTEMCODE_LIST struSubSystemCodeList;					// Sub system code
}DPSDK_GET_ROLE_INFO;

typedef struct
{
	DPSDK_CHAR szAccessKey[DPSDK_KEY_LEN];							// Access Key
	DPSDK_CHAR szSecretKey[DPSDK_KEY_LEN];							// Secret Key
}DPSDK_ACUPICK_KEY_INFO;

// Save user
typedef struct
{
	DPSDK_INT32 iBridgePort;										// Bridge port
	DPSDK_CHAR szBridgeName[DPSDK_NAME_LEN];						// Bridge name
	DPSDK_CHAR szBridgeIP[DPSDK_IP_LEN];							// Bridge Ip
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];						// Remark				
}DPSDK_BRIDGE_BASIC_INFO;

typedef struct
{
	DPSDK_INT32 iStatus;
	DPSDK_CHAR szBridgeId[DPSDK_ID_LEN];							// Bridge id
	DPSDK_BRIDGE_BASIC_INFO struBridgeBasicInfo;					// Bridge Basic Info
}DPSDK_BRIDGE_GET_INFO;

typedef struct
{
	DPSDK_CHAR	szBridgeId[DPSDK_ID_LEN];					// Bridge ID
	DPSDK_CHAR	szEventCode[DPSDK_ID_LEN];					// Event Code
	DPSDK_CHAR	szEventName[DPSDK_NAME_LEN];				// Event Name
	DPSDK_CHAR  szSysEventSourceCode[DPSDK_ID_LEN];			// System event source code
}DPSDK_THRIDPARTY_EVENT_INFO;

typedef struct
{
	DPSDK_CHAR	szSourceId[DPSDK_ID_LEN];					// event ID
	DPSDK_CHAR	szSourceCode[DPSDK_ID_LEN];					// Event Code
	DPSDK_CHAR	szSourceName[DPSDK_NAME_LEN];				// Event Name
	DPSDK_CHAR	szAssociateId[DPSDK_ID_LEN];				// Associate id
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];				// Remark
}DPSDK_THRID_SOURCE_INFO;

typedef struct
{
	DPSDK_CHAR	szEventId[DPSDK_ID_LEN];					// Event ID
	DPSDK_CHAR	szEventType[DPSDK_ID_LEN_EX];				// Event type
	DPSDK_CHAR	szEventName[DPSDK_NAME_LEN];				// Event Name
	DPSDK_CHAR	szAssociateId[DPSDK_ID_LEN];				// Associate id
	DPSDK_CHAR	szSourceType[DPSDK_ID_LEN_EX];				// Event source type
	DPSDK_CHAR	szEventGrade[DPSDK_ID_LEN];					// event grade
	DPSDK_CHAR  szRemark[DPSDK_USER_REMARK_LEN];			// Remark
}DPSDK_THRID_EVENT_INFO;

typedef struct
{
	DPSDK_INT32	iTotalCount;								// Total records
	DPSDK_INT32	iEventNum;
	DPSDK_INT32	iSourceNum;
	DPSDK_CHAR	szProjectId[DPSDK_ID_LEN];					// Project ID
	DPSDK_CHAR	szProjectName[DPSDK_NAME_LEN];				// Project name
	DPSDK_CHAR	szProjectType[DPSDK_NAME_LEN];				// Project Type
	DPSDK_CHAR	szAssociateId[DPSDK_ID_LEN];				// Associate id
	DPSDK_CHAR	szDeviceOrgCode[DPSDK_DEVICE_ID_LEN];		// device code
	DPSDK_CHAR	szPersonOrgCode[DPSDK_DEVICE_ID_LEN];		// person code
	DPSDK_CHAR  szRemark[DPSDK_USER_REMARK_LEN];			// Remark
	DPSDK_THRID_EVENT_INFO* pEventList;
	DPSDK_THRID_SOURCE_INFO* pSourceList;
}DPSDK_THRIDPARTY_EVENT_INFOS;

// Data sync field info
typedef struct
{
	DPSDK_CHAR szSysFieldName[DPSDK_NAME_LEN];						// System field name
	DPSDK_CHAR szTargetFieldName[DPSDK_NAME_LEN];					// Target field name
	DPSDK_CHAR szDataType[DPSDK_NAME_LEN];							// Data type
	DPSDK_INT32	iDataLength;
}DPSDK_DSTASYNC_FIELD_INFO;

typedef struct
{
	DPSDK_CHAR szModuleId[DPSDK_ID_LEN];							// Module ID
	DPSDK_CHAR szModuleName[DPSDK_NAME_LEN];						// Module name
}DPSDK_DATASYNC_MODULE_INFO;

// Data sync data info
typedef struct
{
	DPSDK_DATASYNC_MODULE_INFO struModuleInfo;
	DPSDK_CHAR szTargetTableName[DPSDK_NAME_LEN];					// Target Table name
	DPSDK_INT32 iFieldNum;											// Field number
	DPSDK_DSTASYNC_FIELD_INFO* pFieldList;							// Field list
}DPSDK_DATASYNC_TASK_DATA_LIST;

// Data sync task info
typedef struct
{
	DPSDK_CHAR szTaskId[DPSDK_ID_LEN];								// Task id
	DPSDK_INT32 iDbType;											// DB Type, 1=Oracle，2=Mysql，3=SqlServer，4=PostgreSql
	DPSDK_CHAR szDbName[DPSDK_NAME_LEN];							// DB name
	DPSDK_INT32 iConnected;											// DB Connect status：0=UnConnect，1=Connected"
	DPSDK_INT32 iStatus;											// Enable Auto Sync ：0=No，1=Yes
}DPSDK_DATASYNC_TASK_LIST_BASIC_INFO;

typedef struct
{
	DPSDK_CHAR szFieldName[DPSDK_NAME_LEN];							// Field Name
	DPSDK_CHAR szDataType[DPSDK_NAME_LEN];							// Data type
	DPSDK_INT32	iDataLength;
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];						// Remark
}DPSDK_DATASYNC_MODULE_FIELD_INFO;

// Time template
typedef struct
{
	DPSDK_INT32 iType;											// Template type
	DPSDK_INT32 iId;												// Template id
	DPSDK_CHAR szName[DPSDK_NAME_LEN];								// Template name
}DPSDK_TIME_TEMPLATE_BASE_INFO;

// The time slot of time template 
typedef struct
{
	DPSDK_CHAR szTimeStart[DPSDK_TIME_LEN];							// The point of start time
	DPSDK_CHAR szTimeEnd[DPSDK_TIME_LEN];							// The point of end time
}DPSDK_TIME_TEMPLATE_TIME_SLOT;

#define DPSDK_MAX_TIME_SLOT_NUM		100								// Max number of time slot
// The list of time slot
typedef struct
{
	DPSDK_INT32 iTimeSlotNum;										// The number of time slot
	DPSDK_TIME_TEMPLATE_TIME_SLOT* pTimeSlotList;						// The list of time slot
}DPSDK_TIME_TEMPLATE_TIME_SLOT_LIST;

// Time template
typedef struct
{
	DPSDK_TIME_TEMPLATE_BASE_INFO struBaseInfo;						// Basic information
	DPSDK_TIME_TEMPLATE_TIME_SLOT_LIST struTimeSlotList1;			// The list of time slot on monday
	DPSDK_TIME_TEMPLATE_TIME_SLOT_LIST struTimeSlotList2;			// The list of time slot on tuesday
	DPSDK_TIME_TEMPLATE_TIME_SLOT_LIST struTimeSlotList3;			// The list of time slot on wednesday
	DPSDK_TIME_TEMPLATE_TIME_SLOT_LIST struTimeSlotList4;			// The list of time slot on thursday
	DPSDK_TIME_TEMPLATE_TIME_SLOT_LIST struTimeSlotList5;			// The list of time slot on friday
	DPSDK_TIME_TEMPLATE_TIME_SLOT_LIST struTimeSlotList6;			// The list of time slot on saturday
	DPSDK_TIME_TEMPLATE_TIME_SLOT_LIST struTimeSlotList7;			// The list of time slot on sunday
}DPSDK_TIME_TEMPLATE_DETAIL_INFO;

typedef struct
{
	DPSDK_INT32 iTemplateInfoNum;									// The number of time template 
	DPSDK_TIME_TEMPLATE_DETAIL_INFO* pTemplateInfoList;				// The list of time template 
}DPSDK_TIME_TEMPLATE_BASE_INFO_LIST;

typedef struct
{
	DPSDK_CHAR szKeyWord[DPSDK_NAME_LEN];							// Pos receipt keyword
}DPSDK_QUERY_TIME_TEMPLATE_LIST_PARAM;

#define DPSDK_LINK_VIDEO_MAX_NUM		100							// Max number of link video plan
#define DPSDK_STORAGE_PLAN_MAX_NUM		100							// Max number of storage plan
#define DPSDK_ALARM_PLAN_MAX_NUM		100							// Max number of alarm plan

typedef struct
{
	DPSDK_INT32 iStoPlansNum;										// The number of storage plan
	DPSDK_CHANNEL_ID* pStoPlans;									// The list of storage plan
}DPSDK_STO_PLANS_LIST;

typedef struct
{
	DPSDK_INT32 iAlarmPlansNum;										// The number of alarm plan
	DPSDK_CHANNEL_ID* pAlarmPlans;									// The list of alarm plan
}DPSDK_ALARM_PLANS_LIST;

typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];							// Name
}DPSDK_NAME_INFO;

typedef struct
{
	DPSDK_INT32 iDataLen;											// File data lenght
	DPSDK_CHAR* pFileData;											// File data
}DPOSDK_FILE_DATA;

typedef struct
{
	DPSDK_INT32 iNum;												// 
	DPSDK_NAME* pNameList;											// 
}DPSDK_NAME_LIST;

typedef struct
{
	DPSDK_INT32 iNum;												// 
	DPSDK_NAME_INFO* pNameList;											// 
}DPSDK_NAME_INFO_LIST;

// Delete time template information
typedef struct
{
	DPSDK_NAME_INFO_LIST struStoragePlanChnlNames;					// The list of channel name about video plan
	DPSDK_NAME_INFO_LIST struBackStoragePlanChnlNames;				// The list of channel name about back storage plan
	DPSDK_NAME_INFO_LIST struAlarmPlanSourceNames;					// The List of alarm plan source name
	DPSDK_NAME_INFO_LIST struPassageRuleNamesNames;					// The List of passage rule name
}DPSDK_DELETE_TIME_TEMPLATE_INFO;

// Alarm plan
typedef struct
{
	DPSDK_INT32 iId;												// Alarm plan id
	DPSDK_CHAR szName[DPSDK_NAME_LEN];								// Alarm plan name
	DPSDK_BOOL bEnable;												// Is it enable alarm plan
	DPSDK_INT32 iAlarmType;											// Alarm type
	DPSDK_INT32 iTimeTemplateId;									// Time template id
	DPSDK_INT32	iAlarmGrade;										// Alarm level(see AlarmLevel_e)
}DPSDK_ALARM_PLAN_BASE_INFO;

// Alarm plan list
typedef struct
{
	DPSDK_INT32 iAlarmPlanInfoNum;									// The number of alarm plan
	DPSDK_ALARM_PLAN_BASE_INFO szAlarmPlanInfoList[1];				// The list of alarm plan
}DPSDK_ALARM_PLAN_BASE_INFO_LIST;

// Linage PTZ
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ALARM_CHANNELID_LEN];				// Channel Id
	DPSDK_CHAR szPreset[DPSDK_PRESETPOINT_CODE_LEN];				// Preset point
}DPSDK_ALARM_LINK_PTZ_INFO;

// Linkage video information
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ALARM_CHANNELID_LEN];				// Channel Id
	DPSDK_CHAR szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];			// Device name
	DPSDK_INT32 iChannelType;										// Channel type
	DPSDK_INT32 iBelongedDeviceCategory;							// Device category
	DPSDK_INT32 iDeviceType;										// Device type
	DPSDK_INT32 iScreenID;											// The id of screen which binding channel
}DPSDK_ALARM_RECORD_NODE_INFO;

// Linkage record information
typedef struct
{
	DPSDK_INT32 iStoragePosition;									// Storage point  see DPSDK_STORAGE_POSITION
	DPSDK_UINT32 uiRecordTime;										// Record time, in seconds
	DPSDK_UINT32 uiPreRecordTime;									// Pre-record time
	DPSDK_INT32 iAssistantStream;									// Code stream type
	DPSDK_BOOL bSaveSnapshort;										// Is store picture
	DPSDK_BOOL bOpenClient;											// Is display linkage on client
	DPSDK_INT32 iScreenNum;											// The number of window
	DPSDK_INT32 iSourceType;										// Source type, 1-Alarm source; 2-Bound resource; 3-Optional

	DPSDK_INT32 iAlarmRecordNum;									// The number of linkage video
	DPSDK_ALARM_RECORD_NODE_INFO* pAlarmRecordNodeList;				// The list of linkage video
}DPSDK_ALARM_LINK_RECORD_INFO;

// Link output channel information
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ALARM_CHANNELID_LEN];				// Output channel id
	DPSDK_UINT32 uiResidenceTime;									// Residence time
}DPSDK_ALARM_LINK_OUTPUT_INFO;

// Link mail imforrmation
typedef struct
{
	DPSDK_CHAR szUserID[DPSDK_USER_ID_LEN];							// The ID of user
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN_EX];						// User name			
	DPSDK_CHAR szEmailAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];		// Send mail's address, it is valid when the value of iSelectedUserId is 0
}DPSDK_MAIL_RECIPIENR_INFO;

typedef struct
{
	// Using to add/update/get alarm plan
	DPSDK_INT32 iSendSnapshot;										// Send snapshot: 1-Yes, 0-No 
	DPSDK_CHAR szMailTemplateId[DPSDK_ID_LEN];						// Mail template ID

																	// Using to get alarm plan list
	DPSDK_CHAR szMailSubject[DPSDK_ALARM_MAIL_SUBJECT_LEN];			// Email title
	DPSDK_CHAR szMailFormat[DPSDK_ALARM_MAIL_FORMAT_LEN];			// Email formatting string

	DPSDK_INT32 iRecipientNum;										// The number of recipient
	DPSDK_MAIL_RECIPIENR_INFO* pRecipientList;						// The list of recipient
}DPSDK_ALARM_LINK_MAIL_INFO;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ALARM_CHANNELID_LEN];				// Channel id
	DPSDK_INT32 iWindowId;											// Window id
	DPSDK_INT32 iWallId;											// TVWALL id
}DPSDK_ALARM_LINK_WALL_CHNL_INFO;

// Link TVWALL information
typedef struct
{
	DPSDK_INT32 iSourceType;										// Source type, 1-Alarm source; 2-Bound resource; 3-Optional
	DPSDK_INT32 iWallId;											// TVWALL id
	DPSDK_INT32 iChnlNum;											// Channel number
	DPSDK_ALARM_LINK_WALL_CHNL_INFO* pChnlList;						// Channel list
}DPSDK_ALARM_LINK_WALL_INFO;

// Link acess information
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ALARM_CHANNELID_LEN];				// Channel id
	DPSDK_INT32 iReactionType;										// Acess operate type 0：Open door；1: Close door; 2: Normally open; 3:  Normally close
}DPSDK_ALARM_LINK_DOOR_INFO;

// Link acess information
typedef struct
{
	// For getting alarm plan
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN_EX];						// User name

	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id
}DPSDK_ALARM_LINK_USER_INFO;

// Alarm source information
typedef struct
{
	DPSDK_ALARM_PLAN_BASE_INFO struBaseInfo;						// Alarm plan's basic information

	DPSDK_INT32 iAlarmSourceNum;									// The number of alarm source
	DPSDK_CHANNEL_ID* pAlarmSourceCodeList;							// Alarm source code list

	DPSDK_ALARM_LINK_RECORD_INFO struAlarmRecordInfo;				// The linkage video information

	DPSDK_INT32 iAlarmPTZNum;										// The number of linkage PTZ
	DPSDK_ALARM_LINK_PTZ_INFO* pAlarmLinkPTZList;					// The list of linkage PTZ

	DPSDK_INT32 iAlarmLinkOutputNum;								// The number of linkage output channel
	DPSDK_ALARM_LINK_OUTPUT_INFO* pAlarmLinkOutputList;				// The list of linkage output channel

	DPSDK_ALARM_LINK_MAIL_INFO struAlarmLinkMailInfo;				// The linkage mail information

	DPSDK_ALARM_LINK_WALL_INFO struAlarmLinkWallInfo;				// The linkage TVWALL information

	DPSDK_INT32 iAlarmLinkDoorNum;									// Then number of linkage access
	DPSDK_ALARM_LINK_DOOR_INFO* pAlarmLinkDoorList;					// The list of linkage access

	DPSDK_INT32 iAlarmLinkUserNum;									// Then number of linkage user
	DPSDK_ALARM_LINK_USER_INFO* pAlarmLinkUserList;					// The list of linkage user
}DPSDK_ALARM_SOURCE_INFO;

// User mail's information
typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name
	DPSDK_CHAR szEmailAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];		// User email's address
}DPSDK_USER_MAIL_INFO;

// The list of user mail
typedef struct
{
	DPSDK_INT32 iUserMailNum;										// The number of user's mail
	DPSDK_USER_MAIL_INFO struUserMailInfo[1];						// The list of user's mail
}DPSDK_USER_MAIL_LIST;

// Mails' information which are auto added
typedef struct
{
	DPSDK_CHAR szEmailAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];		// Email address
}DPSDK_MAIL_INFO;

// The list of user mail
typedef struct
{
	DPSDK_INT32 iMailNum;											// The number of mail 
	DPSDK_MAIL_INFO struMailInfo[1];								// The list of mail 
}DPSDK_MAIL_LIST;

#define DPSDK_MAX_ALARM_SOURCE_NUM		128							// Max number of alarm source
// The detail information of alarm plan
typedef struct
{
	// Using in DPSDK_GetAlarmPlanList
	DPSDK_CHANNEL_ID struChannelId;									// Channel ID

	DPSDK_INT32 iAlarmSourceNum;									// The number of alarm source
	DPSDK_ALARM_SOURCE_INFO* pAlarmSourceList;						// The list of alarm source
}DPSDK_ALARM_PLAN_DETAIL_INFO;

// The list of alarm plan
typedef struct
{
	DPSDK_INT32 iAlarmPlanInfoNum;									// The number of alarm plan
	DPSDK_ALARM_PLAN_DETAIL_INFO* pAlarmPlanInfoList;				// The list of alarm plan
}DPSDK_ALARM_PLAN_DETAIL_INFO_LIST;

// Alarm plan copy parameter
typedef struct
{
	DPSDK_CHAR szSrcChannelId[DPSDK_CHANNEL_ID_LEN];				// Source channel ID
	DPSDK_INT32 iDestChannelNum;									// The number of destination channel id
	DPSDK_CHANNEL_ID* pDestChannelList;								// The list of destination channel id
}DPSDK_ALARM_PLAN_COPY_PARAM;

//
typedef struct
{
	DPSDK_CHAR szSeq[DPSDK_ID_LEN];									// Seq
}DPSDK_MANUAL_BACKUP_RESULT;

// Auto backup file information
typedef struct
{
	DPSDK_CHAR szSN[DPSDK_SN_LEN];									// The id of backup restoration file
	DPSDK_TIMET tTime;												// The time of backup restoration
	DPSDK_UINT32 uiSize;											// The of backup file（kb）
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];
}DPSDK_AUTO_BACKUP_FILE_INFO;

#define DPSDK_MAX_BACKUP_FILE_NUM		100							// Max number of backup file
// The list of auto backup file
typedef struct
{
	DPSDK_INT32 iFileNum;																		// The number of file which return from server
	DPSDK_AUTO_BACKUP_FILE_INFO szAutoBackUpFileList[DPSDK_MAX_BACKUP_FILE_NUM];				// The list of auto backup file
}DPSDK_AUTO_BACKUP_FILE_LIST;

// Linkage video information
typedef struct
{
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];					// Channel code
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Source channel name
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Source channel device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Source channel device name
}DPSDK_VIDEO_RELATION_INFO;

#define DPSDK_MAX_VIDEO_RELATION_NUM		128						// Max number of linkage video channel
// The list of linkage video
typedef struct
{
	DPSDK_INT32 iVideoRelationNum;																// The number of linkage video
	DPSDK_VIDEO_RELATION_INFO szVideoRelationList[DPSDK_MAX_VIDEO_RELATION_NUM];				// The list of linkage video
}DPSDK_VIDEO_RELATION_LIST;

// Save linkage video's information
typedef struct
{
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];							// Binding resource's id
	DPSDK_CHAR szName[DPSDK_CHANNEL_NAME_LEN];						// Name
	DPSDK_INT32 iType;												// Node type
	DPSDK_CHAR szPId[DPSDK_ID_LEN];									// Parent node
	DPSDK_CHAR szPPId[DPSDK_ID_LEN];								// Grandfather node
}DPSDK_VIDEO_RELATION_NODE;

// Save linkage video's parameter
typedef struct
{
	DPSDK_INT32 iOperation;											// Operate type insert 0, update 1
	DPSDK_CHAR szSourceId[DPSDK_CHANNEL_ID_LEN];					// Channel id
	DPSDK_CHAR szName[DPSDK_CHANNEL_NAME_LEN];						// Channel name
	DPSDK_INT32 iRelationNodeNum;									// The number of linkage
	DPSDK_VIDEO_RELATION_NODE szRelationNodeList[DPSDK_MAX_VIDEO_RELATION_NUM];					// The list of linkage
}DPSDK_SAVE_VIDEO_RELATION_PARAM;

// The list of linkage video information
typedef struct
{
	DPSDK_CHAR szSourceId[DPSDK_CHANNEL_ID_LEN];					// Channel id
	DPSDK_INT32 iRelationNodeNum;									// The number of linkage
	DPSDK_CHAR szIdList[DPSDK_MAX_VIDEO_RELATION_NUM][DPSDK_CHANNEL_ID_LEN];					// The list of linkage
}DPSDK_VIDEO_RELATION_NODE_LIST;

typedef struct
{
	DPSDK_CHAR szConfigType[DPSDK_TYPE_LEN];
}DPSDK_CONFIG_TYPE;

typedef struct
{
	DPSDK_INT32 iConfigNum;
	DPSDK_CONFIG_TYPE* pConfigTypeList;
}DPSDK_CONFIG_TYPE_INFO;

// https certificate information
typedef struct
{
	DPSDK_SERVER_CONFIG_INFO struConfigInfo;						// Parameter Configure information
	DPSDK_UINT32 uiHttpsFileLength;									// The length of https certificate 
	DPSDK_CHAR* pHttpsFileData;										// The data of https certificate
}DPSDK_HTTPS_CONFIG_INFO;

typedef struct
{
	DPSDK_UINT32 uiStorageTime;										// The time of save image,unit: day
	DPSDK_INT32 iRemainderSize;
}DPSDK_IMAGE_STORAGE_INFO;

// Storage Configure information 
typedef struct
{
	DPSDK_UINT32 uiLogSaveTime;										// The time of save log,unit: month
	DPSDK_UINT32 uiAlarmInfoSaveTime;								// The time of save alarm information,unit: month
	DPSDK_UINT32 uiPosSaveTime;										// The time of save pos,unit: month
	DPSDK_UINT32 uiHeatMapSaveTime;									// The time of save heat map,unit: month
	DPSDK_UINT32 uiFaceRecordSaveTime;								// The time of save face record,unit: month
	DPSDK_UINT32 uiItcCarCaptureSaveTime;							// The time of save ITC car capture,unit: month
	DPSDK_UINT32 uiAccessControlLogSaveTime;						// The time of save access control log,unit: month
	DPSDK_UINT32 uiCallLogSaveTime;									// The time of save call log,unit: month
	DPSDK_UINT32 uiAttendanceRecordsSaveTime;						// The time of save attendance records,unit: month
	DPSDK_UINT32 uiLiftLogSaveTime;									// The time of save lift log,unit: month
	DPSDK_UINT32 uiEntranceCarCaptureSaveTime;						// The time of save entrance car cature,unit: month
	DPSDK_UINT32 uiVisitorRecordSaveTime;							// The time of save cisitor record,unit: month
	DPSDK_UINT32 uiObjectDetectionRecord;
	DPSDK_UINT32 uiPassengerFlowStatistics;
	DPSDK_UINT32 uiPassengerAreaNoStatistics;
	DPSDK_UINT32 uiMptRecord;										// The time of mpt record,unit: month
	DPSDK_UINT32 uiAnalysisRecord;									// The time of analysis record,unit: month
	DPSDK_UINT32 uiArmingRecord;									// The time of arming record,unit: month
	DPSDK_UINT32 uiEmergencyRecord;									// The time of emergency record,unit: month
	DPSDK_UINT32 uiEnergyTime;										// The time of energy time,unit: month
	DPSDK_UINT32 uiAlertSaveTime;									// The time of alert time,unit: day
	DPSDK_UINT32 uiEducationSaveTime;								// The time of education time,unit: month
}DPSDK_STORAGE_CONFIG_INFO;

// Pos end information 
typedef struct
{
	DPSDK_CHAR szPosEnd[DPSDK_MEMO_LEN];							// Pos end
}DPSDK_POS_END_INFO;

// Pos config item
typedef struct
{
	DPSDK_CHAR szPosID[DPSDK_ID_LEN];								// Pos ID
	DPSDK_CHAR szPosItemName[DPSDK_NAME_LEN];						// Pos item name
	DPSDK_CHAR szPosItemDisplayName[DPSDK_NAME_LEN];				// Pos item display name
	DPSDK_INT32	iItemType;											// Pos item type
	DPSDK_INT32 iStatus;											// Pos item status
}DPSDK_POS_CONFIG_ITEM_LIST;

// Pos config information 
typedef struct
{
	DPSDK_INT32 iPosItemNum;										// The number of Pos config items
	DPSDK_POS_CONFIG_ITEM_LIST *pPosItemList;						// Pos config item list
}DPSDK_POS_CONFIG_INFO;

// Pos receipt export param
typedef struct
{
	DPSDK_CHAR szEncryptPass[DPSDK_PWD_LEN];						// Pos receipt encryptPass
	DPSDK_INT32 iExportRange;										// Pos receipt exportRange
	DPSDK_INT32 iSelectIDNum;										// The number of selectId
	DPSDK_CHANNEL_ID *pSelectIDList;								// Pos receipt selectIds
	DPSDK_INT32 iDataType;											// Pos receipt dataType
	DPSDK_CHAR szExportType[DPSDK_NAME_LEN];						// Pos receipt exportType
	DPSDK_CHAR szSequence[DPSDK_SEQUENCE_LEN];						// 
	DPSDK_INT32 iDisplayTimezoneOffset;								// Pos receipt displayTimezoneOffset
}DPSDK_POS_EXPORT_RECEIPTS_INFO;

// Pos receipt Info
typedef struct
{
	DPSDK_INT32 iChannelNum;										// The number of channel
	DPSDK_CHANNEL_ID* pChannelIdList;								// The list of channel id	
	DPSDK_TIMET tStartTime;											// Pos receipt startTime(s)
	DPSDK_TIMET tEndTime;											// Pos receipt endTime(s)
	DPSDK_CHAR szSequence[DPSDK_SEQUENCE_LEN];						// 
	DPSDK_CHAR szKeyWord[DPSDK_NAME_LEN];							// Pos receipt keyword
	DPSDK_CHAR szPosId[DPSDK_ID_LEN];								// Pos receipt posId
	DPSDK_CHAR szMinTotalPrice[DPSDK_NAME_LEN];						// Pos receipt minTotalPrice 
	DPSDK_CHAR szMaxTotalPrice[DPSDK_NAME_LEN];						// Pos receipt maxTotalPrice
	DPSDK_CHAR szMinDiscount[DPSDK_NAME_LEN];						// Pos receipt minDiscount
	DPSDK_CHAR szMaxDiscount[DPSDK_NAME_LEN];						// Pos receipt maxDiscount
	DPSDK_CHAR szMinRefund[DPSDK_NAME_LEN];							// Pos receipt minRefund
	DPSDK_CHAR szMaxRefund[DPSDK_NAME_LEN];							// Pos receipt maxRefund
	DPSDK_CHAR szOperatorName[DPSDK_NAME_LEN];						// Pos receipt operatorName
	DPSDK_CHAR szOtherInfo[DPSDK_NAME_LEN];							// Pos receipt otherInfo
}DPSDK_POS_RECEIPTS_INFO;

// Pos receipt export info
typedef struct
{
	DPSDK_POS_RECEIPTS_INFO struPosReceiptInfo;						// pos receipt Info
	DPSDK_POS_EXPORT_RECEIPTS_INFO struExportReceiptsInfo;			// pos export receipts Info
}DPSDK_POS_EXPORT_INFO;

// Pos receipt export response
typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];						// pos receipt responce session
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];							// pos receipt responce fileUrl
}DPSDK_POS_EXPORT_RESPONCE_INFO;

// Pos receipt page info
typedef struct
{
	DPSDK_POS_RECEIPTS_INFO struPosReceiptInfo;						// Pos receipt Info
	DPSDK_PAGE_INFO struPageInfo;									// PageInfo
	DPSDK_TIMET	tSplitTime;
	DPSDK_CHAR  szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32	iCurrentPage;
}DPSDK_POS_PAGE_INFO;

// Pos receipt pagedata list
typedef struct
{
	DPSDK_CHAR szReceiptId[DPSDK_ID_LEN];
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_DEVICE_NAME_LEN];
	DPSDK_CHAR szReceiptInventory[DPSDK_MESSAGERICHCONTENT_LEN];
	DPSDK_CHAR szPosId[DPSDK_ID_LEN];
	DPSDK_CHAR szTotalPrice[DPSDK_NAME_LEN];
	DPSDK_CHAR szDiscount[DPSDK_NAME_LEN];
	DPSDK_CHAR szRefund[DPSDK_NAME_LEN];
	DPSDK_TIMET tReceiptTime;
	DPSDK_CHAR szOperatorName[DPSDK_NAME_LEN];
	DPSDK_CHAR szOtherInfo[DPSDK_NAME_LEN];
}DPSDK_POS_PAGE_DATA;

// Pos receipt get page response
typedef struct
{
	DPSDK_INT32 iTotalCount;										// pos page TotalCount
	DPSDK_INT32 iPageDataNum;										// The number of PageData
	DPSDK_POS_PAGE_DATA *pPageDataList;								// pos receipt pagedata list
}DPSDK_POS_PAGE_RESPONCE_INFO;

// FTP Configure information
typedef struct
{
	DPSDK_CHAR szLANPath[DPSDK_IP_LEN];								// LAN IP
	DPSDK_CHAR szWANPath[DPSDK_IP_LEN];								// Network IP
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name
	DPSDK_CHAR szPWD[DPSDK_PWD_LEN];								// Password
}DPSDK_FTP_CONFIG_INFO;

// Sync time configure information
typedef struct
{
	DPSDK_BOOL bEnable;												// Enable
	DPSDK_CHAR szStartTime[DPSDK_TIME_LEN];							// Start time hh:mm:ss
	DPSDK_UINT32 uiInterval;										// Time slot, unit: s
																	//DPSDK_BOOL bImmediately;										// Whether sync in time
	DPSDK_BOOL bDeviceOnlineTimeSync;								// Whether device online time sync: 0-NO, 1-Yes
	DPSDK_BOOL bNtpEnable;											// Whether Enable NTP: 0-no, 1-yes"
	DPSDK_IP   struNtpIp;											// NTP IP
	DPSDK_INT32 iNtpPort;											// NTP port
	DPSDK_INT32 iNtpSyncInterval;									// Time synchronization interval, Unit: minutes
}DPSDK_TIME_SYNC_CONFIG_INFO;

// Encrypt type
typedef enum
{
	MAIL_ENCRYPT_DISABLE = 0,										// No encrypt
	MAIL_ENCRYPT_TLS = 1,											// TLS encrypt
	MAIL_ENCRYPT_SSL = 2,											// SSL encrypt
}DPSDK_MAIL_ENCRYPT_TYPE;


enum DPSDK_DrawRecType
{
	DPSDK_DrawRecType_None = 0, //不显示REC
	DPSDK_DrawRecType_DeviceRecrod, //仅仅设备录像
	DPSDK_DrawRecType_ServerRecrod, //仅仅中心录像
	DPSDK_DrawRecType_DeviceAndServerRecrod, //设备和中心录像
};

// Mail configure information
typedef struct
{
	//DPSDK_BOOL bEnable;											// Enable
	DPSDK_CHAR szSMTPServer[DPSDK_IP_LEN];							// SMTP mail address
	DPSDK_INT32 iSMTPPort;											// SMTP port
	DPSDK_INT32 iEncryptType;										// Encrypt type see DPSDK_MAIL_ENCRYPT_TYPE
																	//DPSDK_CHAR szPWD[DPSDK_PWD_LEN];								// Password
	DPSDK_CHAR szSenderMailAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];	// The mail of sender
	DPSDK_CHAR szRecipientMailAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];// Sending test mail
}DPSDK_MAIL_CONFIG_BASE_INFO;

typedef struct
{
	DPSDK_BOOL bEnable;											// Enable
	DPSDK_MAIL_CONFIG_BASE_INFO struMailConfig;
}DPSDK_GET_MAIL_CONFIG_PARAM;

typedef struct
{
	DPSDK_BOOL bEnable;											// Enable
	DPSDK_CHAR szPWD[DPSDK_PWD_LEN];								// Password
	DPSDK_MAIL_CONFIG_BASE_INFO struMailConfig;
}DPSDK_SAVE_MAIL_CONFIG_PARAM;

typedef struct
{
	DPSDK_CHAR szPWD[DPSDK_PWD_LEN];								// Password
	DPSDK_MAIL_CONFIG_BASE_INFO struMailConfig;
}DPSDK_TEST_MAIL_CONFIG_PARAM;

typedef struct
{
	DPSDK_INT32 iPort;															// port
	DPSDK_CHAR szIP[DPSDK_IP_LEN];												// Ip
	DPSDK_ACUPICK_KEY_INFO	struKeyInfo;
}DPSDK_GET_FEATURE_ANALYZE_SERVER_INFO;

typedef struct
{
	DPSDK_INT32 iFeatureAnalyseMode;											// 1:device 2:platform
	DPSDK_GET_FEATURE_ANALYZE_SERVER_INFO	struServerInfo;
}DPSDK_GET_FEATURE_ANALYZE_CONFIG_PARAM;

// User statue
typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];								// User name
	DPSDK_UINT32 uiTotalTimes;										// The total number of login
	DPSDK_UINT32 uiTotalLoginTime;									// The total time of login
	DPSDK_TIMET tLastLoginTime;										// The time of last login
}DPSDK_USER_STATUS_INFO;

// The list of user status
typedef struct
{
	DPSDK_INT32 iUserStatusNum;										// The number of user status
	DPSDK_USER_STATUS_INFO szUserStatusList[DPSDK_MAX_USER_NUM];	// The list of user status
}DPSDK_USER_STATUS_LIST;

// The parameter of query device status
typedef struct
{
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
	DPSDK_TIMET tBeginTime;											// Start time
	DPSDK_TIMET tEndTime;											// End time
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Query organization code
}DPSDK_QUERY_DEVICE_STATUS_PARAM;

// Device status information 
typedef struct
{
	DPSDK_TIMET tTime;												// The time of device on-line and off-line
	DPSDK_INT32 iStatus;											// Device status
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_IP struIP;												// Device ip
}DPSDK_DEVICE_STATUS_INFO;

#define DPSDK_MAX_DEVICE_NUM		100								// Max number of single query
// The list of device status
typedef struct
{
	DPSDK_INT32 iDeviceStatusNum;									// The number of device status
	DPSDK_DEVICE_STATUS_INFO szDeviceStatusList[DPSDK_MAX_DEVICE_NUM];// The list of device status
}DPSDK_DEVICE_STATUS_LIST;

// The parameter of query device health report
typedef struct
{
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Query organization code
}DPSDK_QUERY_DEVICE_HEALTH_REPORT_PARAM;

// The information of device health report
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_INT32 iType;												// Device type
	DPSDK_IP struIP;												// Device ip
	DPSDK_INT32 iStatus;											// Device on-line status 
	DPSDK_INT32 iHardDiskStatus;									// Hard disk status
	DPSDK_BOOL bVideoLoss;											// Video loss
	DPSDK_BOOL bTampering;											// Video tampering 
	DPSDK_BOOL bExternalAlarm;										// External alarm
	DPSDK_BOOL bManualRecord;										// Manual record
	DPSDK_BOOL bAutoRecord;											// Auto record
}DPSDK_DEVICE_HEALTH_REPORT_INFO;

// The list of device health report
typedef struct
{
	DPSDK_INT32 iDeviceHealthReportNum;													// The number of device health report
	DPSDK_DEVICE_HEALTH_REPORT_INFO szDeviceHealthReportList[DPSDK_MAX_DEVICE_NUM];		// The list of device health report
}DPSDK_DEVICE_HEALTH_REPORT_LIST;

// Query log parameter
typedef struct
{
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
	DPSDK_INT32 iEventType;											// Query module event
	DPSDK_TIMET tBeginTime;											// Start time
	DPSDK_TIMET tEndTime;											// End time
}DPSDK_QUERY_LOG_PARAM;

typedef struct
{
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN_EX];						// The keywords of search
	DPSDK_INT32 iEventTypeCount;									// event type count
	DPSDK_CUSTOM_ALARM_ID* pEventTypeList;							// event type list
	DPSDK_TIMET tBeginTime;											// Start time
	DPSDK_TIMET tEndTime;											// End time
	DPSDK_TIMET	tSplitTime;
	DPSDK_CHAR	szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32	iCurrentPage;
	DPSDK_CHAR szSequence[DPSDK_SEQUENCE_LEN];						// cancel Sequence
}DPSDK_QUERY_OPERATE_LOG_PARAM;

// Log information
typedef struct
{
	DPSDK_TIMET tTime;												// Operate time
	DPSDK_INT32 iEventType;											// Query module event
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// Operator name
	DPSDK_CHAR szEventContent[DPSDK_CONTENT_LEN_2048];		// Event content
	DPSDK_IP struIP;												// Operator ip
}DPSDK_LOG_INFO;

typedef enum
{
	DPSDK_OPERATE_RESULTTYPE_FAIL = 0,
	DPSDK_OPERATE_RESULTTYPE_SUCESS = 1,
	DPSDK_OPERATE_RESULTTYPE_EMPTY,
}DPSDK_OPERATE_RESULTTYPE;
typedef struct
{
	DPSDK_CHAR szID[DPSDK_ID_LEN];												// record id
	DPSDK_TIMET tTime;												// Operate time
	DPSDK_CHAR	szEventTypeCode[DPSDK_ID_LEN];						// event type code
	DPSDK_CHAR  szEventTypeName[DPSDK_ALARM_ALARMTYPENAME_LEN];						// event type name
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// Operator name
	DPSDK_CHAR szEventContent[DPSDK_CONTENT_LEN_8192];		// Event content
	DPSDK_OPERATE_RESULTTYPE eResultType;					//operator result
	DPSDK_IP struIP;												// Operator ip
}DPSDK_OPERATE_LOG_INFO;

// The detail information of acess
typedef struct
{
	DPSDK_CHAR szDevCode[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_CHAR szDevMode[DPSDK_MEMO_LEN];							// Device module
	DPSDK_CHAR szSoftVersion[DPSDK_MEMO_LEN];						// soft version
	DPSDK_INT32 iRecordCount;										// The number of record
	DPSDK_INT32 iAlarmCount;										// The number of alarm
}DPSDK_ACCESS_DOOR_DETAIL;

#define DPSDK_MAX_LOG_NUM		100									// Max number of log single query
// The list of log
typedef struct
{
	DPSDK_INT32 iLogNum;											// The number of log
	DPSDK_LOG_INFO szLogList[DPSDK_MAX_LOG_NUM];					// The list of log
}DPSDK_LOG_LIST;

typedef struct
{
	DPSDK_INT32 iLogNum;											// The number of log
	DPSDK_OPERATE_LOG_INFO szLogList[DPSDK_MAX_LOG_NUM];					// The list of log
}DPSDK_OPERATE_LOG_LIST;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_CODE_LEN];
	DPSDK_CHAR szServerIp[DPSDK_IP_LEN];
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];
	DPSDK_INT32	iServerType; //1=Host，2=sub，3=standby
	DPSDK_INT32 iStatus;	// 0=offline，1=online
}DPSDK_GET_SERVER_INFO;

typedef struct
{
	DPSDK_INT32 iServerNum;
	DPSDK_GET_SERVER_INFO* pServerInfo;
}DPSDK_GET_SERVER_LIST;

typedef struct
{
	DPSDK_CHAR szEventTypeCode[DPSDK_ID_LEN];					// event type code
	DPSDK_CHAR szEventTypeName[DPSDK_ALARM_ALARMTYPENAME_LEN];	// event type name
	DPSDK_UINT32 uiSort;
}DPSDK_OPERATE_EVENTTYPE_INFO;

typedef struct
{
	DPSDK_INT32 iGroupID;							//group id
	DPSDK_CHAR szGroupName[DPSDK_ORG_NAME_LEN];		//group name
	DPSDK_UINT32 uiSort;
	DPSDK_INT32 iTotalCount;						// total count
	DPSDK_OPERATE_EVENTTYPE_INFO* pEventTypeList;	// the list of eventtype
}DPSDK_OPERATE_EVENTTYPE_LIST;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_OPERATE_EVENTTYPE_LIST* pResultList;
}DPSDK_OPERATE_EVENTTYPE_RESULT;

typedef struct
{
	DPSDK_INT32 iTotalCount;						// total count
	DPSDK_OPERATE_EVENTTYPE_INFO* pEventTypeList;	// the list of eventtype
}DPSDK_SYSTEM_EVENTTYPE_LIST;
// Sub-service information
typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];								// Server name
	DPSDK_INT32 iType;												// Server type
	DPSDK_INT32 iRunningStatus;										// Run status
}DPSDK_CHILD_SERVER_INFO;

// Server status information
#define DPSDK_MAX_CHILD_SERVER_NUM		100							// Max number of sub-service
typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];								// Service name
	DPSDK_IP struIP;												// Service ip
	DPSDK_INT32 iType;												// Service type
	DPSDK_INT32 iRunningStatus;										// Run status
	DPSDK_INT32 iEnableStatus;										// Enable status
	DPSDK_INT32 iServerId;											// Service code

	DPSDK_INT32 iServerNum;											// The number of service
	DPSDK_CHILD_SERVER_INFO szServer[DPSDK_MAX_CHILD_SERVER_NUM];	// The list of service
}DPSDK_SERVER_STATUS_INFO;

#define DPSDK_MAX_SERVER_NUM		100								// Max number of service single query
// The list of service status
typedef struct
{
	DPSDK_INT32 iStatusInfoNum;										// The number of service status
	DPSDK_SERVER_STATUS_INFO szStatusInfoList[DPSDK_MAX_SERVER_NUM];// The list of service status
}DPSDK_SERVER_STATUS_LIST;

// Service information
typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];								// Service name
	DPSDK_INT32 iPort;												// Service port
	DPSDK_INT32 iStatus;											// Service status
}DPSDK_REMOTE_SERVER_INFO;

// The list of service
typedef struct
{
	DPSDK_INT32 iServerNum;											// The number of service
	DPSDK_REMOTE_SERVER_INFO szServerList[1];						// The list of service
}DPSDK_SERVER_LIST;

// Export system log parameter
typedef struct
{
	/* public */
	DPSDK_CHAR  szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
	DPSDK_INT32 iExportType;										// Export type see DPSDK_EXPORT_LOG_TYPE
	DPSDK_INT32 iEventType;											// Query module event
	DPSDK_TIMET tBeginTime;											// Start time
	DPSDK_TIMET tEndTime;											// End time
	DPSDK_CHAR* pLocal;												// International
}DPSDK_EXPORT_SERVER_LOG_PARAM;
// Export user log parameter
typedef struct
{
	/* public */
	DPSDK_CHAR  szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
	DPSDK_INT32 iExportType;										// Export type see DPSDK_EXPORT_LOG_TYPE
	DPSDK_INT32 iEventTypeCount;									// event type count
	DPSDK_CUSTOM_ALARM_ID* pEventTypeList;							// event type code list
	DPSDK_TIMET tBeginTime;											// Start time
	DPSDK_TIMET tEndTime;											// End time
	DPSDK_INT32 iExportStartNo;										// export start num ,from 1 strart,0 all export
	DPSDK_INT32 iExportNumber;										// export number
	DPSDK_INT32 iDisplayTimezoneOffset;								// display timezone, 0 no display,1 display


	DPSDK_INT32					iExportRange;								// 0=export all，1=export select，2=export custom，default 0
	DPSDK_GENERAL_ID_LIST		struSelectIds;
	DPSDK_CHAR					szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_CHAR					szCredence[DPSDK_TOKEN_LEN];
}DPSDK_EXPORT_USER_LOG_PARAM;

// export service debug log
typedef struct
{
	DPSDK_CHAR szServiceCode[DPSDK_CODE_LEN];
	DPSDK_TIMET tExportTime;
	DPSDK_CHAR	szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_CHAR	szCredence[DPSDK_TOKEN_LEN];
}DPSDK_EXPORT_SERVICE_DEBUG_LOG_PARAM;

// Change service status
typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];								// Service name
	DPSDK_INT32 iOperation;											// Operate
	DPSDK_INT32 iPort;												// Service port
}DPSDK_CHANGE_SERVER_INFO;

// Change service status
typedef struct
{
	DPSDK_BOOL bStartAll;											// true Open all services, false Close all services
}DPSDK_CHANGE_SERVER_STATUS_PARAM;

// Change service ip, port, the mapping of internal and external network
typedef struct
{
	DPSDK_BOOL bMain;												// Is it main model, true/false,will options
	DPSDK_IP struRegisterIP;										// Register ip (CMS address), will options
	DPSDK_INT32 iRegisterPort;										// Register port(CMS port),will options
	DPSDK_IP struMainIP;											// Host ip, the default value is registerIp，optional
	DPSDK_INT32 iMainPort;										// Host port, the default value is port tomcat visite, optional
	DPSDK_IP struMappingIP;											// Mapping ip，optional
}DPSDK_CONFIG_SERVER_INFO;

// The information of server function
typedef struct
{
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];						// Service name
	DPSDK_INT32 iStatus;											// Status: 1 open, 0 close
}DPSDK_SERVER_FUNCTION_INFO;

// The list of server function
typedef struct
{
	DPSDK_UINT32 uiTotal;											// The number of server function
	DPSDK_SERVER_FUNCTION_INFO struFunctionList[1];					// The list of server function
}DPSDK_SERVER_FUNCTION_LIST;

typedef struct
{
	DPSDK_INT32 iUnitEnable;											// Unit Enable
	DPSDK_INT32 iBuildingEnable;										// BuildingEnable Enable
	DPSDK_INT32 iPhaseEnable;											// Phase Enable
	DPSDK_INT32 iRegionType;											// Region Type
}DPSDK_VIDEOINTERCOM_CONFIG_INFO;

typedef struct
{
	DPSDK_BOOL bSSLEnable;											// SSL enable
	DPSDK_CHAR szServer[DPSDK_DOMAIN_LEN];							// Domain ID or Ip
	DPSDK_INT32 iPort;												// Port
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name	
	DPSDK_BOOL	bSynEnable;											// Auto sync enable
	DPSDK_CHAR szSynTime[DPSDK_TIME_LEN];							// Auto sync time
}DPSDK_LDAP_CONFIG_BASE_INFO;

typedef struct
{
	DPSDK_BOOL bEnable;												// Is it enabled: 0-No, 1-Yes
	DPSDK_CHAR szDN[DPSDK_DN_LEN];									//DN
	DPSDK_LDAP_CONFIG_BASE_INFO struLdapBaseInfo;
}DPSDK_GET_LDAP_CONFIG_PARAM;

typedef struct
{
	DPSDK_CHAR szPwd[DPSDK_PWD_LEN];								// Domain password, AES encryption, If it is blank, use the original password, optional
	DPSDK_LDAP_CONFIG_BASE_INFO struLdapBaseInfo;
}DPSDK_GET_LDAP_DN_PARAM;

typedef struct
{
	DPSDK_CHAR szDN[DPSDK_DN_LEN];									//DN
}DPSDK_LDAP_DN_INFO;

typedef struct
{
	DPSDK_BOOL bEnable;												// Is it enabled: 0-No, 1-Yes
	DPSDK_CHAR szPwd[DPSDK_PWD_LEN];								// Domain password, AES encryption, If it is blank, use the original password, optional
	DPSDK_CHAR szDN[DPSDK_DN_LEN];									// DN
	DPSDK_LDAP_CONFIG_BASE_INFO struLdapBaseInfo;
}DPSDK_SAVE_LDAP_CONFIG_PARAM;

typedef struct
{
	DPSDK_CHAR szPwd[DPSDK_PWD_LEN];								// Domain password, AES encryption, If it is blank, use the original password, optional
	DPSDK_CHAR szDN[DPSDK_DN_LEN];									//DN
	DPSDK_LDAP_CONFIG_BASE_INFO struLdapBaseInfo;
}DPSDK_TEST_LDAP_CONFIG_PARAM;

typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_ID_LEN];							// Role Id
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];
}DPSDK_ROLE_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];									// Domain Org Sync ID
	DPSDK_CHAR szDomainOrgCode[DPSDK_ID_LEN];						// Domain Org Sync Code
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];							// Domain Org Sync Name
	DPSDK_CHAR szDomainOrgDN[DPSDK_DOMAIN_ORG_DN_LEN];
	DPSDK_INT32 iDomainOrgType;										// Domain Org Type, 1:Org 2:Group
	DPSDK_INT32 iRolesCount;										// Roles Count
	DPSDK_ROLE_INFO* pRolesList;									// Roles List
}DPSDK_DOMAIN_ORG_SYNC_LIST;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total Count
	DPSDK_INT32 iOrgSynsCount;										// Organization Syns Count
	DPSDK_DOMAIN_ORG_SYNC_LIST* pOrgSynsList;						// Organization Syns List
}DPSDK_DOMAIN_ORG_SYNCS_INFO;

typedef struct
{
	DPSDK_CHAR	szUsername[DPSDK_NAME_LEN];							// Domain Username 
	DPSDK_CHAR	szReason[DPSDK_MEMO_LEN];							// Failed Reason
}DPSDK_SYN_DOMAIN_ORG_USERS_RESULT;

typedef struct
{
	DPSDK_CHAR  szSession[DPSDK_ID_LEN];							// Session ID
	DPSDK_INT32 iStatus;											// status
	DPSDK_INT32 iErrorCode;											// error Code
	DPSDK_INT32 iFailedCount;										// Failed Users Count
	DPSDK_SYN_DOMAIN_ORG_USERS_RESULT* pFailedUsersList;			// Failed Users List
}DPSDK_SYN_DOMAIN_ORG_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szServerCode[DPSDK_IP_LEN];							// Server Code 
	DPSDK_CHAR	szServerIP[DPSDK_IP_LEN];							// Server IP 
	DPSDK_INT32 iErrorCode;											// error Code
}DPSDK_DAYLIGHT_MULTIZONE_CONFIG_ABNORMAL_NOTIFY;

typedef struct
{

	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];
}DPSDK_HTTPS_CERT_EXPORT_RESULT;

typedef struct
{
	DPSDK_CHAR szServers[20][DPSDK_IP_LEN];			//ip/com,最多20个
	DPSDK_INT32 iServersNum;
	DPSDK_CHAR szValidDate[DPSDK_TIME_STRING_LEN];		//有效期，格式：YYYY-MM-DD
	DPSDK_CHAR szCountry[DPSDK_CERT_AREA_LEN];
	DPSDK_CHAR szProvince[DPSDK_CERT_AREA_LEN];
	DPSDK_CHAR szCity[DPSDK_CERT_AREA_LEN];
	DPSDK_CHAR szOrganization[DPSDK_CERT_AREA_LEN];
	DPSDK_CHAR szDepartment[DPSDK_CERT_AREA_LEN];
}DPSDK_HTTPS_CERT_GENERATEPARAM;


typedef enum
{
	DPSDK_HTTPS_CERT_TYPE_UNKNOW = 0, //未知
	DPSDK_HTTPS_CERT_TYPE_SELF = 1, //自健
	DPSDK_HTTPS_CERT_TYPE_IMPORT = 2,	//导入
}DPSDK_HTTPS_CERT_TYPE;

typedef struct
{
	DPSDK_HTTPS_CERT_TYPE eSource;					//证书来源
	DPSDK_CHAR szValidDate[DPSDK_TIME_STRING_LEN];		//有效期，格式：YYYY-MM-DD
	DPSDK_CHAR szIssuer[DPSDK_CERT_ISSUER_LEN];								//颁发者
	DPSDK_CHAR szServers[20][DPSDK_IP_LEN];			//ip/com,最多20个
	DPSDK_INT32 iServersNum;

}DPSDK_HTTPS_CERT_GETDETIAL_RESULT;

typedef struct
{
	DPSDK_CHAR *szCertData;
	DPSDK_INT32 iCertDataLen;
	DPSDK_CHAR *szPrivatekeyData;
	DPSDK_INT32 iPrivatekeyData;
	DPSDK_CHAR szPrivatekeyPassword[DPSDK_CERT_KEY_LEN];
}DPSDK_HTTPS_CERT_IMPORT_PARAM;

typedef struct
{
	DPSDK_BOOL		bEnable;
	DPSDK_INT32		iType;
	DPSDK_INT32		iPort;
	DPSDK_CHAR		szIP[DPSDK_IP_LEN];
	DPSDK_CHAR		szDbUser[DPSDK_NAME_LEN];							// DB user
	DPSDK_CHAR		szDbPassword[DPSDK_PWD_LEN];						// Db Password
}DPSDK_OUTSIDE_DATABASE_INFO;

typedef struct
{
	DPSDK_UINT32			uiDbNum;							// The number of DB Type
	DPSDK_INT32*			pDbType;
}DPSDK_SUPPORT_OUTSIDE_DATABASE_TYPE;

typedef struct
{
	DPSDK_INT32 iTimezoneNum;
	DPSDK_TIMEZONE_INFO* pTimezoneList;
}DPSDK_TIMEZONE_LIST;

typedef struct
{
	DPSDK_CHAR szTimezoneId[DPSDK_ID_LEN];							// Time zone ID
	DPSDK_CHAR szTimezoneName[DPSDK_NAME_LEN];						// Time zone name
	DPSDK_CHAR szTimezoneOffset[DPSDK_TIME_LEN];					// Timezone offset, e.g. +08:00
}DPSDK_TIMEZONE_BASE_INFO;

typedef struct
{
	DPSDK_INT32 iXmlDataLen;										// XML data length
	DPSDK_CHAR* pXMLData;											// XML data
}DPSDK_XML_DATA;

typedef struct
{
	DPSDK_CHAR szManufacturerCode[DPSDK_ID_LEN];					// manu code
	DPSDK_CHAR szManufacturerName[DPSDK_NAME_LEN];					// manu name
}DPSDK_SNMP_MANU_INFO;

typedef struct
{
	DPSDK_INT32 iSNMPManuNum;
	DPSDK_SNMP_MANU_INFO* pSNMPManuList;
}DPSDK_SNMP_MANU_LIST;

typedef enum
{
	DPSDK_DEVICE_PROTOCOL_TYPE_DAHUA = 1,							// Dahua protocol
	DPSDK_DEVICE_PROTOCOL_TYPE_HIKVISION = 2,						// HIKVISION protocol
	DPSDK_DEVICE_PROTOCOL_TYPE_ONVIF = 99,							// Onvif protocol
	DPSDK_DEVICE_PROTOCOL_TYPE_JIUZHOU = 185,						// JIUZHOU protocol
}DPSDK_DEVICE_PROTOCOL_TYPE_e;

typedef enum
{
	DPSDK_STREAM_PROTOCOL_TYPE_TCP = 1,								// TCP stream protocol
	DPSDK_STREAM_PROTOCOL_TYPE_UDP = 2,								// UDP stream protocol
	DPSDK_STREAM_PROTOCOL_TYPE_HTTP = 3,							// HTTP stream protocol
}DPSDK_STREAM_PROTOCOL_TYPE_e;

typedef enum
{
	DPSDK_DEVICE_SERIES_TRAFFIC_FLOW_CAMERA = 2,					// traffic flow camera
	DPSDK_DEVICE_SERIES_DAHUA_SMART_BOX = 3,						// Dahua smart box
	DPSDK_DEVICE_SERIES_DAHUA_ITC = 4,								// Dahua ITC
	DPSDK_DEVICE_SERIES_DAHUA_SPEEDOMETER = 5,						// Dahua speedometer
}DPSDK_DEVICE_SERIES_e;

typedef enum
{
	DPSDK_DEVICE_MANFAC_DAHUA = 1,									// Dahua
	DPSDK_DEVICE_MANFAC_HIKVISION = 2,								// HIKVISION
	DPSDK_DEVICE_MANFAC_OTHER = 3,									// other
	DPSDK_DEVICE_MANFAC_JIUZHOU = 185,								// JIUZHOU
}DPSDK_DEVICE_MANFAC_e;

typedef enum
{
	DEVICE_ADD_TYPE_IP_ADDR = 1,									// IP address
	DEVICE_ADD_TYPE_IP_SEGMENT = 2,									// IP segment
	DEVICE_ADD_TYPE_DOMAIN_NAME = 3,								// Domain name
	DEVICE_ADD_TYPE_ACTIVE_REGISTER = 4,							// Active registration
	DEVICE_ADD_TYPE_P2P = 5,										// P2P add device
}DPSDK_DEVICE_ADD_TYPE_e;

typedef enum
{
	DPSDK_CHANNEL_SUBTYPE_NORMAL_VIDEO = 0,							// Normal video
	DPSDK_CHANNEL_SUBTYPE_VISIBLE_LIGHT = 1,						// Visible light
	DPSDK_CHANNEL_SUBTYPE_THERMAL_IMAGING = 2,						// Thermal imaging
}DPSDK_CHANNEL_SUBTYPE_e;

typedef enum
{
	DPSDK_LED_DISPLAY_DIRECTION_STRAIGHT = 1,						// straight
	DPSDK_LED_DISPLAY_DIRECTION_LEFT = 2,							// left
	DPSDK_LED_DISPLAY_DIRECTION_RIGHT = 3,							// right
	DPSDK_LED_DISPLAY_DIRECTION_STRAIGHT_LEFT = 4,					// straight left
	DPSDK_LED_DISPLAY_DIRECTION_STRAIGHT_RIGHT = 5,					// straight right
	DPSDK_LED_DISPLAY_DIRECTION_NOT_ENABLED = 12,					// Not enabled
	DPSDK_LED_DISPLAY_DIRECTION_PREGNANT = 13,						// pregnant
	DPSDK_LED_DISPLAY_DIRECTION_VEHICLE = 14,						// vehicle
}DPSDK_LED_DISPLAY_DIRECTION_e;

typedef enum
{
	DPSDK_LED_DISPLAY_COLOR_RED = 1,								// red
	DPSDK_LED_DISPLAY_COLOR_GREEN = 2,								// green
	DPSDK_LED_DISPLAY_COLOR_YELLOW = 3,								// yellow
}DPSDK_LED_DISPLAY_COLOR_e;

typedef enum
{
	DPSDK_DECODER_CHANNEL_TYPE_OUT = 1,								// Output channel
	DPSDK_DECODER_CHANNEL_TYPE_DECODING = 2,						// Decoding channel
}DPSDK_DECODER_CHANNEL_TYPE_e;

// Search device's information
typedef struct
{
	DPSDK_CHAR szDummyId[DPSDK_ID_LEN];								// Dummy id,the value of it will to background when join management
	DPSDK_INT32 iInitStatus;										// Initialize status
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_INT32 iDeviceType;										// Device type see DPSDK_DEV_TYPE
	DPSDK_IP struDeviceIP;											// Device ip
	DPSDK_INT32 iDevicePort;										// Device port
	DPSDK_CHAR szMac[DPSDK_MACADDRESS_LEN];							// Mac address
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// User name
	DPSDK_INT32 iDeviceModel;										// Device model see DPSDK_DEVICE_MODEL
	DPSDK_CHAR szDeviceModelStr[DPSDK_DEVICE_MODEL_STR];			// Device model(str)
	DPSDK_CHAR szDeviceSN[DPSDK_SN_LEN];							// serial number
	DPSDK_INT32 iProtocolType;										// Protocol type see DPSDK_DEVICE_PROTOCOL_TYPE
	DPSDK_INT32 iEncChannelNum;										// The number of encode channel
	DPSDK_INT32 iMgrStatus;											// System management status see DPSDK_DEVICE_STATUS_TYPE
	DPSDK_INT32 iManufacturer;
}DPSDK_SEARCH_DEVICE_INFO;

#define DPSDK_MAX_SEARCH_DEVICE_NUM		500							// Max number of device single query



// Search device list
typedef struct
{
	DPSDK_INT32 iSearchDeviceNum;									// The number of search device
	DPSDK_SEARCH_DEVICE_INFO szSearchDevList[1];					// The list of search device
}DPSDK_SEARCH_DEVICE_LIST;

// The request parameter of search device 
typedef struct
{
	DPSDK_IP struStartIP;											// Start IP
	DPSDK_IP struEndIP;												// End IP
	DPSDK_INT32 iProtocolType;										// Protocol type see DPSDK_DEVICE_PROTOCOL_TYPE
	DPSDK_INT32 iStatus;											// see DPSDK_DEVICE_STATUS_TYPE
}DPSDK_SEARCH_DEVICE_PARAM;

// Device join management
typedef struct
{
	DPSDK_INT32 iDummyIdNum;										// The number of dummy id 
	DPSDK_CHAR szDummyIdList[DPSDK_MAX_DEVICE_NUM][DPSDK_ID_LEN];	// The list of dummy id 
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
	DPSDK_CHAR szVideoServerCode[DPSDK_SERVER_CODE_LEN];			// Video server code
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];							// Device password (encrypt)
}DPSDK_SAVE_DEVICE_INFO;

// Add device information
typedef struct
{
	DPSDK_INT32 iAddType;											// Add type:see DPSDK_DEVICE_ADD_TYPE_e
	DPSDK_IP struDeviceIp;											// Device ip
	DPSDK_INT32 iDevicePort;										// Device port
	DPSDK_CHAR szDomain[DPSDK_DOMAIN_LEN];							// Domain
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];							// Device password (encrypt)
	DPSDK_INT32 iProtocolType;										// Agreement: see DPSDK_DEVICE_PROTOCOL_TYPE_e
	DPSDK_INT32 iStreamProtocolType;								// Agreement: see DPSDK_STREAM_PROTOCOL_TYPE_e
	DPSDK_INT32 iEncrypType;										// Encryp type
	DPSDK_CHAR szAccessKey[DPSDK_KEY_LEN];							// Access Key
	DPSDK_CHAR szSecretKey[DPSDK_KEY_LEN];							// Secret Key
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;										// Device type see DPSDK_DEV_TYPE
	DPSDK_CHAR	szDeviceModel[DPSDK_DEVICE_MODEL_LEN];;				// Device model see DPSDK_DEVICE_MODEL
	DPSDK_CHAR szDeviceMacAddress[DPSDK_MACADDRESS_LEN];			// Device mac address
	DPSDK_INT32 iDeviceSeries;										// Device series: see DPSDK_DEVICE_SERIES_e
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szDeviceSn[DPSDK_SN_LEN];							// Device serial number
	DPSDK_CHAR szRegisterId[DPSDK_ID_LEN_EX];						// Register ID
	DPSDK_IP struStartIP;											// Start IP
	DPSDK_IP struEndIP;												// End IP
	DPSDK_INT32 iManFac;											// Manufacturer: see DPSDK_DEVICE_MANFAC_e
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
	DPSDK_INT32 iDevDecodeMode;										// Decode model: 1-direct connection, 2-pull flow, optional filling
	DPSDK_INT32 iSupportConbine;									// Is it support conbine
	DPSDK_CHAR	szServerCode[DPSDK_SERVER_CODE_LEN];				// server code
	DPSDK_INT32 iEncChannelNum;										// The number of encode channel, optional
	DPSDK_INT32 iAlarmInChannelNum;									// he number of alarm input channel, optional
	DPSDK_INT32 iAlarmOutChannelNum;								// The number of alarm output channel, optional
	DPSDK_INT32 iDecChannelNum;										// The number of decode channel, optional
	DPSDK_INT32 iAccessChannelNum;									// The number of acess channel, optional
	DPSDK_INT32 iPosChannelNum;										// The number of pos channel, optional
	DPSDK_INT32 iVirtualChannelNum;									// The number of virtual channel, optional
	DPSDK_INT32 iLedChannelNum;										// The number of led channel, optional
	DPSDK_INT32 iBoxAlarmChannelNum;								// The number of box alarm channel, optional
	DPSDK_INT32 iCviAlarmChannelNum;								// The number of cvi alarm channel, optional
	DPSDK_INT32 iAudioLightAlarmChannelNum;							// The number of audiolight channel, optional
	DPSDK_INT32 iExtraAlarmInChannelNum;							// The number of extra alarm input channel, optional
	DPSDK_INT32 iLiftChannelNum;									// The number of lift channel,optional
	DPSDK_INT32 iLiftFloorNum;										// The number of lift floor,optional
																	//DPSDK_INT32 iLiftFloorStartNo;									// The number of lift start floor,optional
	DPSDK_INT32 iUvssChannelNum;									// The number of uvss channel,optional
	DPSDK_INT32 iLiftEnable;										// Lift enable,0-No,1-Yes
	DPSDK_INT32 iGateChannelNum;									// The number of gate channel,optional
	DPSDK_INT32 iBoxAlarmOutChannelNum;							// The number of box alarm out,optional

	DPSDK_CHAR szSipId[DPSDK_ID_LEN];								// Vttalk SIP-ID
	DPSDK_CHAR szSipPwd[DPSDK_PWD_LEN];								// Vttalk SIP password(cipher)
	DPSDK_INT32 iBuildingEnable;									// Building enable, 0-No, 1-Yes
	DPSDK_INT32 iUnitEnable;										// Unit enable, 0-No, 1-Yes 
	DPSDK_INT32 iPhaseEnable;										// Phase enable, 0-No, 1-Yes 
	DPSDK_INT32 iLedWidth;											// LED equipment specification: wide. Jiuzhou agreement use, optional
	DPSDK_INT32 iLedHeight;											// LED equipment specification: height. Jiuzhou agreement use, optional
	DPSDK_INT32 iTranscoder;										// Whether to use Haikang private stream: 0 = no; 1 = yes, select
	DPSDK_CHAR szTimezoneId[DPSDK_ID_LEN];							// Time zone ID
	DPSDK_INT32 iDstEnable;											// Daylight time enable: 0-off, 1-on
	DPSDK_INT32 iDstType;											// Daylight time type, 1-date mode, 2-week mode
	DPSDK_INT32 iOutRtspPort;										// Device output rtsp port
	DPSDK_TIME_INFO struDstBeginTime;
	DPSDK_TIME_INFO struDstEndTime;
	DPSDK_INT32 iTimeSyncStatus;									// Synchronization status: 0-failure, 1-success, 2-issuing, 3-not supported, optional
	DPSDK_INT32 iIsVideoNexus;										//Is Video Nexus 1:yes 0:no
	DPSDK_INT32 iParkingStatisticsMode;								// Statistics Mode
	DPSDK_INT32 iParkingSpaceCount;
	DPSDK_INT32 iLedPartitionCount;
	DPSDK_INT64 iCapability;										// Device capability
	DPSDK_CHAR szCardNo[DPSDK_ID_LEN];								// Card No
	DPSDK_INT32 iEASChannelCount;									// EAS Channel Count
	DPSDK_INT32 iIPSpeakerAudioChannelCount;						// The number of IPSpeaker device audio channel count
	DPSDK_INT32 iEnableRtspTls;										//Onvif support RTSP OVER TSL 0:close 1:open
	DPSDK_INT32 iAlarmSignalChannelCount;
	DPSDK_INT32 iCardAuth;											// Card Authorization: 0-not support，1=support
	DPSDK_INT32 iFaceAuth;											// Face Authorization: 0-not support，1=support
	DPSDK_INT32 iFingerPrintAuth;									// FingerPrint Authorization: 0-not support，1=support
	DPSDK_CHAR szUnlockModes[DPSDK_ID_LEN_EX];						// Suport Unlock mode:0,1,2,3,4,5,6...
	DPSDK_INT32 iLinkMode;											// Link Mode:0=persistent connection, 1=short connection
	DPSDK_INT32	iMaxBatchIssuePersons;								// The access control device supports the maximum number of personnel to be issued in batches, default 1, optional
	DPSDK_INT32	iSubSystemCount;									// sub system count
	DPSDK_INT32 iNetWork;											// netWork Mode,TV WALL is must

	DPSDK_CHAR	szSnmpReadCredential[DPSDK_NAME_LEN];				// snmp read Community
	DPSDK_CHAR	szSnmpWriteCredential[DPSDK_NAME_LEN];				// snmp write Community
	DPSDK_INT32 iSnmpAuthVersion;									// snmp auth version 1=v1，2=v2，3=v3
	DPSDK_INT32 iSnmpAuthType;										// snmp auth type 1=MD5，2=SHA
	DPSDK_CHAR	szSnmpAuthUser[DPSDK_NAME_LEN];						// snmp auth user
	DPSDK_CHAR	szSnmpAuthPassword[DPSDK_PWD_LEN];					// snmp auth password
	DPSDK_INT32 iSnmpEncryptType;									// snmp Encrypt type 1=CBC-DES，2=CFB-AES
	DPSDK_CHAR	szSnmpEncryptPassword[DPSDK_PWD_LEN];				// snmp Encrypt password
}DPSDK_ADD_DEVICE_INFO;

// Add device information
typedef struct
{
	DPSDK_INT32 iAddType;											// Add type:see DPSDK_DEVICE_ADD_TYPE_e
	DPSDK_IP struDeviceIp;											// Device ip
	DPSDK_INT32 iDevicePort;										// Device port
	DPSDK_CHAR szDomain[DPSDK_DOMAIN_LEN];							// Domain
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];							// Device password (encrypt)
	DPSDK_INT32 iProtocolType;										// Agreement: see DPSDK_DEVICE_PROTOCOL_TYPE_e
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;										// Device type see DPSDK_DEV_TYPE
	DPSDK_CHAR	szDeviceModel[DPSDK_DEVICE_MODEL_LEN];;				// Device model see DPSDK_DEVICE_MODEL
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szDeviceSn[DPSDK_SN_LEN];							// Device serial number
	DPSDK_CHAR szRegisterId[DPSDK_ID_LEN_EX];						// Register ID
	DPSDK_INT32 iManFac;											// Manufacturer: see DPSDK_DEVICE_MANFAC_e
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
	DPSDK_CHAR	szServerCode[DPSDK_SERVER_CODE_LEN];				// server code
}DPSDK_DEVICE_BASE_INFO;

typedef struct
{
	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];							// File download URL
}DPSDK_FILE_URL;

typedef struct
{
	DPSDK_CHAR	szGroupName[DPSDK_NAME_LEN_MAX];					// Group Name
}DPSDK_GROUP_NAME;

typedef struct
{
	DPSDK_INT32 iDeviceNum;											// Device number
	DPSDK_DEVICE_BASE_INFO* pDeviceList;							// Device list
}DPSDK_ADD_DEVICE_LIST;

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];						// Session ID
}DPSDK_BATACH_ADD_DEVICES_RESULT;

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];						// Session ID
	DPSDK_INT32 iSuccessfulCount;									// Successful count
	DPSDK_INT32 iFailedCount;										// Failed count
}DPSDK_BATACH_ADD_DEVICES_NOTIFY;

// Organization device condition
typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;								// page Info
	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN_EX];						// The keywords of search
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;										// Device type
	DPSDK_INT32 iStatus;											// User status
	DPSDK_INT32 iDomain;											// Domain info
	DPSDK_INT32 iPermitted;
	DPSDK_CHAR szSourceType[DPSDK_ORG_CODE_LEN];					// Source type,1=plateform, 3=Third party, empty = All
	DPSDK_INT32 iContainChild;										// Inclusion of subsets: 0=No, 1=Yes, default 1
}DPSDK_GET_DEVICE_BY_PAGE_PARAM;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_IP struDeviceIp;											// Device ip
	DPSDK_IP struRegisterIp;										// Register ip
	DPSDK_INT32 iStatus;											// Device status
	DPSDK_CHAR szDeviceModel[DPSDK_NAME_LEN];						// Device model see DPSDK_DEVICE_MODEL
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// server code
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];						// Server name
	DPSDK_CHAR szDomainId[DPSDK_ID_LEN];							// Domain Id
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_CHAR szDeviceCategoryName[DPSDK_NAME_LEN];				// Device category name
	DPSDK_INT32 iDeviceType;										// Device type see DPSDK_DEV_TYPE
	DPSDK_CHAR szDeviceTypeName[DPSDK_NAME_LEN];					// Device type name
	DPSDK_CHAR szOfflineReasonCode[DPSDK_ID_LEN_EX];				// Offline Reason code
	DPSDK_CHAR szOfflineReasonDesc[DPSDK_MEMO_LEN];					// Offline Reason description
	DPSDK_INT32 iManufacturer;										// 1-dahua，2-haikang，3-oher，185-jiuzhou
	DPSDK_CHAR szManufacturer[DPSDK_NAME_LEN];
	DPSDK_INT32 iProtocolType;										// 1-dahua，2-haikang，99-Onvif，185-jiuzhou
	DPSDK_CHAR szProtocolTypeName[DPSDK_NAME_LEN];
	DPSDK_INT32 iEditEnable;										// Edit enable
	DPSDK_INT32 iDeleteEnable;										// Delete enable
	DPSDK_INT32 iWebEnable;											// Web enable
}DPSDK_DEVICE_INFO_BY_PAGE;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iDeviceNum;
	DPSDK_DEVICE_INFO_BY_PAGE* pDeviceList;
}DPSDK_DEVICE_LIST_BY_PAGE;

typedef struct
{
	DPSDK_IP struDeviceIp;											// Device ip
	DPSDK_INT32 iDevicePort;										// Device port
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login Name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];							// Device password (encrypt)
}DPSDK_DEVICE_BASE_PARAM;

typedef struct
{
	DPSDK_DEVICE_BASE_PARAM struDevBaseParam;
	DPSDK_INT32 iProtocolType;										// Protocol type see DPSDK_DEVICE_PROTOCOL_TYPE_e
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDiscoverTimeout;									// Timeout
	DPSDK_CHAR szServerCode[DPSDK_ID_LEN];							// Server code
}DPSDK_GET_DEVICE_SUMMARY_PARAM;

typedef struct
{
	DPSDK_DEVICE_BASE_PARAM struDevBaseParam;
	DPSDK_INT32 iProtocolType;										// Protocol type see DPSDK_DEVICE_PROTOCOL_TYPE_e
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_CHAR szServerCode[DPSDK_ID_LEN];							// Server code
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device code
}DPSDK_GET_ENC_DEVICE_COST_TIME_PARAM;

typedef struct
{
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;										// Device type: see DPSDK_DEV_TYPE
	DPSDK_CHAR  szDeviceModel[DPSDK_SN_LEN];						// Device model: see DPSDK_DEVICE_MODEL
	DPSDK_INT32 iManufacturer;										// Manufacturer: 1-dahua，2-haikang，4-anxunshi，5-yushi, 6=boshi, 246=others
	DPSDK_CHAR szDeviceMacAddress[DPSDK_MACADDRESS_LEN];			// Device mac address
	DPSDK_INT32 iDeviceSeries;										// Device series: see DPSDK_DEVICE_SERIES_e
	DPSDK_CHAR	szDeviceSN[DPSDK_SN_LEN];							// Device serial number
	DPSDK_INT32 iStreamType;										// Code stream type see DPSDK_STREAM_TYPE
	DPSDK_INT32 iSupportCombine;									// Whether or not to support combine: 0-Nn, 1-Yes
	DPSDK_INT32 iZeroChnlEncode;									// Whether or not to be zero channel encode: 0-Nn, 1-Yes
	DPSDK_INT32 iAlarmInChannelCount;								// The number of Alarm Input Channel
	DPSDK_INT32 iAlarmOutChannelCount;								// The number of Alarm Output Channel
	DPSDK_INT32 iEncoderChannelCount;								// The number of Encoder Channel
	DPSDK_INT32 iDecoderChannelCount;								// The number of Decoder Channel
	DPSDK_INT32 iAccessChannelCount;								// The number of Access Channel
	DPSDK_INT32 iGateChannelCount;									// The number of Gate Channel
	DPSDK_INT32 iLiftChannelCount;									// The number of Lift Channel
	DPSDK_INT32 iVirtualChannelCount;								// The number of Virtual Channel
	DPSDK_INT32 iAudioLightAlarmChannelCount;						// The number of AudioLight Channel
	DPSDK_INT32 iExtraAlarmInChannelCount;							// The number of Extra Alarm Input Channel
	DPSDK_INT32 iPosChannelCount;									// The number of POS Channel
	DPSDK_INT32 iLedChannelCount;									// The number of Led Channel
	DPSDK_INT32 iAlarmBoxChannelCount;								// The number of Alarm Box Channel
	DPSDK_INT32 iCviAlarmChannelCount;								// The number of CVI Alarm Channel
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];								// Vtcall SIP-ID
	DPSDK_CHAR szSipPwd[DPSDK_PWD_LEN];								// Vtcall SIP password
	DPSDK_INT32 iBuildingEnable;									// Building enable, 0-No, 1-Yes
	DPSDK_INT32 iUnitEnable;										// Unit enable, 0-No, 1-Yes 
	DPSDK_INT32 iPhaseEnable;										// Phase enable, 0-No, 1-Yes 
	DPSDK_INT32 iLiftEnable;										// Lift enable, 0-No, 1-Yes 
	DPSDK_CHAR szTimezoneId[DPSDK_ID_LEN];							// Time zone ID
	DPSDK_CHAR szTimezoneName[DPSDK_NAME_LEN];						// Time zone name
	DPSDK_INT32 iDstEnable;											// Daylight time enable: 0-off, 1-on
	DPSDK_INT32 iDstType;											// Daylight time type, 1-date mode, 2-week mode
	DPSDK_TIME_INFO struDstBeginTime;
	DPSDK_TIME_INFO struDstEndTime;
	DPSDK_INT32 iTimeSyncStatus;									// Synchronization status: 0-failure, 1-success, 2-issuing, 3-not supported, optional
	DPSDK_INT32 iVideoNexus;										// Is Video Nexus :1 yes  0 no
	DPSDK_INT32 iParkingStatisticsMode;								// Statistics Mode
	DPSDK_INT32 iParkingSpaceCount;
	DPSDK_INT32 iLedPartitionCount;
	DPSDK_INT32 iEASChannelCount;									// The number of EAS Channel
	DPSDK_INT32 iIPSpeakerAudioChannelCount;						// The number of Audio Channel Count
	DPSDK_INT64  iCapability;										// Device capability
	DPSDK_INT32 iAlarmSignalChannelCount;
	DPSDK_INT32 iSupportFingerPrintAuth;							// Whether fingerprint authentication is supported: 0-unknown (before compatibility), 1-not supported, 2-supported
	DPSDK_INT32 iSupportCardAuth;									// Whether Card authentication is supported: 1-yes, 0-no
	DPSDK_INT32 iSupportFaceAuth;									// Whether **** authentication is supported: 1-yes, 0-no
	DPSDK_CHAR	szUnlockModes[DPSDK_ID_LEN_EX];						//  Suport Unlock mode:0,1,2,3,4,5,6...
	DPSDK_INT32	iMaxBatchIssuePersons;								// The access control device supports the maximum number of personnel to be issued in batches, default 1, optional
	DPSDK_INT32	iSubSystemCount;									// sub system count
	DPSDK_INT32 iBoxAlarmOutChannelCount;							// Box AlarmOut Channel Count
}DPSDK_DEVICE_SUMMARY_INFO;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_DEVICE_BASE_PARAM struDevBaseParam;
	DPSDK_INT32 iProtocolType;										// Protocol type see DPSDK_DEVICE_PROTOCOL_TYPE_e
	DPSDK_INT32 iDiscoverMode;										// Device information acquisition mode: 1=Full mode  2=Incremental mode default 1
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDiscoverTimeout;									// Discover Timeout
	DPSDK_CHAR szServerCode[DPSDK_ID_LEN];							// Server code
}DPSDK_GET_DEVICE_DETAIL_PARAM;

typedef struct
{
	DPSDK_CHAR szDevIP[DPSDK_IP_LEN];
	DPSDK_CHAR szErrorMsg[DPSDK_ERROR_LEN];
}DPSDK_DEVICE_ERRORMSG;
// The result of add device
typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_DEVICE_ERRORMSG* pFailDevList;
	DPSDK_DEVICE_ID struDeviceID;									// Device ID
}DPSDK_ADD_DEVICE_RESULT;

// The result of save device
typedef struct
{
	DPSDK_INT32 iErrorCode;
	DPSDK_BOOL bResult;
	DPSDK_CHAR szDummyId[DPSDK_ID_LEN];
}DPSDK_SAVE_DEVICE_RESULT;

// The result of save device
typedef struct
{
	DPSDK_INT32 iSaveDeviceNum;									// The number of save device
	DPSDK_SAVE_DEVICE_RESULT struSaveDeviceList[1];				// The list of save device
}DPSDK_SAVE_DEVICE_LIST;

// The dummy Id
typedef struct
{
	DPSDK_CHAR szDummyId[DPSDK_ID_LEN];                             // Dummy Id	
	DPSDK_INT32 iErrorCode;
}DPSDK_FAILED_DEVICE;

// Update channel information
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Device code
	DPSDK_INT32 iUnitSeq;											// Unit sequence
	DPSDK_INT32 iChannelSeq;										// Channel sequence
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT32 iAlarmType;
	DPSDK_INT32 iAlarmLevel;
	DPSDK_INT32 iEncoderChnSeq;
	DPSDK_CHAR szEncoderChnName[DPSDK_CHANNEL_NAME_LEN];
}DPSDK_UPDATE_CHANNEL_INFO;

// Update big screen input information
typedef struct
{
	DPSDK_UPDATE_CHANNEL_INFO struBaseChnInfo;						// Basic information
	DPSDK_CHAR szChannelSn[DPSDK_SN_LEN];							// The single serial number of channel 
	DPSDK_INT32 iCameraType;										// Camera type see DPSDK_CAMERA_TYPE
	DPSDK_INT32 iChannelRemoteType;									// Remote channel type see DPSDK_CHANNEL_REMOTE_TYPE
}DPSDK_UPDATE_SCREEN_INPUT_CHANNEL_INFO;


typedef struct
{
	DPSDK_CHAR szControllerSeq[DPSDK_NAME_LEN];
	DPSDK_CHAR szControllerName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szProperty[DPSDK_NAME_LEN];							//	One way and two way information
}DPSDK_DEVICE_CONTROLLER_INFO;

typedef struct
{
	DPSDK_CHAR szSubSystemSeq[DPSDK_NAME_LEN];
	DPSDK_CHAR szSubSystemName[DPSDK_NAME_LEN_EX];
}DPSDK_DEVICE_SUBSYSTEM_INFO;

// Channel basic information 
typedef struct
{
	DPSDK_CHAR szChannelSeq[DPSDK_SN_LEN];							// Channel serial number, from 0 start
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN_EX];					// Channel name
	DPSDK_INT32 iFloorNum;											// Floor Num
}DPSDK_CHANNEL_BASE_INFO;

typedef struct
{
	DPSDK_INT32	iUnitType;											// Unit type
	DPSDK_INT32	iUnitSeq;											// Unit sequence number
}DPSDK_UNIT_BASE_INFO;

typedef struct
{
	DPSDK_INT32 iRoadway;											// Roadway
	DPSDK_FLOAT fLargeCarMaxSpeed;									// Max speed of large car
	DPSDK_FLOAT fLargeCarMinSpeed;									// Min speed of large car
	DPSDK_FLOAT fSmallCarMaxSpeed;									// Max speed of small car
	DPSDK_FLOAT fSmallCarMinSpeed;									// Min speed of small car
	DPSDK_FLOAT fDirection;											// The direction of car
}DPSDK_UPDATE_CHANNEL_EXT_INFO;

typedef struct
{
	DPSDK_INT32	iStreamType;										// Channel stream type
	DPSDK_CHAR	szRtspUrl[DPSDK_URL_RTSP_LEN];						// Rtsp url
}DPSDK_CHANNEL_RTSP_INFO;

// Update encode channel information
typedef struct
{
	DPSDK_CHANNEL_BASE_INFO struChlBaseInfo;
	DPSDK_CHAR szChannelSn[DPSDK_SN_LEN];							// The single serial number of channel
	DPSDK_CHAR szChannelIP[DPSDK_IP_LEN];							// The ip of channel
	DPSDK_CHAR szChannelMac[DPSDK_MACADDRESS_LEN];							// The Mac of channel
	DPSDK_INT32 iChannelType;										// Channel type see DPSDK_CHANNEL_TYPE
	DPSDK_INT32 iChannelSubType;									// Channel subtype DPSDK_CHANNEL_SUBTYPE_e
	DPSDK_INT32 iRemoteChannelType;									// Remote channel type see DPSDK_CHANNEL_REMOTE_TYPE
	DPSDK_INT32 iCameraType;										// Camera type see DPSDK_CAMERA_TYPE
	DPSDK_CHAR szKeyCode[DPSDK_MEMO_LEN];							// Key code
	DPSDK_LONG lCapability;											// Capacity
	DPSDK_INT32 iChannelStreamType;									// Encode Channel Stream Type
	DPSDK_INT32 iEncoderChannelType;								// 1=local channel，2=remote channel，default local
	DPSDK_INT32 iEnableWeb;											// Whether or not to support web: 0-Nn, 1-Yes
	DPSDK_UPDATE_CHANNEL_EXT_INFO struChnExtInfo;					// External information
	DPSDK_INT32 iRtspUrlNum;										// The number of rtsp url
	DPSDK_CHANNEL_RTSP_INFO* pRtspUrlList;							// The list of rtsp url
}DPSDK_UPDATE_ENC_CHANNEL_INFO;

// Encode unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iZeroChnlEncode;									// Is it support zero channel and multi picture
	DPSDK_INT32 iTranscoder;										// Whether to use Haikang private stream
	DPSDK_INT32 iEncChnNum;											// The number of encode channel 
	DPSDK_UPDATE_ENC_CHANNEL_INFO* pEncChnList;						// The list of encode channel
}DPSDK_UPDATE_ENC_UNIT_INFO;

// Update decode channel information
typedef struct
{
	DPSDK_CHANNEL_BASE_INFO struChlBaseInfo;
	DPSDK_CHAR szChannelSn[DPSDK_SN_LEN];							// The single serial number of channel
	DPSDK_INT32 iMaxSplitNum;										// The max number of split
	DPSDK_INT32 iChannelType;										// Channel type: see DPSDK_DECODER_CHANNEL_TYPE_e
}DPSDK_UPDATE_DEC_CHANNEL_INFO;

// Decode unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iDecDecodeMode;										// Decode model
	DPSDK_INT32 iSupportCombine;									// Whether or not to support combine: 0-Nn, 1-Yes
	DPSDK_INT32 iDecChnNum;											// The number of decode channel
	DPSDK_UPDATE_DEC_CHANNEL_INFO* pDecChnList;						// The list of decode channel
}DPSDK_UPDATE_DEC_UNIT_INFO;

// Update alarm input channel information
typedef struct
{
	DPSDK_CHANNEL_BASE_INFO struChlBaseInfo;
	DPSDK_INT32 iAlarmType;											// Alarm type
	DPSDK_INT32 iAlarmLevel;										// Alarm level
	DPSDK_INT32 iSupportPartial;									// 支持的分区，0=不支持，1=支持分区1，2=支持分区2，3=支持分区1和分区2
	DPSDK_CHAR szParentTargetSeq[DPSDK_SN_LEN];						// Parent target number, from 0 start
	DPSDK_CHAR szParentTargetName[DPSDK_NAME_LEN_EX];				// Parent target name
	DPSDK_CHAR szAssociateId[DPSDK_DEVICE_NAME_LEN];				// out id
	DPSDK_CHAR szParentSubSystemSeq[DPSDK_SN_LEN];					// Parent subsystem
}DPSDK_UPDATE_ALARM_INPUT_CHANNEL_INFO;

// Alarm input unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iAlarmInputChnNum;									// The number of Alarm Input channel
	DPSDK_UPDATE_ALARM_INPUT_CHANNEL_INFO* pAlarmInputChnList;		// The list of Alarm Input channel
}DPSDK_UPDATE_ALARM_INPUT_UNIT_INFO;

// Alarm output channel information
typedef struct
{
	DPSDK_CHANNEL_BASE_INFO struChlBaseInfo;
	DPSDK_CHAR szParentTargetSeq[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szParentTargetName[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_INT32 iActiveStatus;
}DPSDK_UPDATE_ALARM_OUT_CHANNEL_INFO;

// Alarm output unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iAlarmOutputChnNum;									// The number of Alarm Output channel
	DPSDK_UPDATE_ALARM_OUT_CHANNEL_INFO* pAlarmOutputChnList;	// The list of Alarm Output channel
}DPSDK_UPDATE_ALARM_OUTPUT_UNIT_INFO;

// Update access channel information
typedef struct
{
	DPSDK_CHANNEL_BASE_INFO struChlBaseInfo;
	DPSDK_CHAR  szSubControllerSeq[DPSDK_LEN_64];
	DPSDK_INT32 iReadIdNum;
	DPSDK_READ_ID* pReadIdList;
}DPSDK_UPDATE_ACCESS_CHANNEL_INFO;

// Access unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iSupportFingerPrintAuth;							// Whether fingerprint authentication is supported: 0-unknown (before compatibility), 1-not supported, 2-supported
	DPSDK_INT32 iSupportCardAuth;									// Whether Card authentication is supported: 1-yes, 0-no
	DPSDK_INT32 iSupportFaceAuth;									// Whether face authentication is supported: 1-yes, 0-no
	DPSDK_INT32 iIsUserIsolate;										// Whether Separation of personnel and cards  is supported: 1-yes, 0-no
	DPSDK_CHAR szUnlockModes[DPSDK_UNLOCKMODES_LEN];				// The combination of unlocking modes supported by the device, multiple of which are separated by commas, such as: 0,1,2,3
	DPSDK_INT32 iSupportMultiFace;									// Support multiple faces: 1 = yes, 0 = no
	DPSDK_INT32 iAccessChnNum;										// The number of access channel
	DPSDK_UPDATE_ACCESS_CHANNEL_INFO* pAccessChnList;				// The list of access channel
}DPSDK_UPDATE_ACCESS_UNIT_INFO;

//Update gate channel information
typedef struct
{
	DPSDK_CHANNEL_BASE_INFO struChlBaseInfo;
}DPSDK_UPDATE_GATE_CHANNEL_INFO;

// Gate unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iGateChnNum;									// The number of gate channel
	DPSDK_UPDATE_GATE_CHANNEL_INFO*	pGateChnList;				// The list of gate channel
}DPSDK_UPDATE_GATE_UNIT_INFO;

// Update lift floor information
typedef struct
{
	DPSDK_INT32 iFloorSerialNo;										// The floor serial number
	DPSDK_CHAR szFloorName[DPSDK_NAME_LEN_EX];						// The floor name
}DPSDK_UPDATE_LIFT_FLOOR_INFO;

// Update lift channel information
typedef struct
{
	DPSDK_CHANNEL_BASE_INFO struChlBaseInfo;
	DPSDK_INT32	iFloorNum;											// The number of floor
	DPSDK_UPDATE_LIFT_FLOOR_INFO* pLiftFloorList;				// Lift Floor Information
}DPSDK_UPDATE_LIFT_CHANNEL_INFO;

// Lift unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iLiftChnNum;										// The number of Lift channel
	DPSDK_INT32 iFingerPrintAuth;									// Whether finger authentication is supported: 1-yes, 0-no
	DPSDK_UPDATE_LIFT_CHANNEL_INFO* pLiftChnList;			// Lift Channel Information
}DPSDK_UPDATE_LIFT_UNIT_INFO;

// Virtual unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iVirChnNum;											// The number of virtual channel
	DPSDK_CHANNEL_BASE_INFO* pVirChnList;							// The list of virtual channel
}DPSDK_UPDATE_VIR_UNIT_INFO;

// POS unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iPosChlNum;											// The number of POS channel
	DPSDK_CHANNEL_BASE_INFO* pPosChlList;							// The list of POS channel
}DPSDK_UPDATE_POS_UNIT_INFO;

typedef struct
{
	DPSDK_CHAR szContentId[DPSDK_ID_LEN];											// Serial number
	DPSDK_CHAR szContent[DPSDK_CONTENT_LEN];						// Content
	DPSDK_INT32 iUseDefined;										// Is it custom content: 0:no, 1:yes
}DPSDK_CONTENT_INFO;

// Update LED channel information
typedef struct
{
	DPSDK_CHANNEL_BASE_INFO struChlBaseInfo;
	DPSDK_INT32 iDirect;											// Display direction:see DPSDK_DEVICE_LED_DIRECTION_e
	DPSDK_CHAR szDefaultText[DPSDK_CONTENT_LEN];					// Preset text
	DPSDK_INT32 iShowContentNum;
	DPSDK_CONTENT_INFO* pShowContentInfo;
	DPSDK_INT32 iFixedContentType;									// Fixed content in idle state: 0-empty, 1-field remainder, 2-custom content
	DPSDK_CHAR szFixedContent[DPSDK_CONTENT_LEN];					// Fixed content, not empty when iFixedContentType is 2
	DPSDK_INT32 iArrowheadDirection;								// Arrow direction: 1-left, 2-right
	DPSDK_INT32 iRowNum;											// Row number
	DPSDK_FLOAT fHeight;											// LED screen height
	DPSDK_FLOAT fWidth;												// LED screen widht
	DPSDK_INT32 iColor;												// LED display color: see DPSDK_LED_DISPLAY_COLOR_e
	DPSDK_INT32 iZeroDisplayType;									// Zero residual display content: 0-0000, 1-full (dedicated for residual screen)
	DPSDK_INT32 iRollType;											// Content rolling mode: 0-fixed, 1-rolling
	DPSDK_INT32 iRollSpeed;											// Rolling speed
}DPSDK_UPDATE_LED_CHANNEL_INFO;

// LED unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iLedChlNum;									// The number of led unit
	DPSDK_UPDATE_LED_CHANNEL_INFO* pLedChlList;						// The list of led unit
}DPSDK_UPDATE_LED_UNIT_INFO;

// alarm signal units
typedef struct
{
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
	DPSDK_CHAR szChannelSeq[DPSDK_IP_LEN];
}DPSDK_ALARM_SIGNAL_CHANNEL_INFO;

typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iAlarmSignalChlNum;
	DPSDK_ALARM_SIGNAL_CHANNEL_INFO* pAlarmSignalChlList;
}DPSDK_UPDATE_ALARM_SIGNAL_UNIT_INFO;

// UVSS units
typedef struct
{
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
	DPSDK_CHAR szChannelSeq[DPSDK_IP_LEN];
}DPSDK_UVSS_CHANNEL_INFO;

typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iUVSSChlNum;
	DPSDK_UVSS_CHANNEL_INFO* pUVSSChlList;
}DPSDK_UPDATE_UVSS_UNIT_INFO;

// Update CVI alarm channel information
typedef struct
{
	DPSDK_CHANNEL_BASE_INFO struChlBaseInfo;
	DPSDK_CHAR szEncoderChnSeq[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szEncoderChnName[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_INT32 iAlarmType;											// Alarm type
}DPSDK_UPDATE_CVI_ALARM_CHANNEL_INFO;

// CVI alarm unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iCviAlarmChlNum;									// The number of CVI alarm unit
	DPSDK_UPDATE_CVI_ALARM_CHANNEL_INFO* pCviAlarmChlList;			// The list of CVI alarm unit
}DPSDK_UPDATE_CVI_ALARM_UNIT_INFO;

typedef struct
{
	DPSDK_CHAR szFloorSerialNo[DPSDK_ELEVATOR_FLOOR_NUM_MAX];
	DPSDK_CHAR szFloorName[DPSDK_NAME_LEN_EX];
}DPSDK_FLOOR_INFO;

typedef struct
{
	DPSDK_UPDATE_CHANNEL_INFO struBaseChnInfo;						// Basic information
	DPSDK_INT32 iFloorNum;											// the number of floors
	DPSDK_FLOOR_INFO*	pFloorInfo;
}DPSDK_DEVICE_ELEVATOR_INFO;

// Update audio light aram channel information
typedef struct
{
	DPSDK_CHANNEL_BASE_INFO struChlBaseInfo;
	DPSDK_CHAR szParentTargetSeq[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szParentTargetName[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_INT32 iChannelType;
}DPSDK_UPDATE_AUDIOLIGHT_ALARM_CHANNEL_INFO;

// AudioLight alarm unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iAudioLightAlarmChlNum;									// The number of audio light alarm unit
	DPSDK_UPDATE_AUDIOLIGHT_ALARM_CHANNEL_INFO* pAudioLightAlarmChlList;// The list of audio light alarm unit
}DPSDK_UPDATE_AUDIOLIGHT_ALARM_UNIT_INFO;

// Update IPSpeaker audio channel info
typedef struct
{
	DPSDK_CHAR szChannelSeq[DPSDK_IP_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
}DPSDK_UPDATE_IPSPEAKER_CHANNEL_INFO;

// IPSpeaker audio unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iIPSpeakerAudioChlNum;									// The number of IPSpeaker audio unit channel count
	DPSDK_UPDATE_IPSPEAKER_CHANNEL_INFO* pIPSpeakerAudioChlList;		// The list of IPSpeaker audio unit
}DPSDK_UPDATE_IPSPEAKER_UNIT_INFO;

// Parking space info
typedef struct
{
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
	DPSDK_CHAR szChannelSeq[DPSDK_IP_LEN];
	DPSDK_CHAR szEncoderChannelId[DPSDK_IP_LEN];
	DPSDK_CHAR szEncoderChannelName[DPSDK_NAME_LEN];
}DPSDK_PARKINGSPACE_CHANNEL_INFO;

typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iParkingStatisticsMode;								// Statistics Mode
	DPSDK_INT32 iParkingSpaceInfoChnNum;
	DPSDK_PARKINGSPACE_CHANNEL_INFO* pParkingSpaceChlList;
}DPSDK_PARKINGSPACE_UNIT_INFO;

//EAS Channel Info
typedef struct
{
	DPSDK_CHAR szChannelSeq[DPSDK_IP_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
}DPSDK_EAS_CHANNEL_INFO;

// EAS uinit info
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_CHAR szUnitName[DPSDK_NAME_LEN];
	DPSDK_INT32 iEASChannelNum;
	DPSDK_EAS_CHANNEL_INFO* pEASChannelList;
}DPSDK_EAS_UNIT_INFO;

// Led Partiton info
typedef struct
{
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
	DPSDK_CHAR szChannelSeq[DPSDK_IP_LEN];
}DPSDK_LEDPARTITON_CHANNEL_INFO;

typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iLedPartitionChnNum;
	DPSDK_LEDPARTITON_CHANNEL_INFO* pLedPartitionChlList;
}DPSDK_LEDPARTITON_UNIT_INFO;

// Update alarm Box channel information
typedef struct
{
	DPSDK_CHANNEL_BASE_INFO struChlBaseInfo;
	DPSDK_CHAR szAlarmBoxSeq[DPSDK_ID_LEN];							// Alarm box seq
	DPSDK_INT32 iAlarmType;											// Alarm type
	DPSDK_INT32 iBoxOutIndex;
}DPSDK_UPDATE_ALARMBOX_CHANNEL_INFO;

// Alarm Box unit
typedef struct
{
	DPSDK_UNIT_BASE_INFO struUnitBaseInfo;
	DPSDK_INT32 iAlarmBoxChnNum;									// The number of alarm box channel			
	DPSDK_UPDATE_ALARMBOX_CHANNEL_INFO* pAlarmBoxChlList;			// The list of alarm box channel
}DPSDK_UPDATE_ALARMBOX_UNIT_INFO;

// Update device information
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Device code
	DPSDK_INT32 iAddType;											// Device adding method: 1-IP address, 2-IP segment, 3-domain name, 4-active registration, 5-P2P add device, required
	DPSDK_IP struDeviceIp;											// Device ip
	DPSDK_INT32 iDevicePort;										// Device port
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login Name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];							// Device password (encrypt)
	DPSDK_INT32 iProtocolType;										// Protocol type see DPSDK_DEVICE_PROTOCOL_TYPE_e
	DPSDK_INT32 iStreamProtocolType;								// Protocol type see DPSDK_STREAM_PROTOCOL_TYPE_e
	DPSDK_INT32 iEncrypType;										// Encryp type
	DPSDK_CHAR szSecretKey[DPSDK_KEY_LEN];							// Secret Key
	DPSDK_CHAR szAccessKey[DPSDK_KEY_LEN];							// Access Key
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;										// Device type: see DPSDK_DEV_TYPE
	DPSDK_INT32 iDeviceSeries;										// Device series: see DPSDK_DEVICE_SERIES_e
	DPSDK_CHAR szDeviceModel[DPSDK_DEVICE_MODEL_LEN];				// Device model: see DPSDK_DEVICE_MODEL
	DPSDK_CHAR szDeviceMacAddress[DPSDK_MACADDRESS_LEN];			// Device mac address
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szDeviceSN[DPSDK_SN_LEN];							// Device serial number
	DPSDK_CHAR szRegisterId[DPSDK_ID_LEN_EX];						// Register ID
	DPSDK_INT32 iManFac;											// Manufacture see DPSDK_DEVICE_MANFAC_e
	DPSDK_CHAR szManuFacName[DPSDK_NAME_LEN];						// Manufacture name
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server code
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];								// Vtcall SIP-ID
	DPSDK_CHAR szSipPwd[DPSDK_PWD_LEN];								// Vtcall SIP password
	DPSDK_CHAR iBuildingEnable;										// Vtcall building enable
	DPSDK_CHAR iUnitEnable;											// Vtcall unit enable
	DPSDK_CHAR iPhaseEnable;										// Vtcall phase enable
	DPSDK_CHAR iLiftEnable;											// LiftController enable
	DPSDK_CHAR szSoftwareVersion[DPSDK_ID_LEN];						// Software version
	DPSDK_CHAR szHardwareVersion[DPSDK_ID_LEN];						// Hardware version
	DPSDK_CHAR szProtocolVersion[DPSDK_ID_LEN];						// Protocol version
	DPSDK_CHAR szFaceAlgorithmVersion[DPSDK_ID_LEN];				// Face Algorithm Version
	DPSDK_CHAR szDomainID[DPSDK_ID_LEN];								// Domain ID
	DPSDK_INT32 iIsVideoNexus;										// Is it a baseline for video interconnection
	DPSDK_CHAR szTimezoneId[DPSDK_ID_LEN];							// Time zone ID
	DPSDK_CHAR szTimezoneName[DPSDK_NAME_LEN];						// Time zone name
	DPSDK_INT32 iDstEnable;											// Daylight time enable: 0-off, 1-on
	DPSDK_INT32 iDstType;											// Daylight time type, 1-date mode, 2-week mode
	DPSDK_TIME_INFO struDstBeginTime;
	DPSDK_TIME_INFO struDstEndTime;
	DPSDK_INT32 iTimeSyncStatus;									// Synchronization status: 0-failure, 1-success, 2-issuing, 3-not supported, optional
	DPSDK_INT64 iCapability;										// Device capability

	DPSDK_INT32 iOutRtspPort;										// Device output rtsp port
	DPSDK_INT32 iEnableRtspTls;										// Onvif support RTSP OVER TSL 0:close 1:open
	DPSDK_CHAR szCardNo[DPSDK_ID_LEN];								// Card no
																	// Proxy information is used to obtain device information
	DPSDK_IP struProxyIp;											// Proxy IP (active registration / P2P / onvif / Haikang / gb28281 and other non IP access devices)
	DPSDK_INT32 iProxyPort;											// Proxy port (active registration / P2P / onvif / Haikang / gb28281 and other non IP access devices)

	DPSDK_CHAR	szUnlockModes[DPSDK_ID_LEN_EX];						// // Suport Unlock mode:0,1,2,3,4,5,6...
	DPSDK_INT32 iLinkMode;											// Link Mode:0=persistent connection, 1=short connection
	DPSDK_INT32	iMaxBatchIssuePersons;								// The access control device supports the maximum number of personnel to be issued in batches, default 1, optional
	DPSDK_INT64	iExceedChannelCapability;

	// Controllers
	DPSDK_INT32 iControllerNum;
	DPSDK_DEVICE_CONTROLLER_INFO* pControllerList;

	// SubSystem
	DPSDK_INT32 iSubSystemNum;
	DPSDK_DEVICE_SUBSYSTEM_INFO* pSubSystemList;


	// Encode units
	DPSDK_INT32 iEncUnitNum;										// The number of encode unit 
	DPSDK_UPDATE_ENC_UNIT_INFO* pEncUnitList;						// The list of encode unit

																	// Decode units
	DPSDK_INT32 iDecUnitNum;										// The number of encode unit 
	DPSDK_UPDATE_DEC_UNIT_INFO* pDecUnitList;						// The list of encode unit

																	// Alarm input units
	DPSDK_INT32 iAlarmInputUnitNum;									// The number of alarm input unit
	DPSDK_UPDATE_ALARM_INPUT_UNIT_INFO* pAlarmInputUnitlist;		// The list of alarm input unit

																	// Alarm output units
	DPSDK_INT32 iAlarmOutputUnitNum;								// The number of alarm output unit
	DPSDK_UPDATE_ALARM_OUTPUT_UNIT_INFO* pAlarmoutputUnitlist;		// The list of alarm output unit

																	// Acess units
	DPSDK_INT32 iAccessUnitNum;										// The number of  acess unit
	DPSDK_UPDATE_ACCESS_UNIT_INFO* pAccessUnitList;					// The list of  acess unit

																	// Gate units
	DPSDK_INT32 iGateUnitNum;										// The number of  acess unit
	DPSDK_UPDATE_GATE_UNIT_INFO* pGateUnitList;						// The list of  gate unit

																	// Lift units
	DPSDK_INT32 iLiftUnitNum;										// The number of lift unit
	DPSDK_UPDATE_LIFT_UNIT_INFO* pLiftUnitList;						// The list of lift unit

																	//audio light units
	DPSDK_INT32 iAudioLightUnitNum;
	DPSDK_UPDATE_AUDIOLIGHT_ALARM_UNIT_INFO* pAudioLightUnitList;		//The list of audio light list

																		//Parking spcae units
	DPSDK_INT32 iParkingSpaceUnitNum;
	DPSDK_PARKINGSPACE_UNIT_INFO* pParkingSpaceUnitList;

	//EAS unit
	DPSDK_INT32 iEASUnitNum;
	DPSDK_EAS_UNIT_INFO* pEASUnitList;

	//IPSpeaker audio unit
	DPSDK_INT32 iIPSpeakerAudioUnitNum;
	DPSDK_UPDATE_IPSPEAKER_UNIT_INFO* pIPSpeakerAudioUnitList;	//The list of IPSpeaker audio unit

																//LED Partition
	DPSDK_INT32 iLedPartitionUnitNum;
	DPSDK_LEDPARTITON_UNIT_INFO* pLedPartitionUnitList;

	// Virtual units
	DPSDK_INT32 iVirUnitNum;										// The number of virtual unit
	DPSDK_UPDATE_VIR_UNIT_INFO* pVirUnitList;						// The list of virtual unit

																	// POS units
	DPSDK_INT32 iPosUnitNum;											// The number of POS unit
	DPSDK_UPDATE_POS_UNIT_INFO* pPosUnitList;						// The list of POS unit

																	// LED units
	DPSDK_INT32 iLedUnitNum;										// The number of led unit
	DPSDK_UPDATE_LED_UNIT_INFO* pLedUnitList;						// The list of  led unit

																	// CVI alarm units
	DPSDK_INT32 iCviAlarmUnitNum;									// The number of CVI alarm unit
	DPSDK_UPDATE_CVI_ALARM_UNIT_INFO* pCviAlarmUnitList;					// The list of CVI alarm unit

																			// Alarm Box units
	DPSDK_INT32 iAlarmBoxUnitNum;									// The number of alarm box unit
	DPSDK_UPDATE_ALARMBOX_UNIT_INFO* pAlarmBoxUnitList;				// The list of alarm box unit

																	// Box Alarm Out units
	DPSDK_INT32 iBoxAlarmOutUnitNum;									// The number of box alarm out unit
	DPSDK_UPDATE_ALARMBOX_UNIT_INFO* pBoxAlarmOutUnitList;			// The list of box alarm out unit


	DPSDK_CHAR szTimezoneOffset[DPSDK_TIME_LEN];					// Timezone offset, e.g. +08:00

																	// Alarm singal units
	DPSDK_INT32 iAlarmSignalUnitNum;
	DPSDK_UPDATE_ALARM_SIGNAL_UNIT_INFO* pAlarmSignalUnitList;

	// UVSS units
	DPSDK_INT32 iUVSSUnitNum;
	DPSDK_UPDATE_UVSS_UNIT_INFO* pUVSSUnitList;
	DPSDK_INT32 iNetWork;											// netWork Mode,TV WALL is must

	DPSDK_CHAR	szSnmpReadCredential[DPSDK_NAME_LEN];				// snmp read Community
	DPSDK_CHAR	szSnmpWriteCredential[DPSDK_NAME_LEN];				// snmp write Community
	DPSDK_INT32 iSnmpAuthVersion;									// snmp auth version 1=v1，2=v2，3=v3
	DPSDK_INT32 iSnmpAuthType;										// snmp auth type 1=MD5，2=SHA
	DPSDK_CHAR	szSnmpAuthUser[DPSDK_NAME_LEN];						// snmp auth user
	DPSDK_CHAR	szSnmpAuthPassword[DPSDK_PWD_LEN];					// snmp auth password
	DPSDK_INT32 iSnmpEncryptType;									// snmp Encrypt type 1=CBC-DES，2=CFB-AES
	DPSDK_CHAR	szSnmpEncryptPassword[DPSDK_PWD_LEN];				// snmp Encrypt password
}DPSDK_UPDATE_DEVICE_INFO;

// The parameter of search channel
typedef struct
{
	DPSDK_INT32 iDevicePort;										// Device port
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iManFac;											// Manufacture see DPSDK_DEVICE_MANFAC
	DPSDK_CHAR szDevIP[DPSDK_IP_LEN];								// Device IP
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login Name
	DPSDK_CHAR szLoginPwd[DPSDK_PWD_LEN];							// Device Login password
}DPSDK_SEARCH_CHANNEL_INFO;

// Encode unit
typedef struct
{
	DPSDK_INT32 iChannelSeq;										// Channel serial number, from 0 start
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN_EX];					// Channel name
	DPSDK_INT32 iCameraType;										// Camera type see DPSDK_CAMERA_TYPE
	DPSDK_INT32 iCameraFunction;									// 0：have no support function	1：suppotr fish eye		2：support motorized focus 
	DPSDK_INT32 iInterfaceType;										// Interface type
}DPSDK_ENCODE_CHANNEL_INFO;

// Decode unit
typedef struct
{
	DPSDK_INT32 iChannelSeq;										// Channel serial number, from 0 start
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN_EX];					// Channel name
	DPSDK_INT32 iInterfaceType;										// Interface type
	DPSDK_INT32 iSplitMode;											// Split model，1,4,9,16
}DPSDK_DECODE_CHANNEL_INFO;

typedef struct
{
	DPSDK_INT32 iChannelSeq;										// Channel serial number, from 0 start
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN_EX];					// Channel name
	DPSDK_INT32 iEncoderChnSeq;										// Channel serial number, from 0 start
	DPSDK_CHAR szEncoderChnName[DPSDK_NAME_LEN_EX];					// Channel name
}DPSDK_CVI_ALARM_CHANNEL_INFO;

// Big screen input
typedef struct
{
	DPSDK_INT32 iChannelSeq;										// Channel serial number, from 0 start
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN_EX];					// Channel name
	DPSDK_INT32 iCameraType;										// Camera type see DPSDK_CAMERA_TYPE
	DPSDK_INT32 iInterfaceType;										// Interface type
	DPSDK_INT32 iChannelRemoteType;									// Remote channel type
}DPSDK_SCREEN_INPUT_INFO;

// Search channel information
typedef struct
{
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szSerialNo[DPSDK_SN_LEN];							// Serial number
	DPSDK_INT32 iDeviceType;										// Device type
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iManFac;											// Manufacture see DPSDK_DEVICE_MANFAC

																	// Encode unit
	DPSDK_INT32 iStreamType;										// Code stream type see DPSDK_STREAM_TYPE
	DPSDK_BOOL bZeroEncode;											// Is it support zero channel and multi picture
	DPSDK_INT32 iEncChnNum;											// The number of encode channel 
	DPSDK_ENCODE_CHANNEL_INFO* pEncChnList;							// The list of encode channel 

																	// Decode unit
	DPSDK_INT32 iConbineStatus;										// Is it support conbine 0: not support 1:support
	DPSDK_INT32 iDecChnNum;											// The number of decode channel 
	DPSDK_DECODE_CHANNEL_INFO* pDecChnList;							// The list of decode channel 

																	// Alarm input unit
	DPSDK_INT32 iAlarmInputChnNum;									// The number of alarm input channel 
	DPSDK_CHANNEL_BASE_INFO* pAlarmInputChnList;					// The list of alarm input channel 

																	// Alarm output unit
	DPSDK_INT32 iAlarmOutputChnNum;									// The number of alarm output channel 
	DPSDK_CHANNEL_BASE_INFO* pAlarmOutputChnList;					// The list of alarm output channel 

																	// Big screen input unit
	DPSDK_INT32 iScreenInputChnNum;									// The number of big screen input channel 
	DPSDK_SCREEN_INPUT_INFO* pScreenInputChnList;					// The list of big screen input channel 

																	// Big screen output unit
	DPSDK_INT32 iScreenOutputChnNum;								// The number of big screen output channel 
	DPSDK_CHANNEL_BASE_INFO* pScreenOutputChnList;					// The list of big screen output channel 

																	// Acess unit
	DPSDK_INT32 iAccessControlChnNum;								// The number of acess channel
	DPSDK_CHANNEL_BASE_INFO* pAccessControlChnList;					// The list of acess channel

	DPSDK_INT32 iCviChnNum;											// The number of cvi channel 
	DPSDK_CVI_ALARM_CHANNEL_INFO* pCviChnList;							// The list of cvi channel 
}DPSDK_SEARCH_CHANNEL_LIST;

// Device initialize
typedef struct
{
	DPSDK_CHAR szDeviceId[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_IP struDeviceIP;											// Device ip
	DPSDK_CHAR szSubMask[DPSDK_IP_LEN];								// Sub-mask
	DPSDK_CHAR szGateway[DPSDK_IP_LEN];								// Default get way
	DPSDK_CHAR szPreSetEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];		// Pre-set mail
	DPSDK_CHAR szPreSetPhone[DPSDK_PHONE_LEN];						// Pre-set phone number
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];							// Device password(encrypt)
}DPSDK_INIT_DEVICE_INFO;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_INT32 iManagedStatus;										// Management status:0-not managed, 1-managed, -1-all, optional
	DPSDK_INT32 iProtocolType;										// Protocol type see DPSDK_DEVICE_PROTOCOL_TYPE_e, 0-all, optional
	DPSDK_INT32 iInitialized;										// Initialized status 0-unInitialized,1-initialized, ""-all  
	DPSDK_IP struStartIp;											// Start IP, optional
	DPSDK_IP struEndIp;												// End IP, optional 
	DPSDK_INT32 iDataSource;										// Data source: 0 = service, 1 = cache, required
}DPSDK_GET_DISCOVER_DEVICE_PARAM;

typedef struct
{
	DPSDK_CHAR szDeviceId[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_IP struDeviceIP;											// Device ip
	DPSDK_INT32 iDevicePort;										// Device port
	DPSDK_CHAR szDeviceModel[DPSDK_DEVICE_MODEL_LEN];				// Device model: see DPSDK_DEVICE_MODEL
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_CHAR szDeviceCategoryName[DPSDK_NAME_LEN_EX];				// Device category name
	DPSDK_CHAR szDeviceSn[DPSDK_SN_LEN];							// Device serial number
	DPSDK_CHAR iInitStatus;											// Initialization status: 0-uninitialized, 1-initialized
	DPSDK_CHAR szMACAddress[DPSDK_MACADDRESS_LEN];					// MAC address
	DPSDK_INT32 iProtocolType;										// Protocol type see DPSDK_DEVICE_PROTOCOL_TYPE_e, 0-all, optional
}DPSDK_DISCOVER_DEVICE_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total count
	DPSDK_INT32 iDeviceNum;
	DPSDK_DISCOVER_DEVICE_INFO* pDeviceList;
}DPSDK_DISCOVER_DEVICE_LIST;

typedef struct
{
	DPSDK_INT32 iDeviceNum;
	DPSDK_DEVICE_ID* pDeviceList;
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];							// Device password(encrypt)
	DPSDK_INT32	iDiscoverTimeout;									// Discover timeout
}DPSDK_ADD_DISCOVER_DEVICE_PARAM;

typedef struct
{
	DPSDK_DISCOVER_DEVICE_INFO struDevInfo;
	DPSDK_INT32 iOperResult;										// Operation result: 0 = failure, 1 = success
	DPSDK_CHAR	szErrorMsg[DPSDK_USER_REMARK_LEN_EX];						// Error message
}DPSDK_ADD_DISCOVER_DEVICE_INFO;

typedef struct
{
	DPSDK_INT32 iDeviceNum;
	DPSDK_ADD_DISCOVER_DEVICE_INFO* pDeviceList;
}DPSDK_ADD_DISCOVER_DEVICE_RESULT;

typedef struct
{
	DPSDK_CHAR szDeviceId[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_IP struDeviceIP;											// Device ip
	DPSDK_CHAR szSubMask[DPSDK_IP_LEN];								// Sub-mask
	DPSDK_CHAR szGateway[DPSDK_IP_LEN];								// Default get way
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];							// Device password(encrypt)
}DPSDK_DISCOVER_DEVICE_NETWORK_INFO;

// Modify device IP
typedef struct
{
	DPSDK_CHAR szDummyId[DPSDK_ID_LEN];								// The tag id of auto search
	DPSDK_CHAR szDeviceIP[DPSDK_IP_LEN];							// New device ip
	DPSDK_CHAR szSubMask[DPSDK_IP_LEN];								// Sub-mask
	DPSDK_CHAR szGateway[DPSDK_IP_LEN];								// Default get way
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];							// Device password(encrypt)
}DPSDK_MODIFY_DEVICE_IP_INFO;

// Export device
typedef struct
{
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_IP struDeviceIp;											// Device ip
	DPSDK_INT32 iDevicePort;										// Device port
	DPSDK_INT32 iManFac;											// Manufacture
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
	DPSDK_CHAR szLoginName[DPSDK_NAME_LEN];							// Login name
	DPSDK_CHAR szLoginPWD[DPSDK_PWD_LEN];							// Device password(encrypt)
	DPSDK_CHAR szDeviceSn[DPSDK_SN_LEN];							// Device serial number
	DPSDK_INT32 iAddType;											// Add type
}DPSDK_EXPORT_DEVICE_INFO;

// The list of export device
#define DPSDK_MAX_EXPORT_DEVICE_NUM		500							// Max number of export device 

typedef struct
{
	DPSDK_INT32	iExportDevNum;												// The number of export device
	DPSDK_EXPORT_DEVICE_INFO szExportDevList[DPSDK_MAX_EXPORT_DEVICE_NUM];	// The list of export device
}DPSDK_EXPORT_DEVICE_LIST;


// Get the reason of device off-line request parameters 
typedef struct
{
	DPSDK_INT32 iDeviceNum;											// The number of device
	DPSDK_DEVICE_ID* pDeviceList;									// The list of device
}DPSDK_GET_DEVICE_OFFLINE_REASON_PARAM;

// The result of query device off-line
typedef struct
{
	DPSDK_CHAR szDeviceId[DPSDK_DEVICE_ID_LEN];						// Device ID
	DPSDK_CHAR szReason[DPSDK_MEMO_LEN];							// Off-line reason
}DPSDK_GET_DEVICE_OFFLINE_REASON_RESULT;

// The result of query device off-line list
typedef struct
{
	DPSDK_UINT32 uiTotal;											// The number of result
	DPSDK_GET_DEVICE_OFFLINE_REASON_RESULT struResultList[1];		// The list of result
}DPSDK_GET_DEVICE_OFFLINE_REASON_RESULT_LIST;

typedef struct
{
	DPSDK_CHAR szDeviceId[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szDeviceIP[DPSDK_IP_LEN];							// Device IP
}DPSDK_REPEAT_DEVICE_INFO;

typedef struct
{
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];								// Vttalk SIP-ID
	DPSDK_INT32 iRepeatDeviceNum;									// The number of repeat device
	DPSDK_REPEAT_DEVICE_INFO* pDeviceList;							// The list of repeat device
}DPSDK_REPEAT_DEVICE_LIST;

typedef struct
{
	DPSDK_INT32 iDoorGroupNamesNum;                                 // The number of Door Group Name
	DPSDK_CHANNEL_ID* pDoorGroupNames;                              // Door Group Name
	DPSDK_INT32 iPersonIdsNum;										// The number of Person Id
	DPSDK_CHANNEL_ID* pPersonIds;									// Person Id
	DPSDK_INT32 iFirstCardChnIdsNum;								// The number of FirstCard ChnId
	DPSDK_CHANNEL_ID* pFirstCardChnIds;								// FirstCard ChnId
	DPSDK_INT32 iMultiCardChnIdNum;									// The number of MultiCard ChnId
	DPSDK_CHANNEL_ID* pMultiCardChnIds;								// MultiCard ChnId
	DPSDK_INT32 iRemoteVerificationChnIdsNum;						// The number of Remote Verification ChnId
	DPSDK_CHANNEL_ID* pRemoteVerificationChnIds;					// Remote Verification ChnId
	DPSDK_INT32 iAntiPassBackNamesNum;								// The number of Anti PassBack Name
	DPSDK_CHANNEL_ID* pAntiPassBackNames;							// AntiPassBack Name
	DPSDK_INT32 iInterDoorLockNamesNum;								// The number of Inter DoorLock Name
	DPSDK_CHANNEL_ID* pInterDoorLockNames;							// Inter DoorLock Name
	DPSDK_INT32 iAttendanceLocations;
	DPSDK_CHANNEL_ID* pAttendanceLocations;
	DPSDK_INT32 iPublicPasswords;
	DPSDK_CHANNEL_ID* pPublicPasswords;
	DPSDK_INT32 iVisitorNum;										// The number of visitors
	DPSDK_NAME* pVisitorNames;										// visitor name
	DPSDK_INT32	iExtractPerson;										//Person task 1=has 0= no ,can’t be deleted even in forced delete mode
	DPSDK_INT32	iExtractDeviceLog;									//Door device log 1=has 0= no ,can’t be deleted even in forced delete mode
	DPSDK_INT32	iExtractRecord;										//Door Reocrd 1=has 0= no ,can’t be deleted even in forced delete mode
	DPSDK_INT32	iUpgradeDevice;										//Door Device upgrade1=has 0= no ,can’t be deleted even in forced delete mode
}DPSDK_DOOR_USAGE_INFO;


typedef struct
{
	DPSDK_INT32	iVisitorDefaultRight;								//Visitor Default Right 1=has 0= no 
	DPSDK_INT32 iAutomaticVisit;									//Automatic Visit 1=has 0= no 
	DPSDK_INT32 iAutomaticLeave;									//AutomatiLeave 1=has 0= no 
}DPSDK_VISITOR_USAGE_INFO;

// The information of delete device fail
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_INT32 iErrorCode;											// Error Code
	DPSDK_INT32 iStoPlansNum;										// The number of storage plan
	DPSDK_CHANNEL_ID* pStoPlans;									// Storage plan
	DPSDK_CHANNEL_ID* pAlarmPlans;									// Alarm plan
	DPSDK_INT32 iAlarmPlansNum;										// The number of alarm plan
	DPSDK_INT32 iVideoWallsNum;										// The number of TVWALL plan
	DPSDK_CHANNEL_ID* pVideoWalls;									// TVWALL
	DPSDK_INT32 iVideoRelationsNum;                                 // The number of VideoRelation
	DPSDK_CHANNEL_ID* pVideoRelations;							    // Video Relation
	DPSDK_INT32 iParkingLotsNum;									// The number of ParkingLots
	DPSDK_NAME* pParkingLots;										// ParkingLots
	DPSDK_INT32 iPlanNum;											// The number of PlanIds
	DPSDK_ID* pPlanId;												// PlanIds
	DPSDK_INT32 iRuleGroupNum;										// The number of RuleGroup
	DPSDK_NAME* pRuleGroups;										// RuleGroups
	DPSDK_INT32 iPassageRulesNum;									// The number of Passage Rule
	DPSDK_NAME* pPassageRules;										// Passage Rules
	DPSDK_INT32 iAlertRuleNamesNum;									// The number of Alert Rule Name
	DPSDK_NAME* pAlertRuleNames;									// Alert Rule Names
	DPSDK_INT32 iNetworkNodesNum;									// The number of Network Node
	DPSDK_NAME* pNetworkNodes;										// Network Nodes
	DPSDK_INT32 iVideoRecordWholenessNum;							// The number of Video Record Wholeness
	DPSDK_NAME* pVideoRecordWholeness;								// Video Record Wholeness
	DPSDK_INT32	iControlFace;										// Face Deploy Control =has 0= no ,can’t be deleted even in forced delete mode
	DPSDK_INT32 iVideoTrackingChannelsNum;							// The number of Video Tracking Channels
	DPSDK_NAME* pVideoTrackingChannels;								// Video Tracking Channels
	DPSDK_INT32 iThirdPartyEventSourcesNum;							// The number of Third Party Event Sources
	DPSDK_NAME* pThirdPartyEventSources;							// Third Party Event Sources
	DPSDK_INT32 iAnalyseStreamTasksNum;								// The number of Video Stream Tasks
	DPSDK_NAME* pAnalyseStreamTasks;								// Video Stream Tasks
	DPSDK_INT32	iAnalyseDeviceConfig;								// Video analysis config =has 0= no ,can’t be deleted even in forced delete mode
	DPSDK_INT32 iParkingSpaceBindParkingLot;

	DPSDK_DOOR_USAGE_INFO struDoorUsageInfo;
	DPSDK_VISITOR_USAGE_INFO struVisitorUsageInfo;
}DPSDK_DELETE_DEVICE_FAIL_INFO;;

typedef struct
{
	DPSDK_INT32 iDeviceNum;
	DPSDK_DEVICE_CODE* pDeviceCodeList;
	DPSDK_CHAR	szOldPwd[DPSDK_PWD_LEN];							// Old password
	DPSDK_CHAR	szNewPwd[DPSDK_PWD_LEN];							// New password
}DPSDK_UPDATE_DEVICE_PWD_PARAM;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_IP struDeviceIP;											// Device IP
	DPSDK_INT32 iDevicePort;										// Device port
	DPSDK_INT32 iResult;											// Result:0-failed, 1-Success
	DPSDK_CHAR	szErrorMsg[DPSDK_MEMO_LEN];							// Error message
}DPSDK_UPDATE_DEVICE_PWD_INFO;

typedef struct
{
	DPSDK_INT32 iDeviceInfoNum;
	DPSDK_UPDATE_DEVICE_PWD_INFO* pDeviceInfoList;
}DPSDK_UPDATE_DEVICE_PWD_RESULT;

// The list of delete device fail
typedef struct
{
	DPSDK_INT32	iDelDevSuccNum;										// The number of delete device succ
	DPSDK_INT32	iDelDevFailNum;										// The number of delete device fail
	DPSDK_DELETE_DEVICE_FAIL_INFO* pDelDevFailList;					// The list of delete device fail
}DPSDK_DELETE_DEVICE_FAIL_LIST;

typedef struct
{
	DPSDK_INT32 iDevCodeNum;
	DPSDK_DEVICE_CODE* pDevCodeList;								// Device code list
	DPSDK_CHAR szTimezoneId[DPSDK_ID_LEN];							// Time zone ID
	DPSDK_INT32 iDstEnable;											// Daylight time enable: 0-off, 1-on
	DPSDK_INT32 iDstType;											// Daylight time type, 1-date mode, 2-week mode
	DPSDK_TIME_INFO struDstBeginTime;
	DPSDK_TIME_INFO struDstEndTime;
}DPSDK_SET_DEVICE_TIMEZONE;

typedef struct
{
	DPSDK_PAGE_INFO struPagInfo;
	DPSDK_CHAR  szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
	DPSDK_CHAR  szOrgCode[DPSDK_ORG_CODE_LEN];						// Organization code
	DPSDK_INT32	iUnitType;											// Unit type: 1-coding unit, 2-decoding unit, 3-alarm input unit, 4-alarm output unit, 7-access control unit, 
	DPSDK_INT32 iDomain;											// 0=no，1=yes，-1=all															//			  11-POS unit, 12-virtual unit (radar), 15-LED unit, 16-CVI unit, 17-alarm box unit, optional
	DPSDK_CHAR  szSourceType[DPSDK_ORG_CODE_LEN];						// Source type,1=platefrom, 3=Third party, empty = All
}DPSDK_DEVICE_GET_CHANNEL_PARAM;

typedef struct
{
	DPSDK_INT32	iUnitType;											// Unit type
	DPSDK_CHAR szUnitName[DPSDK_NAME_LEN_EX];						// Unit type name
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel code
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Org Code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Org Name
	DPSDK_CHAR szDomainId[DPSDK_ID_LEN];							// Domain ID
	DPSDK_INT32 iEnableWeb;											// Whether or not to support web: 0-Nn, 1-Yes
	DPSDK_CHAR	szChannelIP[DPSDK_IP_LEN];							// Channel ip
}DPSDK_DEVICE_CHANNEL_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total count
	DPSDK_INT32 iChannelNum;
	DPSDK_DEVICE_CHANNEL_INFO* pChannelList;
}DPSDK_DEVICE_CHANNEL_LIST;

typedef struct
{
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];					// Channel code
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Org Code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Org Name
	DPSDK_INT32	iRecordPosition;									// Record storage position, 1: center and device, 2: device, 3: center
}DPSDK_BINDING_CHANNEL_INFO;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szSrcChannelId[DPSDK_CHANNEL_ID_LEN];				// Source channel code
	DPSDK_CHAR szSrcChannelName[DPSDK_CHANNEL_NAME_LEN];			// Source channel name
	DPSDK_CHAR	szOrgCode[DPSDK_ORG_CODE_LEN];						// Org Code
	DPSDK_CHAR	szOrgName[DPSDK_ORG_NAME_LEN];						// Org Name
	DPSDK_INT32	iUnitType;											// Unit type
	DPSDK_CHAR	szUnitTypeName[DPSDK_ORG_NAME_LEN];					// Unit type name
	DPSDK_INT32 ibindingChnlNum;									// Binding channel number
	DPSDK_BINDING_CHANNEL_INFO* pbindingChnlList;					// Binding channel list
}DPSDK_RESOURCE_BINDING_CHANNEL_RELATION_INFO;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR  stKeyWord[DPSDK_CONFIG_PARAM_LEN];					// search conditions
	DPSDK_CHAR	szOrgCode[DPSDK_ORG_CODE_LEN];						// Org Code
	DPSDK_INT32	iUnitType;											// Unit type
}DPSDK_GET_BINDING_CHANNEL_RELATION_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total records
	DPSDK_INT32 iRelationNum;										// The number of Relation
	DPSDK_RESOURCE_BINDING_CHANNEL_RELATION_INFO* pRelationList;	// Relation list
}DPSDK_RESOURCE_BINDING_CHANNEL_RELATION_LIST;

typedef struct
{
	DPSDK_CHAR  szSrcChannelId[DPSDK_CHANNEL_ID_LEN];				// Source channel code
	DPSDK_INT32 ibindingChnlNum;
	DPSDK_CHANNEL_ID* pbindingChnlIdList;
}DPSDK_RESOURCE_BINDING_UPDATE_CHANNEL_RELATION;

typedef struct
{
	DPSDK_INT32 iRelationNum;
	DPSDK_RESOURCE_BINDING_UPDATE_CHANNEL_RELATION* pRelationList;
}DPSDK_RESOURCE_BINDING_UPDATE_CHANNEL_RELATION_LIST;

typedef struct
{
	DPSDK_INT32 iSrcChannelNum;
	DPSDK_CHANNEL_ID* pSrcChannelIdList;
}DPSDK_RESOURCE_BINDING_CHANNEL_LIST;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT32 iIsBindingChannel;									// Whether the binding channel is configured: 0 = no, 1 = yes
}DPSDK_RESOURCE_BINDING_CHANNEL_STATUS_INFO;

typedef struct
{
	DPSDK_INT32 iChannelNum;
	DPSDK_RESOURCE_BINDING_CHANNEL_STATUS_INFO* pChnlStatusList;
}DPSDK_RESOURCE_BINDING_CHANNEL_STATUS_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szDeviceIp[DPSDK_IP_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];
	DPSDK_INT32 iDeviceType;
}DPSDK_UNAUTH_DEVICE;

typedef struct
{
	DPSDK_INT32	iNum;
	DPSDK_UNAUTH_DEVICE* pUnAuthDevice;
}DPSDK_UNAUTH_DEVICE_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32 iErrorCode;
}DPSDK_FAILED_UNAUTH_DEVICE;

typedef struct
{
	DPSDK_INT32 iDeviceCodeNum;
	DPSDK_DEVICE_ID* pDeviceCodeList;
	DPSDK_INT32	iFailedDevicesNum;
	DPSDK_FAILED_UNAUTH_DEVICE* pFailedDevices;
}DPSDK_SAVE_UNAUTH_DEVICE_LIST;

typedef struct
{
	DPSDK_INT32 iStoPlansNum;										// The number of storage plan
	DPSDK_CHANNEL_ID* pStoPlans;									// Storage plan
	DPSDK_INT32 iAlarmPlansNum;										// The number of alarm plan
	DPSDK_CHANNEL_ID* pAlarmPlans;									// Alarm plan
	DPSDK_INT32 iVideoWallsNum;										// The number of TVWALL plan
	DPSDK_CHANNEL_ID* pVideoWalls;									// TVWALL
	DPSDK_INT32 iParkingLotsNum;									// The number of ParkingLots
	DPSDK_CHANNEL_ID* pParkingLots;									// ParkingLots
	DPSDK_INT32 iPlanNum;											// The number of PlanIds
	DPSDK_ID* pPlanId;												// PlanIds
	DPSDK_INT32 iRuleGroupNum;										// The number of RuleGroup
	DPSDK_CHANNEL_ID* pRuleGroups;									// RuleGroups
	DPSDK_INT32 iPassageRulesNum;									// The number of Passage Rule
	DPSDK_NAME* pPassageRules;										// Passage Rules
	DPSDK_INT32 iAlertRuleNamesNum;									// The number of Alert Rule
	DPSDK_NAME* pAlertRuleNames;									// Alert Rules
	DPSDK_INT32	iControlFace;										// Face Deploy Control =has 0= no ,can’t be deleted even in forced delete mode

	DPSDK_DOOR_USAGE_INFO struDoorUsageInfo;
	DPSDK_VISITOR_USAGE_INFO struVisitorUsageInfo;
}DPSDK_DISCOVER_AND_UPDATE_DEVICE_FAIL_INFO;

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];						// Session ID
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iStatus;											// 0=fail, 1=success
	DPSDK_INT32 iErrorCode;
	DPSDK_DISCOVER_AND_UPDATE_DEVICE_FAIL_INFO struFailInfo;
}DPSDK_DISCOVER_AND_UPDATE_DEVICE_RESULT_NOTIFY;

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];						// Session ID
	DPSDK_INT32 iStatus;											// Execution status: 0=In progress, 1=Complete
}DPSDK_BATCH_DISCOVER_DEVICES_NOTIFY;

// Searcher device channel information 
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_INT32 iStatus;											// 1-Finish search,0- unfinished search
}DPSDK_SOSO_CHANNEL_INFO;

// Get list of searcher device channel information
typedef struct
{
	DPSDK_INT32 iDeviceNum;											// The number of device
	DPSDK_SOSO_CHANNEL_INFO struSosoChannelList[1];					// The list of searcher device channel information
}DPSDK_SOSO_CHANNEL_LIST;

// Organization code
typedef struct
{
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_CHAR szOrgRemark[DPSDK_ORG_REMARK_LEN];					// Organization remark
	DPSDK_CHAR szParentCode[DPSDK_ORG_CODE_LEN];					// Parent organization ID
}DPSDK_ORG_EDIT_PARAM;

// Organization code
typedef struct
{
	DPSDK_CHAR szSrcNodeName[DPSDK_ORG_NAME_LEN];					// Source organization name
	DPSDK_CHAR szSrcNodeCode[DPSDK_ORG_CODE_LEN];					// Source organization ID
	DPSDK_CHAR szDestNodeName[DPSDK_ORG_NAME_LEN];					// Destination organization name 
	DPSDK_CHAR szDestNodeCode[DPSDK_ORG_CODE_LEN];					// Destination organization ID
	DPSDK_INT32 iPosition;											// 0 move into organization; 1 in front of organization; -1 behind organization
}DPSDK_ORG_MOVE_PARAM;

// ITC control
typedef struct
{
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];					// Channel code
	DPSDK_INT32 iOperateType;										// "0:up 1:down"
}DPSDK_ITC_PARAM;

// Module code
typedef enum
{
	//MODULE_BASE = 1,												// Basic module
	MODULE_POS = 32,												// POS
	MODULE_BAY = 37,												// Bay
	MODULE_RADAR = 42,												// Radar
	MODULE_ASC = 43,												// ASC
	MODULE_VTO = 44,												// VTO
	MODULE_BUSSINESS_INTELLIGENCE = 45,								// bussiness Intelligence
	MODULE_CCTV = 50,
	MODULE_EG_IP = 51,
	MODULE_EG_CHANNEL = 52,
	MODULE_INTERCOM_VTO = 53,
	MODULE_SIP_ID = 54,
	MODULE_ALARMHOST_IP = 55,
	MODULE_ALARMHOST_DEFENSE = 56,
	MODULE_PASSAGEWAY = 57,
	MODULE_FACERECOGNITION_CHANNEL = 58,
	MODULE_CLIENT_NUM = 59,
	MODULE_APP_NUM = 60,
}DPSDK_MODULE_CODE;

// Dist type
typedef enum
{
	DISK_TYPE_UNKNOWN = 0,											// Unknown
	DISK_TYPE_VIDEO = 1,											// Video
	DISK_TYPE_PIC = 2,												// ANPR Picture
	DISK_TYPE_GENERAL_PIC = 3,										// General Picture
	DISK_TYPE_UNSET = 99,											// Not setup
}DPSDK_DISK_TYPE;

typedef struct
{
	DPSDK_CHAR szPath[DPSDK_FILE_PATH_LEN];							// Disk path
}DPSDK_PATH;

typedef struct
{
	DPSDK_INT32 iPathNum;
	DPSDK_PATH* pPathList;											// Disk path list
}DPSDK_PATH_LIST;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_IP struDiskIP;											// Disk IP
	DPSDK_INT32 iDiskMode;										// Disk add mode: 0-normal mode, 1-user mode, required
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// Username: Optional, required when in user mode
	DPSDK_CHAR szPassword[DPSDK_PWD_LEN];							// Password: AES encryption, optional, required when in user mode
}DPSDK_ADD_NET_DISK_PARAM;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_INT32 iRaidId;
	DPSDK_INT32 iTotalCount;
	DPSDK_PATH*	pPathList;
}DPSDK_ADD_RAID_DISK_PARAM;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR szPath[DPSDK_FILE_PATH_LEN];
}DPSDK_DELETE_RAID_DISK_PARAM;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_INT32 iHotStandbyType;
	DPSDK_CHAR szRaidPath[DPSDK_FILE_PATH_LEN];
	DPSDK_CHAR szPath[DPSDK_FILE_PATH_LEN];
}DPSDK_ADD_RAIDHOT_DISK_PARAM;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_IP struDiskIP;											// Disk IP
}DPSDK_DELETE_NET_DISK_PARAM;

typedef struct
{
	DPSDK_INT32 iRaidId;
	DPSDK_CHAR	szPath[DPSDK_FILE_PATH_LEN];
	DPSDK_CHAR	szSlotNo[DPSDK_DISK_SLOT_NO_LEN]; 						// Slot number, if not obtained, - 1
}DPSDK_HOTSTANDBY_RAID;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_HOTSTANDBY_RAID* pHotStandRaidList;
}DPSDK_HOTSTANDBY_RAIDS;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];			// Server Code
	DPSDK_INT32 iRaidId;									// raid ID
}DPSDK_DISK_RAID_PARAM;

typedef struct
{
	DPSDK_DISK_RAID_PARAM struBaseInfo;
	DPSDK_PATH	struPath;
}DPSDK_DISK_RAID_PARAM_EX;

typedef struct
{
	DPSDK_CHAR szDiskName[DPSDK_NAME_LEN];							// Disk name
	DPSDK_CHAR szUsedCapacity[DPSDK_DISK_CAPACITY_LEN];				// Used capacity of disk
	DPSDK_CHAR szTotalCapacity[DPSDK_DISK_CAPACITY_LEN];			// Total capacity of disk
	DPSDK_PATH struPath;											// Disk path
}DPSDK_DISK_BASE_INFO;

typedef struct
{
	DPSDK_DISK_BASE_INFO struDiskBaseInfo;
	DPSDK_INT32 iHealthStatus;										// Disk health status: 1-good, 2-warning, 3-abnormal
	DPSDK_CHAR  szHealthStatusName[DPSDK_NAME_LEN];					// Disk health status name
	DPSDK_INT32 iDiskStatusNum;
	DPSDK_INT32* pDiskStatusList;									// Disk status: 1-normal, 90-abnormal, 99-unknown
	DPSDK_CHAR  szDiskStatusName[DPSDK_NAME_LEN];					// Disk status name
	DPSDK_INT32 iSlotNum;
	DPSDK_INT32* pSlots;											// slot number default -1
	DPSDK_INT32 iIsAlmostFull;										// Whether disk capacity is running out: 0-no, 1-yes
	DPSDK_INT32 iRaidId;											//0=raid0，1=raid1，5=raid5，6=raid6，10=raid10，50=raid50，-1为非raid盘
}DPSDK_DISK_RAID;

typedef	struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_DISK_RAID * pDiskRaidList;
}DPSDK_DISK_RAIDS;

typedef struct
{
	DPSDK_CHAR szDiskName[DPSDK_NAME_LEN];							// Disk name
	DPSDK_CHAR szTotalCapacity[DPSDK_DISK_CAPACITY_LEN];			// Total capacity of disk
	DPSDK_CHAR szDiskTypeName[DPSDK_NAME_LEN];
	DPSDK_INT32 iHealthStatus;										// Disk health status: 1-good, 2-warning, 3-abnormal
	DPSDK_CHAR  szHealthStatusName[DPSDK_NAME_LEN];					// Disk health status name
	DPSDK_INT32 iDiskFormated;										// Occupy disk or not, 0-no, 1-yes
	DPSDK_INT32 iDiskStatusNum;
	DPSDK_INT32* pDiskStatuses;										// Disk status: 1-active, 2-reconstruction,3-synchronous,4-synchronousFinish,5-Hot standby,6-Hot standby gloabl
	DPSDK_CHAR  szDiskStatusName[DPSDK_NAME_LEN];					// Disk status name
	DPSDK_INT32 iSlotNum;
	DPSDK_INT32* pSlots;											// Slot number, if not obtained, - 1
	DPSDK_INT32 iRaidId;											//0=raid0，1=raid1，5=raid5，6=raid6，10=raid10，50=raid50，-1为非raid盘
	DPSDK_INT32 iHotSpareDeleted;									// Editable: 0-no, 1-yes	
	DPSDK_PATH  struPath;
}DPSDK_RAID_EXT_DISK_INFO;

typedef struct
{
	DPSDK_CHAR szDiskName[DPSDK_NAME_LEN];							// Disk name
	DPSDK_CHAR szTotalCapacity[DPSDK_DISK_CAPACITY_LEN];			// Total capacity of disk
	DPSDK_PATH struPath;
	DPSDK_CHAR szDiskTypeName[DPSDK_NAME_LEN];
	DPSDK_INT32 iHealthStatus;										// Disk health status: 1-good, 2-warning, 3-abnormal
	DPSDK_CHAR szHealthStatusName[DPSDK_NAME_LEN];					// Disk health status name
	DPSDK_INT32 iDiskStatusNum;
	DPSDK_INT32* pDiskStatuses;										// Disk status: 1-active, 2-reconstruction,3-synchronous,4-synchronousFinish,5-Hot standby,6-Hot standby gloabl
	DPSDK_CHAR szDiskStatusName[DPSDK_NAME_LEN];					// Disk status name
	DPSDK_INT32 iSlotNum;
	DPSDK_INT32* pSlots;											// Slot number, if not obtained, - 1
	DPSDK_INT32 iDiskFormated;										// Occupy disk or not, 0-no, 1-yes
	DPSDK_INT32 iRaidId;											//0=raid0，1=raid1，5=raid5，6=raid6，10=raid10，50=raid50，-1为非raid盘
	DPSDK_INT32 iHotSpareDeleted;									// Editable: 0-no, 1-yes		
	DPSDK_INT32 iExtDiskNum;
	DPSDK_RAID_EXT_DISK_INFO* pExtDisks;
}DPSDK_SUB_RAID_DISK_INFO;

typedef struct
{
	DPSDK_DISK_RAID_PARAM struRaidInfo;
	DPSDK_INT32 iTotalCount;
	DPSDK_SUB_RAID_DISK_INFO* pSubRaidInfoList;
}DPSDK_RAID_DISK_INFO;

typedef struct
{
	DPSDK_CHAR szRaidName[DPSDK_NAME_LEN];					// RAID name
	DPSDK_INT32 iRaidId;									// raid ID	
}DPSDK_RAID_BASE_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_RAID_BASE_INFO* pRaidTypeList;
}DPSDK_RAID_TYPES;

typedef struct
{
	DPSDK_CHAR  szUsedCapacity[DPSDK_DISK_CAPACITY_LEN];			// Used capacity of disk
	DPSDK_CHAR  szTotalCapacity[DPSDK_DISK_CAPACITY_LEN];			// Total capacity of disk
	DPSDK_INT32 iAlmostFull;										// Whether disk capacity is running out: 0-no, 1-yes
}DPSDK_DISK_CAPACITY_INFO;

typedef struct
{
	DPSDK_DISK_BASE_INFO struDiskBaseInfo;
	DPSDK_INT32 iDiskType;											// LOCAL disk type see DPSDK_DISK_TYPE; Net disk type: 1-video disk, 2-bayonet picture disk
	DPSDK_CHAR szDiskTypeName[DPSDK_NAME_LEN];						// Disk type name
	DPSDK_INT32 iDiskStatus;										// Disk status: 1-normal, 90-abnormal, 99-unknown
	DPSDK_CHAR szDiskStatusName[DPSDK_NAME_LEN];					// Disk status name
	DPSDK_INT32 iIsOwned;											// Occupy disk or not, 0-no, 1-yes
	DPSDK_INT32 iIsAlmostFull;										// Whether disk capacity is running out: 0-no, 1-yes
	DPSDK_INT32 iDiskMode;											// Disk add mode: 0-normal mode, 1-user mode, required
	DPSDK_CHAR szDiskModeName[DPSDK_NAME_LEN];						// Username: Optional, required when in user mode
}DPSDK_SUB_NET_DISK_INFO;


typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_PATH struPath;											// Disk path

}DPSDK_DELETE_LOCAL_VIRTUALDISK_INFO;

//Picture Storage Warning
typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];						// Server name
	DPSDK_IP   struServerIP;										// Server IP
}DPSDK_STORAGE_WARNING_SERVER;

typedef struct
{
	DPSDK_CHAR		szSubSystemCode[DPSDK_SERVER_CODE_LEN];				// SubSystem Code
	DPSDK_CHAR		szSubSystemName[DPSDK_NAME_LEN];					// SubSystem name
	DPSDK_IP		struSubSystemIP;									// SubSystem IP
	DPSDK_BOOL		bCenter;
}DPSDK_SUBSYSTEM_WARNING_SERVER;

typedef struct
{
	DPSDK_BOOL		bWarning;										//is warning happend 
	DPSDK_INT32		iServerNum;
	DPSDK_STORAGE_WARNING_SERVER* pServerList;
}DPSDK_STORAGE_WARNING_INFO;

typedef struct
{
	DPSDK_BOOL		bWarning;										//is warning happend 
	DPSDK_INT32		iSubSystemNum;
	DPSDK_SUBSYSTEM_WARNING_SERVER* pSubSystemList;
}DPSDK_SUBSYSTEM_WARNING_INFO;

//Local Disk information
typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];						// Server name
	DPSDK_IP struDiskIP;											// Disk IP
	DPSDK_DISK_CAPACITY_INFO struVideoCapacity;
	DPSDK_DISK_CAPACITY_INFO struOtherCapacity;
	DPSDK_INT32 iSubDiskNum;
	DPSDK_SUB_NET_DISK_INFO* pSubDiskList;
}DPSDK_STORAGE_NET_DISK_INFO;

typedef struct
{
	DPSDK_INT32 iDiskNum;
	DPSDK_STORAGE_NET_DISK_INFO* pDiskList;
}DPSDK_STORAGE_NET_DISK_LIST;

typedef struct
{
	DPSDK_INT32 iDiskType;											// LOCAL disk type: 1-video disk, 2-bayonet image disk, 3-face / alarm image disk;
																	// Net disk type: 1-video disk, 2-bayonet picture disk
	DPSDK_CHAR szDiskTypeName[DPSDK_NAME_LEN];						// Disk type name
}DPSDK_DISK_TYPE_INFO;

typedef struct
{
	DPSDK_INT32 iDiskTypeNum;
	DPSDK_DISK_TYPE_INFO* pDiskTypeList;
}DPSDK_STORAGE_DISK_TYPE_LIST;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_INT32 iDiskType;											// Net disk type: 1-video disk, 2-bayonet picture disk
																	// Local disk type: 1-video disk, 2-bayonet image disk, 3-face / alarm image disk; 
	DPSDK_PATH struPath;											// Disk path
}DPSDK_STORAGE_DISK_TYPE_PARAM;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_IP struDiskIp;											// Disk IP
	DPSDK_INT32 iPathNum;
	DPSDK_PATH*	pPathList;											// Disk path list
}DPSDK_STORAGE_NET_DISK_FORMAT_PARAM;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_INT32 iPathNum;
	DPSDK_PATH*	pPathList;											// Disk path list
}DPSDK_STORAGE_LOCAL_DISK_FORMAT_PARAM;

// The parameter of disk rob
typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_INT32 iDiskType;											// Net disk type: 1-video disk, 2-bayonet picture disk
																	// Local disk type: 1-video disk, 2-bayonet image disk, 3-face / alarm image disk; 
	DPSDK_PATH struPath;											// Disk path
}DPSDK_STORAGE_DISK_ROB_PARAM;

typedef struct
{
	DPSDK_DISK_BASE_INFO struDiskBaseInfo;
	DPSDK_INT32 iDiskType;											/// LOCAL disk type see DPSDK_DISK_TYPE
																	// Net disk type: 1-video disk, 2-bayonet picture disk
	DPSDK_CHAR szDiskTypeName[DPSDK_NAME_LEN];						// Disk type name
	DPSDK_INT32 iHealthStatus;										// Disk health status: 1-good, 2-warning, 3-abnormal
	DPSDK_CHAR szHealthStatusName[DPSDK_NAME_LEN];					// Disk health status name
	DPSDK_INT32 iDiskStatusNum;										// Disk status count
	DPSDK_INT32* pDiskStatuses;										// Disk status: 1-active, 2-reconstruction,3-synchronous,4-synchronousFinish,5-Hot standby,6-Hot standby gloabl
	DPSDK_CHAR szDiskStatusName[DPSDK_NAME_LEN];					// Disk status name
	DPSDK_INT32 iSlotNum;											// Slot number count
	DPSDK_INT32* pSlots;											// Slot number list, if not obtained, - 1
	DPSDK_INT32 iIsOwned;											// Occupy disk or not, 0-no, 1-yes
	DPSDK_INT32 iRaidId;											//0=raid0，1=raid1，5=raid5，6=raid6，10=raid10，50=raid50，-1为非raid盘
	DPSDK_INT32 iEditable;											// Editable: 0-no, 1-yes
	DPSDK_INT32 iIsAlmostFull;										// Whether disk capacity is running out: 0-no, 1-yes
	DPSDK_INT32	iDiskFlag;											// 0=no system disk and DSS install disk，1=Only have system disk，2=only have dss install disk，3=have system disk and dss install disk
	DPSDK_INT32 iIsVirtual;											// The Disk is Virtual or not.
	DPSDK_INT32 iHotSpareType;										// Hot spare type: 0 = non hot spare, 1 = global hot spare. This field is only valid for Linux
}DPSDK_SUB_LOCAL_DISK_INFO;

//Local Disk information
typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];						// Server name
	DPSDK_DISK_CAPACITY_INFO struVideoCapacity;
	DPSDK_DISK_CAPACITY_INFO struOtherCapacity;
	DPSDK_DISK_CAPACITY_INFO struIncidentCapacity;
	DPSDK_INT32 iSubDiskNum;
	DPSDK_SUB_LOCAL_DISK_INFO* pSubDiskList;
}DPSDK_STORAGE_LOCAL_DISK_INFO;

typedef struct
{
	DPSDK_INT32 iDiskNum;											// The number of disk
	DPSDK_STORAGE_LOCAL_DISK_INFO* pDiskList;						// The list of disk
}DPSDK_STORAGE_LOCAL_DISK_LIST;

typedef struct
{
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];							// Group name: Optional, required when in user mode
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_INT32 iDiskPathNum;
	DPSDK_PATH* pDiskPathList;										// Binding disk path list
	DPSDK_INT32 iChnlNum;
	DPSDK_CHANNEL_ID* pChnlList;									// binding channel ID list
}DPSDK_DISK_GROUP_PARAM;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];								// Disk group ID
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];							// Disk group name
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];						// Server name
	DPSDK_INT32 iBindingDiskNum;
	DPSDK_DISK_BASE_INFO* pBindingDiskList;
	DPSDK_INT32 iBindingChnlNum;
	DPSDK_CHANNEL_ID_AND_NAME* pBindingChnlList;
}DPSDK_STORAGE_DISK_GROUP_DETAIL;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];								// Disk group ID
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];							// Disk group name
	DPSDK_CHAR szGrpCapacity[DPSDK_DISK_CAPACITY_LEN];				// Disk group capacity
	DPSDK_INT32	iStatus;											// Disk group status, 1-normal 0-abnormal
}DPSDK_SUB_DISK_GROUP_INFO;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];						// Server name
	DPSDK_IP struServerIP;											// Disk IP
	DPSDK_INT32	iStatus;											// Server online status, 1-online 0-offline
	DPSDK_CHAR szTotalCapacity[DPSDK_DISK_CAPACITY_LEN];			// Total capacity of video disk
	DPSDK_CHAR szAllocateCapacity[DPSDK_DISK_CAPACITY_LEN];			// Allocate capacity of video disk
	DPSDK_INT32 iSubDiskGrpNum;
	DPSDK_SUB_DISK_GROUP_INFO* pSubDiskGrpList;
}DPSDK_STORAGE_DISK_GROUP_INFO;

typedef struct
{
	DPSDK_INT32 iDiskGrpNum;
	DPSDK_STORAGE_DISK_GROUP_INFO* pDiskGrpList;
}DPSDK_STORAGE_DISK_GROUP_LIST;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];						// Server name
	DPSDK_CHAR szDiskName[DPSDK_NAME_LEN];							// Disk name  
	DPSDK_CHAR szUsedCapacity[DPSDK_DISK_CAPACITY_LEN];				// Used capacity of disk
	DPSDK_CHAR szTotalCapacity[DPSDK_DISK_CAPACITY_LEN];			// Total capacity of disk
	DPSDK_PATH struPath;											// Disk path
}DPSDK_STORAGE_UNBOUND_DISK_INFO;

typedef struct
{
	DPSDK_INT32 iDiskNum;
	DPSDK_STORAGE_UNBOUND_DISK_INFO* pDiskList;
}DPSDK_STORAGE_UNBOUND_DISK_LIST;

typedef struct
{
	DPSDK_CHAR szUsedCapacity[DPSDK_DISK_CAPACITY_LEN];				// Used capacity of disk
	DPSDK_CHAR szTotalCapacity[DPSDK_DISK_CAPACITY_LEN];			// Total capacity of disk
}DPSDK_DISK_CAPACITY_BASE_INFO;

typedef struct
{
	DPSDK_DISK_CAPACITY_BASE_INFO struVideoCapacity;
	DPSDK_DISK_CAPACITY_BASE_INFO struPicCapacity;
	DPSDK_DISK_CAPACITY_BASE_INFO struOtherCapacity;
	DPSDK_DISK_CAPACITY_BASE_INFO struIncidentCapacity;
}DPSDK_DISK_STATISTICS_INFO;

typedef struct
{
	DPSDK_DISK_STATISTICS_INFO struNetDisk;
	DPSDK_DISK_STATISTICS_INFO struLocalDisk;
}DPSDK_STORAGE_DISK_STATISTICS;

// The position of store video
typedef enum
{
	STORAGE_NOT_ENABLED = 0,										// Store Not enabled
	STORAGE_SEARVER = 1,											// Store in server
	STORAGE_SEARVER_ADDITIONAL = 2,									// Store in server by additional record
	STORAGE_DEVICE = 3,												// Store in device
}DPSDK_STORAGE_POSITION;

#define DPSDK_MAX_STORAGE_PLAN_NODE_NUM		32						// Max channel number of video plan
#define DPSDK_MAX_STORAGE_PLAN_NUM			100						// Max video plan number of single query
#define DPSDK_MAX_STORAGE_DISK_NUM			100

// Video plan
typedef struct
{
	DPSDK_INT32 iId;												// Record id
	DPSDK_CHAR szName[DPSDK_NAME_LEN];
	DPSDK_INT32 iRecordType;										// Code stream type DPSDK_STREAM_TYPE
	DPSDK_INT32 iChannelNum;
	DPSDK_CHANNEL_ID* pChannelList;
	DPSDK_INT32 iTimeTempId;										// The id of time template
	DPSDK_CHAR szMemo[DPSDK_USER_REMARK_LEN];						// Memo
																	//DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT32 iPlanType;											// Storage position see DPSDK_STORAGE_POSITION
	DPSDK_BOOL bStat;												// Enable status
	DPSDK_CHAR szTemplateName[DPSDK_NAME_LEN];						// The name of time template(Not need when save)
}DPSDK_STORAGE_PLAN_INFO_PER;

// The parameter of copy video plan
typedef struct
{
	DPSDK_INT32 iId;												// Record id
	DPSDK_INT32 iDestChannelNum;									// The number of destination channel id
	DPSDK_CHANNEL_ID* pDestChannelList;								// The list of destination channel id
}DPSDK_STORAGE_PLAN_COPY_PARAM;

// Storage Plan
typedef struct
{
	DPSDK_INT32 iRecordType;										// Record type: 1= General Video,2=Alarm Video,81=Backup,83=Motion Detection Recording
	DPSDK_INT32 iChannelNum;
	DPSDK_CHANNEL_ID* pChannelList;									// Channel id list
}DPSDK_STORAGE_PLAN_UNABLE_CHANNEL_PARAM;

typedef struct
{
	DPSDK_INT32 iChannelNum;										// The number of channel
	DPSDK_CHANNEL_ID* pChannelIds;									// Channel id list
}DPSDK_STORAGE_PLAN_UNABLE_CHANNELS_RESULT;

typedef struct
{
	DPSDK_INT32 iPosition;											// Storage position see DPSDK_STORAGE_POSITION
	DPSDK_INT32 iStreamType;										// Code stream type DPSDK_STREAM_TYPE
	DPSDK_INT32 iTimeTempId;										// The id of time template
	DPSDK_BOOL bStat;												// Enable status
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel id
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
}DPSDK_STORAGE_PLAN_INFO;

typedef struct
{
	DPSDK_INT32 iPlanId;											// Plan id
	DPSDK_CHAR  szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel id
	DPSDK_INT32 iPosition;											// Storage position, see DPSDK_STORAGE_POSITION
	DPSDK_CHAR  szPositionName[DPSDK_NAME_LEN];						// Storage position name
	DPSDK_INT32 iStreamType;										// Stream type, see DPSDK_STREAM_TYPE
	DPSDK_CHAR  szStreamTypeName[DPSDK_NAME_LEN];					// Stream type name
	DPSDK_INT32 iTimeTempId;										// Time template ID
	DPSDK_CHAR  szTimeTempName[DPSDK_NAME_LEN];						// Time template name
	DPSDK_BOOL  bStat;												// Enable status
	DPSDK_CHAR  szRemark[DPSDK_MEMO_LEN];
}DPSDK_STORAGE_PLAN_DETAIL_INFO;

typedef struct
{
	DPSDK_INT32 iPlanNum;
	DPSDK_STORAGE_PLAN_DETAIL_INFO* pPlanList;
}DPSDK_STORAGE_PLAN_DETAIL_LIST;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Org Code
	DPSDK_CHAR szpKeyWord[DPSDK_KEYWORD_LEN_EX];					// Keyword
	DPSDK_INT32 iPosition;											// Storage position see DPSDK_STORAGE_POSITION
}DPSDK_STORAGE_GET_CHANNEL_RECORD_PLAN_PARAM;

typedef struct
{
	DPSDK_CHAR  szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel id
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
	DPSDK_CHAR szDeviceId[DPSDK_DEVICE_ID_LEN];						// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Org Code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Org Name
	DPSDK_INT32 iPlanId;											// Plan id
	DPSDK_CHAR szPlanName[DPSDK_NAME_LEN_EX];						// Plan name
	DPSDK_INT32 iPosition;											// Storage position see DPSDK_STORAGE_POSITION
	DPSDK_CHAR szPositionName[DPSDK_NAME_LEN_EX];					// Storage position name
	DPSDK_INT32 iStreamType;										// Code stream type DPSDK_STREAM_TYPE
	DPSDK_CHAR szStreamTypeName[DPSDK_NAME_LEN_EX];					// Code stream type name
	DPSDK_INT32 iTimeTempId;										// Time template ID
	DPSDK_CHAR szTimeTempName[DPSDK_NAME_LEN_EX];					// Time template type name
	DPSDK_BOOL bStat;												// Enable status
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];							// Remark
}DPSDK_STORAGE_CHANNEL_RECORD_PLAN_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iRecordPlanNum;
	DPSDK_STORAGE_CHANNEL_RECORD_PLAN_INFO* pRecordPlanList;
}DPSDK_STORAGE_CHANNEL_RECORD_PLAN_LIST;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;									// Page info
	DPSDK_INT32 iPlanID;											// Plan id
}DPSDK_GET_CHANNEL_REMOVE_LOG_PARAM;

typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name
	DPSDK_CHAR  szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel id
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
	DPSDK_INT32 iPlanId;											// Plan id
	DPSDK_CHAR szPlanName[DPSDK_NAME_LEN_EX];						// Plan name
	DPSDK_TIMET tOperateTime;										// Operate time				
}DPSDK_STORAGE_PLAN_CHANNEL_REMOVE_LOG;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total count
	DPSDK_INT32 iLogNum;
	DPSDK_STORAGE_PLAN_CHANNEL_REMOVE_LOG* pLogList;
}DPSDK_STORAGE_PLAN_CHANNEL_REMOVE_LOG_LIST;

typedef struct
{
	DPSDK_CHAR  szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel id
	DPSDK_INT32 iPlanId;											// Plan id
	DPSDK_BOOL bStat;												// Enable status
}DPSDK_STORAGE_PLAN_STATUS_PARAM;

typedef struct
{
	DPSDK_INT32 iPlanIDNum;
	DPSDK_INT32* pPlanIdList;
}DPSDK_STORAGE_PLAN_ID_LIST;

typedef struct
{
	DPSDK_CHAR szSourceChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32 iPosition;			// 1=center
	DPSDK_BOOL bCovered;			// 0=false, 1=true
	DPSDK_ID_LIST struTargetChannelIds;
}DPSDK_STORAGE_PLAN_COPY_CHANNEL_RECORD_PLAN_PARAM;

// The list of video plan
typedef struct
{
	DPSDK_INT32 iNextPage;									// Next page; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iPlanNum;									// The number of video plan
	DPSDK_STORAGE_PLAN_INFO* pPlanList;						// The list of video plan
}DPSDK_STORAGE_PLAN_LIST;

typedef struct
{
	DPSDK_CHAR szPlanName[DPSDK_NAME_LEN];							// Plan name
	DPSDK_INT32 iPosition;											// Storage position see DPSDK_STORAGE_POSITION
	DPSDK_INT32 iStreamType;										// Code stream type DPSDK_STREAM_TYPE
	DPSDK_INT32 iTimeTempId;										// The id of time template
	DPSDK_BOOL bStat;												// Enable status
	DPSDK_INT32 iChannelIdNum;										// // Channel id number
	DPSDK_CHANNEL_ID* pChannelIdList;								// Channel id list
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
}DPSDK_STORAGE_PLAN_RECORD_BASE_INFO;

typedef struct
{
	bool bStat;														// Record plan status
	DPSDK_INT32 iRecordPlanIdNum;									// Record Plan number
	DPSDK_UINT32* pRecordPlanIdList;								// Record Plan id list
}DPSDK_STORAGE_PLAN_RECORD_UPDATESTATUS_INFO;

typedef struct
{
	DPSDK_INT32 iPage;												// 页数
	DPSDK_INT32 iPageSize;											// 每页个数
	DPSDK_STORAGE_POSITION iPosition;								// 位置			
	DPSDK_CHAR  szOrgId[DPSDK_ORG_CODE_LEN];						// 组织ID
	DPSDK_CHAR szpKeyWord[DPSDK_KEYWORD_LEN_EX];					// Keyword
}DPSDK_STORAGE_PLAN_RECORD_QUERYCHANNEL_INFO;

typedef struct
{
	DPSDK_INT32 iPlanId;											// Plan ID
	DPSDK_CHAR szPlanName[DPSDK_NAME_LEN_EX];						// Plan name
	DPSDK_INT32 iPosition;											// Storage position see DPSDK_STORAGE_POSITION
	DPSDK_CHAR szPositionName[DPSDK_NAME_LEN_EX];					// Storage position name
	DPSDK_INT32 iStreamType;										// Code stream type DPSDK_STREAM_TYPE
	DPSDK_CHAR szStreamTypeName[DPSDK_NAME_LEN_EX];					// Code stream type name
	DPSDK_INT32 iTimeTempId;										// Time template ID
	DPSDK_CHAR szTimeTempName[DPSDK_NAME_LEN_EX];					// Time template type name
	DPSDK_BOOL bStat;												// Enable status
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];							// Remark
}DPSDK_STORAGE_PALN_RECORD_INFO;

typedef struct
{
	DPSDK_STORAGE_PALN_RECORD_INFO struBaseInfo;
	DPSDK_INT32 iChannelNum;										// Channel number
	DPSDK_CHANNEL_INFO* pChannelList;								// Channel id list
}DPSDK_STORAGE_PLAN_RECORD_DETAIL_INFO;

typedef struct
{
	DPSDK_STORAGE_PALN_RECORD_INFO struBaseInfo;				// base information
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];					// org Name
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];					// org Code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];				// Device name
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];				// Device ID
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];			// Channel name
	DPSDK_CHAR  szChannelId[DPSDK_CHANNEL_ID_LEN];				// Channel id

}DPSDK_STORAGE_PLAN_RECORD_PAGEUNIT_INFO;

typedef struct
{
	DPSDK_STORAGE_PLAN_RECORD_PAGEUNIT_INFO* pStruPageUnitInfo;				// base information
	DPSDK_INT32 iTotalCount;											// total
	DPSDK_INT32 iRecordNum;											// total

}DPSDK_STORAGE_PLAN_RECORD_PAGERESULT_INFO;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;									// Total count
	DPSDK_CHAR szPlanName[DPSDK_NAME_LEN_EX];						// Plan name
	DPSDK_INT32 iPosition;											// Storage position see DPSDK_STORAGE_POSITION
}DPSDK_STORAGE_GET_RECORD_PALN_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total count
	DPSDK_INT32 iRecordPlanNum;
	DPSDK_STORAGE_PALN_RECORD_INFO* pRecordPlanList;
}DPSDK_STORAGE_PALN_RECORD_LIST;

typedef struct
{
	DPSDK_INT32 iPosition;											// Storage position see DPSDK_STORAGE_POSITION
	DPSDK_INT32 iStreamType;										// Code stream type DPSDK_STREAM_TYPE
	DPSDK_INT32 iTimeTempId;										// The id of time template
	DPSDK_BOOL bStat;												// Enable status
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel id
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
}DPSDK_STORAGE_PLAN_CHANNEL_RECORD_INFO;

typedef struct
{
	DPSDK_INT32 iPlanId;											// Plan id
	DPSDK_CHAR  szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel id
	DPSDK_INT32 iPosition;											// Storage position, see DPSDK_STORAGE_POSITION
	DPSDK_CHAR  szPositionName[DPSDK_NAME_LEN];						// Storage position name
	DPSDK_INT32 iStreamType;										// Stream type, see DPSDK_STREAM_TYPE
	DPSDK_CHAR  szStreamTypeName[DPSDK_NAME_LEN];					// Stream type name
	DPSDK_INT32 iTimeTempId;										// Time template ID
	DPSDK_CHAR  szTimeTempName[DPSDK_NAME_LEN];						// Time template name
	DPSDK_BOOL  bStat;												// Enable status
	DPSDK_CHAR  szRemark[DPSDK_MEMO_LEN];
}DPSDK_STORAGE_PLAN_CHANNEL_RECORD_DETAIL_INFO;

typedef struct
{
	DPSDK_INT32 iPlanNum;
	DPSDK_STORAGE_PLAN_CHANNEL_RECORD_DETAIL_INFO* pPlanList;
}DPSDK_STORAGE_PALN_CHANNEL_RECORD_LIST;

typedef struct
{
	DPSDK_CHAR szBeginTime[DPSDK_TIME_STRING_LEN];					// Begin time, HH:mm:ss, required
	DPSDK_CHAR szEndTime[DPSDK_TIME_STRING_LEN];					// End time, HH:mm:ss, required
}DPSDK_START_AND_END_TIME;

typedef struct
{
	// Used to modify and obtain patch plan
	DPSDK_INT32 iPatchPlanId;										// Patch Plan ID
	DPSDK_INT32 iStreamType;										// Stream Type: see DPSDK_STREAM_TYPE
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT32 iStatus;											// Start stop status: 0-off, 1-on, required
	DPSDK_INT32 iPatchDays;											// Days of supplementary record, range [1,7], required
}DPSDK_PATCH_PLAN_BASE_INFO;

typedef struct
{
	DPSDK_PATCH_PLAN_BASE_INFO struBaseInfo;
	DPSDK_INT32 iExecutePeriodNum;									// Execute period number
	DPSDK_START_AND_END_TIME* pExecutePeriodList;					// Execute period list
}DPSDK_STORAGE_PLAN_PATCH_PLAN_INFO;

typedef struct
{
	DPSDK_INT32 iPatchPlanNum;
	DPSDK_STORAGE_PLAN_PATCH_PLAN_INFO* pPatchPlanList;
}DPSDK_STORAGE_PLAN_PATCH_PLAN_LIST;

typedef struct
{
	DPSDK_INT32 iPatchPlanId;										// Patch Plan ID
	DPSDK_INT32 iPatchType;											// Patch Type: 0:Time Patch 1:WIFI Patch
	DPSDK_INT32 iStatus;											// Start stop status: 0-off, 1-on, required
	DPSDK_INT32 iPatchDays;											// Days of supplementary record, range [1,7], required
}DPSDK_FILE_PATCH_PLAN_BASE_INFO;

typedef struct
{
	DPSDK_FILE_PATCH_PLAN_BASE_INFO struBaseInfo;
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device Code
	DPSDK_INT32 iExecutePeriodNum;									// Execute period number
	DPSDK_START_AND_END_TIME* pExecutePeriodList;					// Execute period list
}DPSDK_DEVICE_FILE_PATCH_PLAN_INFO;

typedef struct
{
	DPSDK_FILE_PATCH_PLAN_BASE_INFO struBaseInfo;
	DPSDK_INT32 iDeviceNum;
	DPSDK_DEVICE_CODE* pDeviceCodeList;
	DPSDK_INT32 iExecutePeriodNum;									// Execute period number
	DPSDK_START_AND_END_TIME* pExecutePeriodList;					// Execute period list
}DPSDK_FILE_PATCH_PLAN_INFO;

typedef struct
{
	DPSDK_FILE_PATCH_PLAN_INFO struPlanListInfo;
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device Code
}DPSDK_DEVICE_FILE_PATCH_PLAN_DETAIL;

typedef struct
{
	DPSDK_INT32 iPatchPlanNum;
	DPSDK_DEVICE_FILE_PATCH_PLAN_DETAIL* pFilePlanList;
}DPSDK_DEVICE_FILE_PATCH_PLAN_LIST;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Org Code
	DPSDK_CHAR szpKeyWord[DPSDK_KEYWORD_LEN_EX];					// Keyword
}DPSDK_STORAGE_GET_DEVICE_FILE_PATCH_PLAN_PARAM;

typedef struct
{
	DPSDK_DEVICE_FILE_PATCH_PLAN_INFO	struFilePatchBase;
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Org Code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Org Name
}DPSDK_STORAGE_GET_DEVICE_FILE_PATCH_PLAN_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total records
	DPSDK_INT32 iFilePatchPlanNum;
	DPSDK_STORAGE_GET_DEVICE_FILE_PATCH_PLAN_INFO* pFilePatchPlanList;
}DPSDK_STORAGE_GET_DEVICE_FILE_PATCH_PLAN_LIST;

typedef struct
{
	// Used to modify and obtain patch plan
	DPSDK_INT32 iPatchPlanId;										// Patch Plan ID
	DPSDK_INT32 iStreamType;										// Stream Type: see DPSDK_STREAM_TYPE
	DPSDK_INT32 iStatus;											// Start stop status: 0-off, 1-on, required
	DPSDK_INT32 iPatchDays;											// Days of supplementary record, range [1,7], required
}DPSDK_STORAGE_PATCH_PLAN_BASE_INFO;

typedef struct
{
	DPSDK_STORAGE_PATCH_PLAN_BASE_INFO struBaseInfo;
	DPSDK_INT32 iChannelIdNum;										// Channel ID number
	DPSDK_CHANNEL_ID* pChannelIdList;									// Channel ID list							
	DPSDK_INT32 iExecutePeriodNum;									// Execute period number
	DPSDK_START_AND_END_TIME* pExecutePeriodList;					// Execute period list
}DPSDK_STORAGE_UPDATE_PATCH_PLAN_INFO;

typedef struct
{
	DPSDK_STORAGE_PATCH_PLAN_BASE_INFO struBaseInfo;
	DPSDK_INT32 iChannelNum;										// Channel number
	DPSDK_CHANNEL_ID_AND_NAME* pChannelList;						// Channel list							
	DPSDK_INT32 iExecutePeriodNum;									// Execute period number
	DPSDK_START_AND_END_TIME* pExecutePeriodList;					// Execute period list
}DPSDK_STORAGE_GET_PATCH_PLAN_INFO;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR szPlanName[DPSDK_NAME_LEN_EX];						// Plan name
}DPSDK_STORAGE_GET_PATCH_PLAN_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPatchPlanNum;
	DPSDK_STORAGE_PATCH_PLAN_BASE_INFO* pPatchPlanList;
}DPSDK_STORAGE_PATCH_PLAN_LIST;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Org Code
	DPSDK_CHAR szpKeyWord[DPSDK_KEYWORD_LEN_EX];					// Keyword
}DPSDK_STORAGE_GET_CHANNEL_PATCH_PLAN_PARAM;

typedef struct
{
	DPSDK_INT32 iPatchPlanId;										// Patch Plan ID
	DPSDK_CHAR  szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel id
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel name
	DPSDK_CHAR szDeviceId[DPSDK_DEVICE_ID_LEN];						// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Org Code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Org Name
	DPSDK_INT32 iStreamType;										// Stream Type: see DPSDK_STREAM_TYPE
	DPSDK_CHAR szStreamTypeName[DPSDK_NAME_LEN_EX];					// Stream Type name
	DPSDK_INT32 iPatchDays;											// Days of supplementary record, range [1,7], required
	DPSDK_BOOL bStat;												// Enable status
	DPSDK_STORAGE_PLAN_PATCH_PLAN_INFO struPlanPatchInfo;
}DPSDK_STORAGE_CHANNEL_PATCH_PLAN_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iPatchPlanNum;
	DPSDK_STORAGE_CHANNEL_PATCH_PLAN_INFO* pPatchPlanList;
}DPSDK_STORAGE_CHANNEL_PATCH_PLAN_LIST;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT32 iIsCenterRecordPlan;								// Whether the central video recording plan has been configured: 0 = no, 1 = yes
	DPSDK_INT32 iIsDeviceRecordPlan;								// Whether the device recording plan has been configured: 0 = no, 1 = yes
	DPSDK_INT32 iIsPatchPlan;										// Whether patch plan has been configured: 0 = no, 1 = yes
}DPSDK_STORAGE_PLAN_CONFIG_STATUS_INFO;

typedef struct
{
	DPSDK_INT32 iChannelNum;
	DPSDK_STORAGE_PLAN_CONFIG_STATUS_INFO* pChnlStatusList;
}DPSDK_STORAGE_PLAN_CONFIG_STATUS_LIST;

typedef struct
{
	DPSDK_CHAR  szCoverUrl[DPSDK_URL_LEN];				//cover url
	DPSDK_CHAR  szChannelID[DPSDK_CHANNEL_ID_LEN];		//channel id
}DPSDK_UPDATE_COVER_PARAM;

typedef struct
{
	DPSDK_INT32 iCoverID;								//cover id
}DPSDK_UPDATE_COVER_RESULT;

typedef struct
{
	DPSDK_CHAR  szChannelID[DPSDK_CHANNEL_ID_LEN];		//channel id
}DPSDK_GET_TRACKING_POINTS_PARAM;

typedef struct
{
	DPSDK_CHAR  szCoverUrl[DPSDK_URL_LEN];				//cover url
	DPSDK_CHAR  szChannelID[DPSDK_CHANNEL_ID_LEN];		//channel id
	DPSDK_CHAR  szChannelName[DPSDK_CHANNEL_NAME_LEN];		//channel id
	DPSDK_BOOL	bPermitted;								//whether the current user have permission
	DPSDK_DOUBLE fPosX;
	DPSDK_DOUBLE fPosY;
	DPSDK_INT32	iPointStyle;							//1: Icon, 2: rectangle, 3: circle
	DPSDK_DOUBLE fRectLength;							//The variable is useful when iPointStyle=2
	DPSDK_DOUBLE fRectWidth;							//The variable is useful when iPointStyle=2
	DPSDK_DOUBLE fRadius;								//The variable is useful when iPointStyle=3
	DPSDK_INT32	iOpacity;
	DPSDK_CHAR	szColor[DPSDK_COLOR_LEN];
	DPSDK_INT32	iOrder;
}DPSDK_TRACKING_POINT_INFO;

typedef struct
{
	DPSDK_INT32					iTotalCount;
	DPSDK_TRACKING_POINT_INFO*	pPointsList;
}DPSDK_TRACKING_POINT_LIST;

// The status of file system
typedef enum
{
	FILESYSTEM_STATUS_OK = 1,										// Normal
	FILESYSTEM_STATUS_OTHER = 2,									// Abnormal
	FILESYSTEM_STATUS_UNFORMAT = 3,									// UnFormat
}DPSDK_FILESYSTEM_STATUS;

// Virtual disk information
typedef struct
{
	DPSDK_INT32 iVirtualDiskType;									// Virtual disk type see DPSDK_DISK_TYPE
	DPSDK_CHAR szVirtualPath[DPSDK_FILE_PATH_LEN];					// Virtual disk path
	DPSDK_UINT64 uiCapacity;										// Capacity
}DPSDK_STORAGE_VIRTUALDISK_PARAM;

// The parameter of delete virtual disk
typedef struct
{
	DPSDK_INT32 iVirtualDiskType;									// Virtual disk type DPSDK_DISK_TYPE
	DPSDK_CHAR szVirtualPath[DPSDK_FILE_PATH_LEN];					// Virtual disk path
}DPSDK_STORAGE_VIRTUALDISK_DELETE_PARAM;

// Local storage disk type
typedef enum
{
	DISK_TYPE_FAT32 = 1,											// FAT32
	DISK_TYPE_NTFS = 2,												// NTFS
}DPSDK_LOGICALDISK_TYPE;

// Service information 
typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server code
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];					    // Server name
}DPSDK_DISK_SERVER_INFO;

// Service information
typedef struct
{
	DPSDK_INT32 iServerNum;											// The number of server
	DPSDK_DISK_SERVER_INFO struDiskServer[1];						// The list of server
}DPSDK_DISK_SERVER_LIST;

// Device storage position
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// device code
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN];					    // device name
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Org Code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];						// Org Name
	DPSDK_BOOL bSupportStoragePicture;								// Whether support storage picture, 0: unsupport, 1: support
	DPSDK_INT32 iPicturePosition;									// Picture storage position, 1: center and device, 2: device, 3: center
	DPSDK_INT32 iAlarmRecordPosition;								// Alarm record storage position, 1: center and device, 2: device, 3: center
	DPSDK_BOOL bEnablePersistDuration;								// Whether enable persist duration for alarm record and picture, 0:disable, 1:enable
	DPSDK_INT32 iPersistDuration;									// Alarm record and picture persist duration, unit: day
}DPSDK_DEVICE_STORAGE_POSITION_INFO;

typedef struct
{
	DPSDK_INT32 iTotalNum;											// Total count
	DPSDK_INT32 iListCount;											//T和 list count
	DPSDK_DEVICE_STORAGE_POSITION_INFO* pStoragePositionList;		// The list of storage position
}DPSDK_DEVICE_STORAGE_POSITION_LIST;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// device code
	DPSDK_INT32 iPicturePosition;									// Picture storage position, 1: center and device, 2: device, 3: center
	DPSDK_INT32 iAlarmRecordPosition;								// Alarm record storage position, 1: center and device, 2: device, 3: center
	DPSDK_BOOL bEnablePersistDuration;								// Whether enable persist duration for alarm record and picture, 0:disable, 1:enable
	DPSDK_INT32 iPersistDuration;									// Alarm record and picture persist duration, unit: day
}DPSDK_UPDATE_DEVICE_STORAGE_POSITION;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
}DPSDK_GET_LOCAL_LOG;

typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];
	DPSDK_CHAR szLogType[DPSDK_LEN_64];
	DPSDK_TIMET tLogTime;
	DPSDK_CHAR szLogMsg[DPSDK_CONTENT_LEN];
}DPSDK_LOCAL_LOG_RESULT;
typedef struct
{
	DPSDK_CHAR szSessionId[DPSDK_ID_LEN];
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];			// Device code
	DPSDK_INT32 iTotal;
	DPSDK_INT32 iPageNo;
	DPSDK_INT32 iPageSize;
	DPSDK_INT32 iFinished;									// 1 finished 0 unfinished

	DPSDK_INT32 iDeviceLogResultNum;
	DPSDK_LOCAL_LOG_RESULT* pDeviceLocalLogResult;
}DPSDK_DEVICE_LOCAL_LOG_NOTIFY;

typedef struct
{
	DPSDK_PAGE_INFO		struPage;
	DPSDK_TIMET			tBeginTime;
	DPSDK_TIMET			tEndTime;
	DPSDK_CHAR			szKeyword[DPSDK_KEYWORD_LEN]; // resource name /resource IP/fault source name
	DPSDK_CHAR			szStatus[DPSDK_ENUM_LEN];		// 0: clear，1:happen
	DPSDK_CHAR			szOrgCode[DPSDK_CODE_LEN];
	DPSDK_CHAR			szResourceCategory[DPSDK_ENUM_LEN]; // 1=server，3=device
	DPSDK_CHAR			szResourceType[DPSDK_ENUM_LEN];	//0=server，device Category ID

	DPSDK_ID_LIST		struResourceSubTypes;

	DPSDK_INT32			iFaultTypesNum;
	DPSDK_INT32*		pFaultTypesList;	// 1=stop，2=device offline，3=channel offline，21=Hard disk full，22=Hard disk fault，
											// 23=no Hard disk，24=Disk detection，25=Shared service exception，26=Storage pool exception，
											// 27=Dual control version exception，28=Cluster switching，29=RAID alarm，30=Hard disk health is abnormal，
											// 31=Equipment anti-disassembly alarm，32=Chassis Intrusion，51=Video loss，52=Video occlusion，
											// 53=Channel offline (NVR alarm and device offline)
	DPSDK_CHAR			szResourceCode[DPSDK_CODE_LEN];
	DPSDK_CHAR			szChildren[DPSDK_ENUM_LEN]; //0=no，1=yes，default 0
	DPSDK_INT32			iOrderType;					// 1=fault time
	DPSDK_BOOL			bOrderDirection;			// 0=Ascending order，1=Descending order
}DPSDK_GET_FAULT_PARAM;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_CODE_LEN];
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];
	DPSDK_CHAR szResourceType[DPSDK_ENUM_LEN];	//0=server，device Category ID
	DPSDK_CHAR szResourceTypeName[DPSDK_NAME_LEN];
	DPSDK_CHAR szResourceIp[DPSDK_IP_LEN];
	DPSDK_CHAR szResourceCode[DPSDK_CODE_LEN];
	DPSDK_CHAR szResourceName[DPSDK_NAME_LEN];
	DPSDK_CHAR szParentResourceCode[DPSDK_CODE_LEN];
	DPSDK_CHAR szParentResourceName[DPSDK_NAME_LEN];
	DPSDK_CHAR szResourceSubTypes[DPSDK_NUM_LEN]; // server | service type | Device type
	DPSDK_CHAR szResourceSubTypesName[DPSDK_NAME_LEN];
	DPSDK_CHAR szFaultType[DPSDK_ENUM_LEN];
	DPSDK_CHAR szFaultTypeName[DPSDK_NAME_LEN];
	DPSDK_INT32 iStatus;
	DPSDK_CHAR	szStatusName[DPSDK_NAME_LEN];
	DPSDK_TIMET tUpdateTime;
}DPSDK_FAULT_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iFaultListNum;
	DPSDK_FAULT_INFO* pFaultList;
}DPSDK_FAULT_LIST;

typedef struct
{
	DPSDK_TIMET			tBeginTime;
	DPSDK_TIMET			tEndTime;
	DPSDK_CHAR			szKeyword[DPSDK_KEYWORD_LEN]; // resource name /resource IP/fault source name
	DPSDK_CHAR			szStatus[DPSDK_ENUM_LEN];		// 0: clear，1:happen
	DPSDK_CHAR			szOrgCode[DPSDK_CODE_LEN];
	DPSDK_CHAR			szResourceCategory[DPSDK_ENUM_LEN]; // 1=server，3=device
	DPSDK_CHAR			szResourceType[DPSDK_ENUM_LEN];	//0=server，device Category ID

	DPSDK_ID_LIST		struResourceSubTypes;

	DPSDK_INT32			iFaultTypesNum;
	DPSDK_INT32*		pFaultTypesList;	// 1=stop，2=device offline，3=channel offline，21=Hard disk full，22=Hard disk fault，
											// 23=no Hard disk，24=Disk detection，25=Shared service exception，26=Storage pool exception，
											// 27=Dual control version exception，28=Cluster switching，29=RAID alarm，30=Hard disk health is abnormal，
											// 31=Equipment anti-disassembly alarm，32=Chassis Intrusion，51=Video loss，52=Video occlusion，
											// 53=Channel offline (NVR alarm and device offline)
	DPSDK_CHAR			szResourceCode[DPSDK_CODE_LEN];
	DPSDK_CHAR			szChildren[DPSDK_ENUM_LEN]; //0=no，1=yes，default 0
	DPSDK_INT32			iOrderType;					// 1=fault time
	DPSDK_BOOL			bOrderDirection;			// 0=Ascending order，1=Descending order
	DPSDK_INT32			iExportRange;				// export range：0=all，1=select record，2=custom range	
	DPSDK_INT32			iExportStartNo;
	DPSDK_INT32			iExportNumber;
	DPSDK_INT32			iDisplayTimezoneOffset;		// Display Server Timezone Offset  0: no 1:yes
	DPSDK_CHAR			szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_INT32			iFileType;					//1=Excel, 2=PDF
	DPSDK_CHAR			szCredence[DPSDK_TOKEN_LEN];

}DPSDK_FAULT_EXPORT_PARAM;


typedef struct
{
	DPSDK_CHAR			szKeyword[DPSDK_KEYWORD_LEN];
	DPSDK_INT32			iDisplayTimezoneOffset;		// Display Server Timezone Offset  0: no 1:yes
	DPSDK_INT32			iExportRange;				// export range：0=all，1=select record，2=custom range	
	DPSDK_INT32			iFileType;					//1=Excel, 2=PDF
	DPSDK_CHAR			szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_INT32			iExportStartNo;
	DPSDK_GENERAL_ID_LIST struSelectIds;
	DPSDK_INT32			iExportNumber;
	DPSDK_INT32			iExportSession;
	DPSDK_CHAR			szCredence[DPSDK_TOKEN_LEN];
}DPSDK_DEVICE_EXPORT_PARAM;

#define DPSDK_MAX_COMBINED_SCREEN_NUM		128
#define DPSDK_MAX_SPILIT_CAPACITY_NUM		64
#define DPSDK_MAX_SCREEN_DECODER_NUM	    128

// Device status change notice
typedef struct
{
	DPSDK_CHAR szDeviceID[DPSDK_DEVICE_ID_LEN];						// Device ID
	DPSDK_INT32 iStatus;											// For device status, refer to DPSDK_DEV_STATUS definition
	DPSDK_CHAR szOfflineReason[DPSDK_MEMO_LEN];						// Offline reason
	DPSDK_INT32 iSyncChannelStauts;
}DPSDK_DEV_STATUS_NOTIFY;

// Channel status change notice
typedef struct
{
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT32 iStatus;											// For channel status, refer to DPSDK_DEV_STATUS definition
}DPSDK_CHANNEL_STATUS_NOTIFY;


// Channel capability change notice
typedef struct
{
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_LONG lCapability;										// For channel capability
}DPSDK_CHANNEL_CAPABILITY_NOTIFY;

//  Channel smart status change notice
typedef struct
{
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT32 iIntelliState;										// Smart status
}DPSDK_CHANNEL_INTELLISTATE_NOTIFY;

typedef struct
{
	DPSDK_INT32 iDeviceNum;										// num
	DPSDK_DEVICE_ID* pDeviceList;								// Device list
}DPSDK_DEVICE_OFFLINE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szDeviceID[DPSDK_DEVICE_ID_LEN];						// Device ID
	DPSDK_INT32 iSleepMode;											// Sleep Mode,1:Normal 2:Force
	DPSDK_CHAR szSession[DPSDK_ID_LEN];											// Session ID
}DPSDK_DEVICE_SLEEP_NOTIFY;

// Organization movement notice
typedef struct
{
	DPSDK_CHAR szOldOrgCode[DPSDK_ORG_CODE_LEN];						// Old organization node code 
	DPSDK_CHAR szOldParentOrgCode[DPSDK_ORG_CODE_LEN];					// Old organization parent node code
	DPSDK_CHAR szNewOrgCode[DPSDK_ORG_CODE_LEN];						// New organization node code
	DPSDK_CHAR szNewParentOrgCode[DPSDK_ORG_CODE_LEN];					// New organization parent node code
}DPSDK_MOVE_ORG_NOTIFY;

// Add device notice
typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];							// Organization code
	DPSDK_DEV_ALL_INFO struDevAllInfo;									// Device data
}DPSDK_ADD_DEVICE_NOTIFY;

// Modify device notice
typedef struct
{
	DPSDK_CHAR szOldOrgCode[DPSDK_ORG_CODE_LEN];						// Old organization
	DPSDK_CHAR szNewOrgCode[DPSDK_ORG_CODE_LEN];						// New organization
	DPSDK_DEV_ALL_INFO struDevAllInfo;									// Device data	
}DPSDK_MODIFY_DEVICE_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR  szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
	DPSDK_INT32 iStatus;									// Status
	DPSDK_CHAR  szChannelSN[DPSDK_SN_LEN];					// Channel SN
	DPSDK_CHAR  szMapId[DPSDK_MAP_ID_LEN];					// Map ID
	DPSDK_INT32 iCameraType;								// Camera type, 1-gun, 2-ball, 3-hemisphere
	DPSDK_INT32 iChannelType;								// Channel type. Please refer to DPSDK_DEV_UNIT_TYPE. DPSDK_HAS_INT_FIELD_FALSE, it is not available.
	DPSDK_INT32 iChannelSubType;							// Channel sub type. 
	DPSDK_INT32 iRemoteType;								// Remote type. 
	DPSDK_CHAR  szCameraFunctions[DPSDK_ID_LEN_EX];			// Camera functions
	DPSDK_INT32 iMulticastPort;								// Multicast port
	DPSDK_INT32 iRecordType;								// Record type;
	DPSDK_INT32 IIsPeopleCount;								// Is people count
	DPSDK_INT32 iMaxSplitNum;								// Max split number
	DPSDK_INT32 iChannelSeq;								// Channel serial number, from 0 start
	DPSDK_INT32 iRoadway;									// Roadway 
	DPSDK_FLOAT fCartMaxSpeed;								// Max speed of cart
	DPSDK_FLOAT fCartMinSpeed;								// Min speed of cart
	DPSDK_FLOAT fDollyMaxSpeed;								// Max speed of dolly
	DPSDK_FLOAT fDollyMinSpeed;								// Min speed of dolly
	DPSDK_FLOAT fDirection;											// Direction
	DPSDK_CHAR  szFaceFunctions[DPSDK_ID_LEN_EX];			// Face functions
	DPSDK_INT32 iIsTargetDetection;							// Intelligent status 0= not support
	DPSDK_CHAR	szKeyCode[DPSDK_ID_LEN];					// Key code of binding resource
	DPSDK_CHAR	szDb33Code[DPSDK_ID_LEN];					// Landmark code
	DPSDK_INT32 iIntelliState;								// Intelligent state
	DPSDK_INT32 iPcFlag;									// Is it flow statistics
	DPSDK_INT32 iFaceAnalyseType;							// Face analysis type
	DPSDK_CHAR  szVideoSourceChnlId[DPSDK_CHANNEL_ID_LEN];	// Video source channel ID
	DPSDK_CHAR  szServiceCapability[DPSDK_ID_LEN_EX];				// Service capability set
	DPSDK_CHAR szDomain[DPSDK_DOMAIN_LEN];					// Domain
}DPSDK_DEVICE_UNIT_CHANNEL_INFO;

// Delete device notice in batches
typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];							// Organization code
	DPSDK_CHAR szDeviceID[DPSDK_DEVICE_ID_LEN];							// Device ID
	DPSDK_INT32 iReason;									// delete reason: 0: normal; 1: auto delete,the device is not supported in this region
}DPSDK_DELETE_DEVICE_NOTIFY;

// Move device notice in batches
typedef struct
{
	DPSDK_CHAR szDeviceID[DPSDK_DEVICE_ID_LEN];							// Device ID
	DPSDK_CHAR szOldOrgCode[DPSDK_ORG_CODE_LEN];						// Previous organization code of device
	DPSDK_CHAR szNewOrgCode[DPSDK_ORG_CODE_LEN];						//  New organization code of device
}DPSDK_MOVE_DEVICE_NOTIFY;

//User organization search condition
typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// If organization code length is 0, search root organization by default.
	DPSDK_INT32 iSubNodeType;										// Search child node type. Refer to DPSDK_SUB_CODE_TYPE definition.
}DPSDK_QUERY_USER_ORG_INFO;

// User online status notice
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];								// User ID
	DPSDK_INT32 iOnlineStatus;											// Online status, refer to DPSDK_USER_STATUS definition.
}DPSDK_USERONLINESTATUS_NOTIFY;

typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];								// User ID
	DPSDK_TIMET tExpireTime;											// Timestamp overtime
}DPSDK_NOTIFY_PASSWORD_OVERDATE;

// User online status notice
typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];								// User ID
	DPSDK_INT32 iIsReused;												// Is reused
}DPSDK_USERREUSE_STATUS_NOTIFY;

//  Visible range change notice
typedef struct
{
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT32	iAzimuth;											// Start angle of visible range
	DPSDK_INT32	iDistance;											// Distance (radius)of visible range
	DPSDK_INT32	iAngle;												// Included angle of visible range
}DPSDK_VIEWINFO_CHANGED_NOTIFY;

// Device code info
typedef struct
{
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];				// Device code
}DPSDK_DEVICECODE_INFO;

// Notice of adding and modifying device on map
typedef struct
{
	DPSDK_UINT32			uiDeviceCodeListSize;					// Number of device code list
	DPSDK_DEVICECODE_INFO	struDeviceCodeList[1];					// Device code list		
}DPSDK_DEVICELOCATION_NOTIFY;

// Radar target info
typedef struct
{
	DPSDK_INT32		iId;				// Info ID
	DPSDK_INT32		iTargetId;			// Target ID   		
	DPSDK_FLOAT		fTargetLen;			// Target length    	
	DPSDK_FLOAT		fSpeed_X;			// X direction speed        		
	DPSDK_FLOAT		fSpeed_Y;			// Y direction speed
	DPSDK_FLOAT		fSpeed_Z;			// Z direction speed
	DPSDK_FLOAT		fCod_X;				// X coordinate   			
	DPSDK_FLOAT		fCod_Y;				// Y coordinate
	DPSDK_FLOAT		fCod_Z;				// Z coordinate   			
	DPSDK_FLOAT		fDistance;			// Distance      	
	DPSDK_FLOAT		fAzimuth;			// Azimuth angle       	
	DPSDK_FLOAT		fSNR;				// Target SNR	         	
	DPSDK_FLOAT		fEN;				// Target peak energy
	DPSDK_FLOAT		fElevation;			// Elevation angle
	DPSDK_TIMET		tUpdateTime;		// Update time
	DPSDK_INT32		iTargetType;		// Target type
}DPSDK_RADER_TARGET_INFO;

// Radar info report notice
typedef struct
{
	DPSDK_CHAR				szRaderId[DPSDK_DEVICE_ID_LEN];		// Radar ID
	DPSDK_UINT32			uiRaderTargetInfoSize;				// Number of radar target info
	DPSDK_RADER_TARGET_INFO	struRaderTargetInfo[1];				// Radar target info list
}DPSDK_RADERFRAME_NOTIFY;

// Similar face info
typedef struct
{
	DPSDK_CHAR			szUID[DPSDK_PERSON_ID_LEN];			// Platform personnel ID, virtual value
	DPSDK_CHAR			szFaceImageUrl[DPSDK_URL_LEN_EX];		// Face image
	DPSDK_CHAR			szName[DPSDK_NAME_LEN_EX];				// Name
	DPSDK_INT32			iGender;							// Gender: 0-unknown, 1-male, 2-female
	DPSDK_CHAR			szBirthday[DPSDK_BIRTHDAY_LEN];		// Birthday
	DPSDK_INT32			iPersonType;						// Personnel type (for compatibility)
	DPSDK_INT32			iPersonTypeId;						// Personnel type ID
	DPSDK_CHAR			szPersonTypeName[DPSDK_NAME_LEN];	// Personnel type name
	DPSDK_CHAR			szPersonId[DPSDK_PERSON_ID_LEN];	// Personnel ID
	DPSDK_FLOAT			fSimilarity;						// Similarity
	DPSDK_BOOL			bSurveillance;						// Surveillance or not
	DPSDK_CHAR			szRepositoryId[DPSDK_DB_ID_LEN];			// Library ID
	DPSDK_CHAR			szRepositoryName[DPSDK_PERSONTYPE_NAME_LEN];// Library name
	DPSDK_INT32			iRepositoryColor;					// Repository color: 1=gray, 2=red, 3=orange, 4=yellow，5=green，6=cyan，7=blue，8=purple
	DPSDK_CHAR			szNationality[DPSDK_NATIONALITRY_LEN];// Nationality
	DPSDK_CHAR			szMemo[DPSDK_MEMO_LEN];				// Note
}DPSDK_FACE_INFO;

// User status
typedef enum
{
	FACE_ALARM_EVENT = 1,						// Face Alarm
	FACE_TRAFFIC_JUNCTION_EVENT = 2,						// Traffic Junction
	FACE_ANALYSIS_EVENT = 3,						// Face Analysis 
}DPSDK_FACE_EVENT_TYPE;

// Face capture info notice
typedef struct
{
	DPSDK_CHAR			szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_CHAR			szAlarmID[DPSDK_ID_LEN];			// Alarm ID
	DPSDK_CHAR			szRecordID[DPSDK_ID_LEN];			// Record ID
	DPSDK_INT32			iEventType;							// Event Type
	DPSDK_INT32			iFaceImageId;						// Captured face ID
	DPSDK_CHAR			szFaceImageUrl[DPSDK_URL_LEN_EX];	// Captured face image
	DPSDK_BOOL			bHited;								// Recognition or not (0-capture, 1-recognition)
	DPSDK_CHAR			szPictureUrl[DPSDK_URL_LEN_EX];		// Scenario
	DPSDK_INT32			iRecAge;							// Recognize age
	DPSDK_INT32			iRecExpress;						// Recognize express
	DPSDK_INT32			iRecFringe;							// Recognize bang, 0-none, 1-yes
	DPSDK_INT32			iRecSex;							// Recognize gender, 0-unknown, 1-male, 2-female
	DPSDK_INT32			iRecEye;							// Recognize eye, 1-Not recognized, 2-closed eye 3-open eye
	DPSDK_INT32			iRecMouth;						// Recognize mouth, 1-Not recognized, 2-closed mouth, 3-open mouth
	DPSDK_INT32			iRecMask;						    // Recognize mask, 1-Not recognized, 2- without mask, 3-with mask
	DPSDK_INT32			iRecBeard;					        // Recognize mustache, 1-Not recognized, 2-without mustache, 3-with mustache
	DPSDK_INT32			iRecGlasses;						// Recognize glasses, 0-none, 1-glasses, 2-sunglasses
	DPSDK_INT32			iRecEmotion;						// Recognize emotion, 0-smiling, 1-angry, 2-sad, 3-disgusted, 4-afraid, 5-surprised, 6-normal, 7- laughter, 8-glad, 9-puzzled, 10-screamy
	DPSDK_INT32			iAppearTimes;						// Historical frequency of occurrence
	DPSDK_CHAR			szBeginTime[DPSDK_TIME_LEN];		// Time of entering view
	DPSDK_CHAR			szEndTime[DPSDK_TIME_LEN];			// Time of leaving view
	DPSDK_CHAR			szPersonTypeAlarmCode[DPSDK_ID_LEN];// The Sign of Stranger Alarm 
	DPSDK_UINT32		uiSimilarFaceListSize;				// Number of similar face info
	DPSDK_FACE_INFO		struSimilarFaceList[1];				// List of similar face info (there will be result when hited=1)
}DPSDK_FACE_INFO_NOTIFY;

// POS Event
typedef struct
{
	DPSDK_CHAR			szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_CHAR			szAlarmID[DPSDK_ID_LEN];			// Alarm ID
	DPSDK_CHAR			szRecordID[DPSDK_ID_LEN];			// Record ID
	DPSDK_INT32			iEventType;							// Event Type
	DPSDK_INT32			iFaceImageId;						// Captured face ID
	DPSDK_CHAR			szFaceImageUrl[DPSDK_URL_LEN_EX];	// Captured face image
	DPSDK_BOOL			bHited;								// Recognition or not (0-capture, 1-recognition)
	DPSDK_CHAR			szPictureUrl[DPSDK_URL_LEN_EX];		// Scenario
	DPSDK_INT32			iRecAge;							// Recognize age
	DPSDK_INT32			iRecExpress;						// Recognize express
	DPSDK_INT32			iRecFringe;							// Recognize bang, 0-none, 1-yes
	DPSDK_INT32			iRecSex;							// Recognize gender, 0-unknown, 1-male, 2-female
	DPSDK_INT32			iRecEye;							// Recognize eye, 1-Not recognized, 2-closed eye 3-open eye
	DPSDK_INT32			iRecMouth;						// Recognize mouth, 1-Not recognized, 2-closed mouth, 3-open mouth
	DPSDK_INT32			iRecMask;						    // Recognize mask, 1-Not recognized, 2- without mask, 3-with mask
	DPSDK_INT32			iRecBeard;					        // Recognize mustache, 1-Not recognized, 2-without mustache, 3-with mustache
	DPSDK_INT32			iRecGlasses;						// Recognize glasses, 0-none, 1-glasses, 2-sunglasses
	DPSDK_INT32			iRecEmotion;						// Recognize emotion, 0-smiling, 1-angry, 2-sad, 3-disgusted, 4-afraid, 5-surprised, 6-normal, 7- laughter, 8-glad, 9-puzzled, 10-screamy
	DPSDK_INT32			iAppearTimes;						// Historical frequency of occurrence
	DPSDK_CHAR			szBeginTime[DPSDK_TIME_LEN];		// Time of entering view
	DPSDK_CHAR			szEndTime[DPSDK_TIME_LEN];			// Time of leaving view
	DPSDK_CHAR			szPersonTypeAlarmCode[DPSDK_ID_LEN];// The Sign of Stranger Alarm 
	DPSDK_UINT32		uiSimilarFaceListSize;				// Number of similar face info
	DPSDK_FACE_INFO		struSimilarFaceList[1];				// List of similar face info (there will be result when hited=1)
}DPSDK_POS_INFO_NOTIFY;

//Face library update info notice
typedef struct
{
	DPSDK_INT32			iOperateType;								// Operation type: 1-add, 2-update, 3-delete
	DPSDK_CHAR			szRepositoryId[DPSDK_DB_ID_LEN];			// Library ID
	DPSDK_CHAR			szRepositoryName[DPSDK_PERSONTYPE_NAME_LEN];// Library name
	DPSDK_INT32			iRepositoryColor;							// Repository color: 1=gray, 2=red, 3=orange, 4=yellow，5=green，6=cyan，7=blue，8=purple
	DPSDK_CHAR			szMemo[DPSDK_MEMO_LEN];						// Note
}DPSDK_UPDATE_FACE_REPOSITORY_NOTIFY;

typedef struct
{
	DPSDK_INT32			iEventType;							// event type,1-Student Face event, 2-Unfamiliar Face event, 3-Long time not out event, 4-Long time not return event, 5-Staff face event
	DPSDK_CHAR			szNum[DPSDK_PERSON_ID_LEN];			// personnel ID, virtual value
	DPSDK_CHAR			szName[DPSDK_NAME_LEN];				// Name
	DPSDK_CHAR			szTel[DPSDK_PHONE_LEN];				// Telephone
	DPSDK_CHAR          szId[DPSDK_ID_LEN];					// ID no.
	DPSDK_INT32			iType;
	DPSDK_INT32			iGender;							// Gender: 0-unknown, 1-male, 2-female
	DPSDK_INT32			iFringe;							// bang, 0-none, 1-yes
	DPSDK_INT32			iMouth;								// mouth, 1-Not recognized, 2-closed mouth, 3-open mouth
	DPSDK_INT32			iEye;								// eye, 1-Not recognized, 2-closed eye 3-open eye
	DPSDK_INT32			iBeard;								// mustache, 1-Not recognized, 2-without mustache, 3-with mustache
	DPSDK_INT32			iAge;								// age
	DPSDK_INT32			iGlasses;							// glasses, 0-none, 1-glasses, 2-sunglasses
	DPSDK_INT32			iMask;								// mask, 1-Not recognized, 2- without mask, 3-with mask
	DPSDK_INT32			iFeature;
	DPSDK_CHAR			szOriginalPictureUrl[DPSDK_URL_EDU_URL_LEN];
	DPSDK_CHAR			szCapturePictureUrl[DPSDK_URL_EDU_URL_LEN];
	DPSDK_CHAR			szPanoramaPictureUrl[DPSDK_URL_EDU_URL_LEN];
	DPSDK_TIMET			tCaptureDate;
	DPSDK_INT32			iInOutType;							// 1-in, 2-out
	DPSDK_FLOAT			fSimilarity;						// Similarity
	DPSDK_CHAR			szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_INT32			iNotOutPeriod;						// notOutPeriod
	DPSDK_INT32			iNotBackPeriod;						// notBackPeriod
	DPSDK_CHAR			szParentsName[DPSDK_NAME_LEN];		// parents Name
	DPSDK_CHAR			szParentsTel[DPSDK_PHONE_LEN];		// parents Phone
}DPSDK_FACE_EVENT_INFO;

// Personnel info
typedef struct
{
	DPSDK_CHAR			szName[DPSDK_NAME_LEN_EX];						// Name
	DPSDK_INT32			iGender;									// Gender
	DPSDK_CHAR			szBirthday[DPSDK_BIRTHDAY_LEN];				// Birthday
	DPSDK_INT32			iPersonType;								// Personnel type ID
	DPSDK_CHAR			szPersonId[DPSDK_PERSON_ID_LEN];			// Personnel ID
	DPSDK_CHAR			szNationality[DPSDK_NATIONALITRY_LEN];		// Nationality
	DPSDK_CHAR			szMemo[DPSDK_MEMO_LEN];						// Note
	DPSDK_CHAR			szRepositoryId[DPSDK_DB_ID_LEN];			// Library ID
}DPSDK_PERSON_INFO;

// Face image info
typedef struct
{
	DPSDK_CHAR			szFaceImageUrl[DPSDK_URL_LEN_EX];				// Face image
}DPSDK_FACEIMAGE_INFO;

//User self-defining data change type
typedef enum
{
	AddUserDefineData,												//Add user self-defining data
	ModifyUserDefineData,											//Modify user self-defining data
	DeleteUserDefineData,											//Delete user self-defining data
}DPSDK_ALERT_USERDEFINEDATA_TYPE;

// Change user self-defining data
typedef struct
{
	DPSDK_INT32 iAlertUserDefineDataType;							//user self-defining data change type. Refer to DPSDK_ALERT_USERDEFINEDATA_TYPE definition
	DPSDK_CHAR szFileName[DPSDK_USERDEFINEDATA_FILENAME_LEN];		//Self-defining user file name
	DPSDK_CHAR szFileData[1];										//Self-defining user file info
}DPSDK_USERDEFINE_INFO;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];	//Channel ID
	DPSDK_INT32 iNum;	//Number of linked video channel
	DPSDK_LINKED_CHANNEL	LinkChannel[DPSDK_LINKED_CHANNEL_SIZE];
	DPSDK_INT32 iLocation;	//Central record or device record
} DPSDK_ADD_RELATION_NOTIFY;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];	//Channel ID
	DPSDK_INT32 iNum;	//Number of linked video channel
	DPSDK_LINKED_CHANNEL	LinkChannel[DPSDK_LINKED_CHANNEL_SIZE];
	DPSDK_INT32 iLocation;	//Central record or device record
} DPSDK_MODIFY_RELATION_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];	//Channel ID
} DPSDK_DELETE_RELATION_NOTIFY;

// Map change notice info structure
typedef struct
{
	DPSDK_INT32 iOperateType;						//Operation type: 1-add, 2-modify, 3-delete
	DPSDK_CHAR	szMapID[DPSDK_DEVICE_ID_LEN];		//Map ID
	DPSDK_CHAR	szMapName[DPSDK_NAME_LEN];			//Map name
	DPSDK_CHAR	szMapPath[DPSDK_URL_LEN];			//Map path
	DPSDK_CHAR	szParentID[DPSDK_DEVICE_ID_LEN];	//Parent ID
	DPSDK_INT32	iStatus;							//Enable status, 0=Not enabled,1=enabled
	DPSDK_INT32	iType;								//Normal emap leiqiu .or 0=normal,1=leiqiu emap
	DPSDK_CHAR	szGISMapName[DPSDK_NAME_LEN];		//GIS Map name for international language
													// For Online map
	DPSDK_CHAR szMapUrl[DPSDK_URL_LEN];
	// Public
	DPSDK_INT32 iMapEngine;							// Map engine, 1 = Baidu, 2 = Google, 3 = Gaud, required
	DPSDK_INT32 iMapMode;							// Map mode, 0-OffLine map, 1-OnLine map, required
	DPSDK_CHAR  szGpsX[DPSDK_TZ_GPS_LEN];			// Longitude
	DPSDK_CHAR  szGpsY[DPSDK_TZ_GPS_LEN];			// Latitude
	DPSDK_CHAR	szThumbnailPath[DPSDK_URL_LEN];		// Thumbnail path
	DPSDK_CHAR	szRemark[DPSDK_MEMO_LEN];			// Remark
} DPSDK_BITMAP_INFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN_EX];							// User name;
}DPSDK_USER_INFO;

typedef struct
{
	DPSDK_INT32 iUserNameNum;
	DPSDK_USER_INFO* pUserNameList;
}DPSDK_USER_LIST;


// Face menu info
typedef struct
{
	DPSDK_INT32 iID;											// Menu ID
	DPSDK_CHAR szMenuCode[DPSDK_MEMURIGHT_LEN];					// Menu code
	DPSDK_CHAR szMenuName[DPSDK_NAME_LEN];						// Menu name
	DPSDK_CHAR szMenuIcon1[DPSDK_URL_LEN_EX];						// Menu icon 1
	DPSDK_CHAR szMenuIcon2[DPSDK_URL_LEN_EX];						// Menu icon 2
	DPSDK_CHAR szMenuPath1[DPSDK_URL_LEN_EX];						// Menu URL path 1
	DPSDK_CHAR szMenuPath2[DPSDK_URL_LEN_EX];						// Menu URL path 2
	DPSDK_BOOL bMenu;											// false: button,true: menu
	DPSDK_BOOL bDataScope;										// false: data right is not required, true: data right is required
	DPSDK_INT32 iSort;											// Sort key
	DPSDK_CHAR szSystemName[DPSDK_NAME_LEN];					// System name
}DPSDK_FACE_MENU;

// Face menu list
typedef struct
{
	DPSDK_UINT32 uiTotal;							// Total obtained result
	DPSDK_FACE_MENU struMenu[1];					// Menu list
}DPSDK_FACE_MENU_LIST;

// Vehicle big data menu info
typedef struct
{
	DPSDK_INT32 iID;											// Menu ID
	DPSDK_CHAR szMenuCode[DPSDK_MEMURIGHT_LEN];					// Menu code
	DPSDK_CHAR szMenuName[DPSDK_NAME_LEN];						// Menu name
	DPSDK_CHAR szMenuIcon1[DPSDK_URL_LEN];						// Menu icon 1
	DPSDK_CHAR szMenuIcon2[DPSDK_URL_LEN];						// Menu icon 2
	DPSDK_CHAR szMenuPath1[DPSDK_URL_LEN];						// Menu URL path 1
	DPSDK_CHAR szMenuPath2[DPSDK_URL_LEN];						// Menu URL path 2
	DPSDK_BOOL bMenu;											// false: button,true: menu
	DPSDK_BOOL bDataScope;										// false: data right is not required, true: data right is required
	DPSDK_INT32 iSort;											// Sort key
	DPSDK_CHAR szSystemName[DPSDK_NAME_LEN];					// System name
}DPSDK_VEHICLE_MENU;

// Vehicle big data menu info
typedef struct
{
	DPSDK_UINT32 uiTotal;							// Total obtained result
	DPSDK_VEHICLE_MENU struMenu[1];					// Menu list
}DPSDK_VEHICLE_MENU_LIST;

// All sub service menu info
typedef struct
{
	DPSDK_INT32 iID;											// Menu ID
	DPSDK_CHAR szMenuCode[DPSDK_MEMURIGHT_LEN];					// Menu code
	DPSDK_CHAR szMenuName[DPSDK_NAME_LEN];						// Menu name
	DPSDK_CHAR szMenuIcon1[DPSDK_URL_LEN];						// Menu icon 1
	DPSDK_CHAR szMenuIcon2[DPSDK_URL_LEN];						// Menu icon 2
	DPSDK_CHAR szMenuPath1[DPSDK_URL_LEN];						// Menu URL path 1
	DPSDK_CHAR szMenuPath2[DPSDK_URL_LEN];						// Menu URL path 2
	DPSDK_BOOL bMenu;											// false: button,true: menu
	DPSDK_BOOL bDataScope;										// false: data right is not required, true: data right is required
	DPSDK_INT32 iSort;											// Sort key
	DPSDK_CHAR szSystemName[DPSDK_NAME_LEN];					// System name
}DPSDK_SERVICE_MENU;

// All sub service menu list
typedef struct
{
	DPSDK_UINT32 uiTotal;										// Total obtained result
	DPSDK_SERVICE_MENU struMenu[1];								// Menu list
}DPSDK_SERVICE_MENU_LIST;

typedef struct
{
	DPSDK_CHAR szDateTime[DPSDK_TIME_STRING_LEN_EX];		//device date time
	DPSDK_CHAR szTimeZone[DPSDK_TYPE_LEN];
}DPSDK_DEVICETIME_PARAM;

typedef struct
{
	DPSDK_CHAR szDateTime[DPSDK_TIME_STRING_LEN_EX];		//device date time
	DPSDK_CHAR szTimeZone[DPSDK_TYPE_LEN];
}DPSDK_DEVICETIME_RESULT;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szChannelSeq[DPSDK_CHANNEL_ID_LEN];			// Channel ID
}DPSDK_GET_PTZ_PARAM, DPSDK_GET_PTZ_ZOOMMAX_PARAM;

typedef struct
{
	DPSDK_DOUBLE fPtzPan;									// PTZ horizontal shift
	DPSDK_DOUBLE fPtzTilt;									// PTZ vertical shift
	DPSDK_DOUBLE fPtzZoom;									// PTZ diaphragm change position
}DPSDK_PTZ_RESULT;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szChannelSeq[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_DOUBLE fPtzPan;									// PTZ horizontal shift
	DPSDK_DOUBLE fPtzTilt;									// PTZ vertical shift
	DPSDK_DOUBLE fPtzZoom;									// PTZ diaphragm change position
}DPSDK_PTZ_PARAM;

typedef struct
{
	DPSDK_CHAR szChannelSeq[DPSDK_CHANNEL_ID_LEN];			// Channel Seq
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel Name
	DPSDK_INT32 iChannelStatus;								// Channel Status
}DPSDK_Channel_PARAM;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_Channel_PARAM* pChannelList;
}DPSDK_Channel_Result;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_CHANNEL_ID* pChannelIdList;
	DPSDK_INT32 iOperateType;								//0: close, 1: open
}DPSDK_Channel_OPERATE_PARAM;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_CHANNEL_ID* pFailedChannelIdList;
}DPSDK_Channel_OPERATE_Result;

typedef enum
{
	PICTURE_TYPE_FACE = 1,									// Face picture 
	PICTURE_TYPE_SCENE,										// Scene picture
	PICTURE_TYPE_HUMAN,										// Human picture
}DPSDK_PICTURE_TYPE;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_ID_LEN];							// Picture ID
	DPSDK_CHAR	szUrl[DPSDK_URL_LEN];						// Picture download URL
	DPSDK_INT32 iType;										// Picture type. Refer to DPSDK_PICTURE_TYPE definition
}DPSDK_PICTURE_URL_INFO;

typedef struct
{
	DPSDK_INT32      iNum;
	DPSDK_RECORD_ID* pIdList;
}DPSDK_DELETEHUMANBODYS_BYFEATRUE_PARAM;

typedef struct
{
	DPSDK_INT32      iNum;
	DPSDK_RECORD_ID* pIdList;
}DPSDK_DELETEHUMANS_BYSESSION_PARAM;

typedef struct
{
	DPSDK_INT32      iNum;
	DPSDK_RECORD_ID* pIdList;
}DPSDK_DELETE_NONMOTORRECORD_PARAM;

typedef struct
{
	DPSDK_INT32      iOrderType;
	DPSDK_INT32      iOrderDirection;
	DPSDK_INT32      iPageSize;
	DPSDK_INT32      iPage;
}DPSDK_GETPAGEEHUMANS_BYSESSION_PARAM;

typedef struct
{
	DPSDK_CHAR       szId[DPSDK_ID_LEN];
	DPSDK_CHAR       szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR       szChannelName[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_CHAR       szHumanImageUrl[DPSDK_URL_LEN];
	DPSDK_CHAR       szPictureUrl[DPSDK_URL_LEN];
	DPSDK_CHAR       szfaceImageUrl[DPSDK_URL_LEN];
	DPSDK_CHAR       szCoatColorName[DPSDK_TYPE_LEN];
	DPSDK_CHAR       szTrouserColorName[DPSDK_TYPE_LEN];
	DPSDK_INT32      iGender;
	DPSDK_INT32      iCoat;
	DPSDK_INT32      iCoatColor;
	DPSDK_INT32      iTrouser;
	DPSDK_INT32      iTrouserColor;
	DPSDK_INT32      iHat;
	DPSDK_INT32      iBag;
	DPSDK_INT32      iEmotion;
	DPSDK_INT32      iGlasses;
	DPSDK_INT32      iBeard;
	DPSDK_INT32      iMask;
	DPSDK_INT32      iAge;
	DPSDK_TIMET      tCaptureTime;
	DPSDK_FLOAT	     fSimilarity;
	DPSDK_INT32		 iDataSource;								// Data source，1=deivce 2:platform
}DPSDK_PERPAGEHUMAN_INFO;

typedef struct
{
	DPSDK_INT32                 iTotalCount;
	DPSDK_INT32                 iPageDataNum;
	DPSDK_PERPAGEHUMAN_INFO*    pHumanList;
}DPSDK_GETPAGEEHUMANS_BYSESSION_RESULT;

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];				// Session ID
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_INT32 iUrlNum;
	DPSDK_PICTURE_URL_INFO* szUrls;
}DPSDK_DOWNLOAD_DEVICEPIC_PARAM;

typedef struct
{
	DPSDK_INT32 iUrlNum;
	DPSDK_PICTURE_URL_INFO* szUrls;
}DPSDK_DOWNLOAD_DEVICEPIC_RESULT;

typedef struct
{
	DPSDK_INT32 iChannelIdNum;								// Channel ID number
	DPSDK_CHANNEL_ID* pChannelIdList;						// Channel ID list
	DPSDK_INT32 iImageDataLen;								// Image data size
	DPSDK_CHAR* pImageData;									// Face image data(base64)
	DPSDK_FLOAT	fSimilarity;								// Similarity
	DPSDK_TIMET tBeginTime;									// Start time
	DPSDK_TIMET tEndTime;									// End time
}DPSDK_SEARCHHUMAN_BYPIC_PARAM;


typedef struct
{
	DPSDK_CHAR  szSession[DPSDK_ID_LEN];					// Session
	DPSDK_INT32 iPage;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32 iPageSize;									// Number of records on every page.
	DPSDK_INT32 iOrderType;									// Order type, 1: time, 2: Similarity
	DPSDK_INT32 iDirection;									// Order direction, 0：Ascending order, 1：Descending order
}DPSDK_GET_HUMANPAGE_BYPIC_PARAM;

typedef struct
{
	DPSDK_CHAR  szSession[DPSDK_ID_LEN];					// Session
	DPSDK_INT32	iProcessRatio;								// 1-100
	DPSDK_UINT32 uiTotal;									// Number of result sets
	DPSDK_INT32 iErrorCode;									// Error code, 1000: normal, 2016: no device, 3029: off-line of device, 3003: off-line of DMS system
}DPSDK_NOTIFY_HUMAN_PROCESS_INFO;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_ID_LEN];
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR  szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
	DPSDK_CHAR  szFaceImageUrl[DPSDK_URL_LEN];				// Face image url
	DPSDK_CHAR  szPictureUrl[DPSDK_URL_LEN];				// Scene picture url
	DPSDK_CHAR  szHumanImageUrl[DPSDK_URL_LEN];				// Human picture url
	DPSDK_CHAR  szVideoUrl[DPSDK_URL_LEN];
	DPSDK_INT32	iHat;										// Whether or not wearing a hat: 0-unknown, 1-yes, 2-no
	DPSDK_INT32	iGender;
	DPSDK_INT32	iBag;										// Whether or not carrying a bag: 0-unknown, 1-yes, 2-no
	DPSDK_INT32	iAge;
	DPSDK_INT32	iMask;
	DPSDK_INT32	iGlasses;
	DPSDK_INT32	iBeard;
	DPSDK_INT32	iEmotion;
	DPSDK_INT32	iCoat;										// Coat style: 0-unknown, 1-long sleeve, 2-short sleeve
	DPSDK_CHAR	szCoatColor[DPSDK_TYPE_LEN];				// Coat color
	DPSDK_INT32	iTrousers;									// Trousers style:  0-unknown, 1-long trousers, 2-short trousers/breeches
	DPSDK_CHAR	szTrousersColor[DPSDK_TYPE_LEN];			// Trousers color
	DPSDK_TIMET tCaptureTime;								// Capture time
	DPSDK_FLOAT	fSimilarity;								// Similarity
}DPSDK_HUMANRECORD_PAGEDATA_INFO;

typedef struct
{
	DPSDK_UINT32 uiTotal;									// Number of result sets
	DPSDK_INT32	iProcessRatio;								// 1-100
	DPSDK_INT32 iPageDataNum;
	DPSDK_HUMANRECORD_PAGEDATA_INFO *pPageDataList;
}DPSDK_HUMANPAGE_BYPIC_RESULT;

typedef struct
{
	DPSDK_CHAR szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];		// Alarm code
}DPSDK_ALARM_CODE;

typedef struct
{
	DPSDK_CHAR szDeviceRuleCode[DPSDK_ID_LEN];				// device rule code
	DPSDK_CHAR szDeviceRuleName[DPSDK_NAME_LEN];			// device rule name
}DPSDK_STAYNUMBER_DEVICERULE;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];		// channel name
	DPSDK_INT32 iIsAbnormal;								// 1:YES, 0:NO
	DPSDK_INT32 iDeviceRuleNum;
	DPSDK_STAYNUMBER_DEVICERULE* pDeviceRules;
}DPSDK_STAYNUMBER_CHANNELRULE;

typedef struct
{
	DPSDK_CHAR  szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];		// Alarm code
	DPSDK_CHAR  szRuleName[DPSDK_NAME_LEN];					// Rule name
	DPSDK_INT32 iRuleId;									// Rule ID
	DPSDK_INT32 iRuleThreshold;								// Rule threshold
	DPSDK_INT32 iStayNumber;								// Stay number
	DPSDK_TIMET lAlarmTime;									// Alarm time (unit: seconds))
	DPSDK_INT32 iChannelRuleNum;
	DPSDK_STAYNUMBER_CHANNELRULE* pChannelRules;
}DPSDK_ALARM_STAYNUMBWERULE_INFO;

// Delete  stay number rule
typedef struct
{
	DPSDK_INT32 iRuleNum;									// Rule number
	DPSDK_INT32* pRuleIds;									// Rule ID
}DPSDK_DEL_STAYNUMBER_RULE;

typedef struct
{
	DPSDK_CHAR  szRuleName[DPSDK_NAME_LEN];					// Rule name
	DPSDK_INT32 iRuleId;									// Rule ID
}DPSDK_STAYNUMBER_RULE;

typedef struct
{
	DPSDK_INT32 iRuleNum;
	DPSDK_STAYNUMBER_RULE* pStayNumberRule;
}DPSDK_STAYNUMBWE_RULE_LIST;

typedef struct
{
	DPSDK_CHAR szDeviceRuleID[DPSDK_ID_LEN];				// device channel rule ID
}DPSDK_DEVICERULE_ID;

typedef struct
{
	DPSDK_CHAR szRuleName[DPSDK_NAME_LEN];						// rule name
	DPSDK_CHAR szRuleRemark[DPSDK_USER_REMARK_LEN];				// rule remark
	DPSDK_INT32 iDeviceRuleNum;
	DPSDK_DEVICERULE_ID* pDeviceRuleIds;
}DPSDK_SET_PEOPLECOUNT_RULE_PARAM;

typedef struct
{
	DPSDK_CHAR szRuleId[DPSDK_ID_LEN];							// rule ID
}DPSDK_RULE_ID;

typedef struct
{
	DPSDK_INT32 iRuleIdNum;
	DPSDK_RULE_ID* pRuleIds;
}DPSDK_DEL_PEOPLECOUNT_RULE;

typedef struct
{
	DPSDK_CHAR szDeviceRuleID[DPSDK_ID_LEN];				// Device rule ID
	DPSDK_CHAR szDeviceRuleCode[DPSDK_ID_LEN];				// Device rule code
	DPSDK_CHAR szDeviceRuleName[DPSDK_NAME_LEN];			// device rule name
}DPSDK_DEVICE_RULE;

typedef struct
{
	DPSDK_INT32 iDeviceRuleNum;
	DPSDK_DEVICE_RULE* pDeviceRules;
}DPSDK_PEOPLECOUNT_DEVRULE_LIST;

typedef struct
{
	DPSDK_INT32 iPageNum;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32 iPageSize;										// Number of records on every page. Min. 1, max. 256. It is 32 by default if not filled in.
	DPSDK_CHAR  stKeyWord[DPSDK_CONFIG_PARAM_LEN];				// search conditions 
}DPSDK_PEOPLECOUNT_RULE_PARAM;

typedef struct
{
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];					// channel name
	DPSDK_CHANNEL_ID stChannelId;								// device code
	DPSDK_INT32 iDeviceRuleNum;
	DPSDK_DEVICE_RULE* pDeviceRules;
}DPSDK_CHANNEL_RULE;

typedef struct
{
	DPSDK_CHAR szRuleId[DPSDK_ID_LEN];							// rule ID
	DPSDK_CHAR szRuleName[DPSDK_NAME_LEN];						// rule name
	DPSDK_CHAR szRuleRemark[DPSDK_USER_REMARK_LEN];				// rule remark
	DPSDK_INT32 iChannelRuleNum;
	DPSDK_CHANNEL_RULE* pChannelRules;
}DPSDK_PEOPLECOUNT_RULEDATA;

typedef struct
{
	DPSDK_INT32 iNextPage;										// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;									// Total 
	DPSDK_INT32 iRuleNum;
	DPSDK_PEOPLECOUNT_RULEDATA* pRules;
}DPSDK_PEOPLECOUNT_RULE_LIST;

typedef struct
{
	DPSDK_CHAR szRuleId[DPSDK_ID_LEN];							// rule ID
	DPSDK_CHAR szRuleName[DPSDK_NAME_LEN];						// rule name
	DPSDK_CHAR szRuleRemark[DPSDK_USER_REMARK_LEN];				// rule remark
	DPSDK_INT32 iChannelRuleNum;
	DPSDK_CHANNEL_RULE* pChannelRules;
}DPSDK_COLLECTION_ADD_PEOPLEFLOWRULE;

typedef struct
{
	DPSDK_CHAR szRuleId[DPSDK_ID_LEN];							// rule ID
	DPSDK_CHAR szRuleName[DPSDK_NAME_LEN];						// rule name
	DPSDK_CHAR szRuleRemark[DPSDK_USER_REMARK_LEN];				// rule remark
	DPSDK_INT32 iChannelRuleNum;
	DPSDK_CHANNEL_RULE* pChannelRules;
}DPSDK_COLLECTION_UPDATE_PEOPLEFLOWRULE;

typedef struct
{
	DPSDK_INT32 iRuleIdNum;
	DPSDK_RULE_ID* pRuleIds;
}DPSDK_COLLECTION_DELETE_PEOPLEFLOWRULE;

// E-map menu info
typedef struct
{
	DPSDK_INT32 iID;											// Menu ID
	DPSDK_CHAR szMenuCode[DPSDK_MEMURIGHT_LEN];					// Menu code
	DPSDK_CHAR szMenuName[DPSDK_NAME_LEN];						// Menu name
	DPSDK_CHAR szMenuIcon1[DPSDK_URL_LEN];						// Menu icon 1
	DPSDK_CHAR szMenuIcon2[DPSDK_URL_LEN];						// Menu icon 2
	DPSDK_CHAR szMenuPath1[DPSDK_URL_LEN];						// Menu URL path 1
	DPSDK_CHAR szMenuPath2[DPSDK_URL_LEN];						// Menu URL path 2
	DPSDK_BOOL bMenu;											// false: button,true: menu
	DPSDK_BOOL bDataScope;										// false:false: data right is not required, true: data right is required
	DPSDK_INT32 iSort;											// Sort key
	DPSDK_CHAR szSystemName[DPSDK_NAME_LEN];					//  System name
}DPSDK_EMAP_MENU;

#define DPSDK_MAX_SERVER_ABILITY_NUM	64			// Max. number of service capability set

// Smart analysis time slice of cloud synopsis
typedef struct
{
	DPSDK_TIMET tBeginTime;							//Start time of smart analysis
	DPSDK_TIMET tEndTime;							//End time of smart analysis
}DPSDK_ABSTRACT_ANALYSIS_TIME_SEC;

// Smart analysis time slice of cloud synopsis
typedef struct
{
	DPSDK_UINT32 uiTotal;							// Time slice number
	DPSDK_ABSTRACT_ANALYSIS_TIME_SEC struTimeSec[1];// Time slice list
}DPSDK_ABSTRACT_ANALYSIS_TIME_SEC_LIST;

// Smart analysis time slice request parameter of cloud synopsis
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];	// Channel ID
	DPSDK_TIMET tBeginTime;							// Start time
	DPSDK_TIMET tEndTime;							// End time
}DPSDK_ABSTRACT_ANALYSIS_TIME_QUERY_PARAM;

// Color
typedef struct
{
	DPSDK_CHAR szColor[DPSDK_COLOR_LEN];			// Color
}DPSDK_COLOR;


// Location info
typedef struct
{
	DPSDK_INT32 iX;										// x coordinate
	DPSDK_INT32 iY;										// y coordinate
	DPSDK_INT32 iWidth;									// Width
	DPSDK_INT32 iHeight;									// Height
}DPSDK_POSITION;

// Line info
typedef struct
{
	DPSDK_INT32 iPointNum;							// Point number
	DPSDK_POINT* pPointList;						// Point list
	DPSDK_INT32 iDerect;							// Tripwire direction, 1: from left to right, 2: from right to left, 3: bilateral
}DPSDK_LINE;

typedef enum
{
	ABS_OBJ_OTHER = 0,					// Other
	ABS_OBJ_HUMAN = 1,					// Person
	ABS_OBJ_VEHICLE = 2,					// Vehicle
}DPSDK_ABS_OBJ_TYPE;

typedef enum
{
	ABS_OBJ_COLOR_BLACK = 0,					// Black
	ABS_OBJ_COLOR_WHITE = 1,					// White
	ABS_OBJ_COLOR_GRAY = 2,					// Gray
	ABS_OBJ_COLOR_RED = 3,					// Red
	ABS_OBJ_COLOR_ORANGE = 4,					// Orange
	ABS_OBJ_COLOR_YELLOW = 5,					// Yellow
	ABS_OBJ_COLOR_GREEN = 6,					// Green
	ABS_OBJ_COLOR_BLUE = 7,					// Blue
	ABS_OBJ_COLOR_CYAN = 8,					// Cyan
	ABS_OBJ_COLOR_PURPLE = 9,					// Purple
	ABS_OBJ_COLOR_ALL = 10,					//All
}DPSDK_ABS_OBJ_COLOR;

typedef enum
{
	ABS_OBJ_SIZE_SMALL = 0,					// Small
	ABS_OBJ_SIZE_MIDDLE = 1,					// Medium
	ABS_OBJ_SIZE_BIG = 2,					// Large
	ABS_OBJ_SIZE_ALL = 3,					// Unlimited
}DPSDK_ABS_OBJ_SIZE;

typedef enum
{
	ABS_OBJ_SPEED_SLOW = 0,					// Slow
	ABS_OBJ_SPEED_MIDDLE = 1,					// Medium
	ABS_OBJ_SPEED_FAST = 2,					// Quick
	ABS_OBJ_SPEED_ALL = 3,					// Unlimited
}DPSDK_ABS_OBJ_SPEED;

// Cloud synopsis detailed info request property
typedef struct
{
	DPSDK_INT32 iObjTypeNum;						// Target type number
	DPSDK_INT32* pObjTypeList;						//  Target type list. Refer to DPSDK_ABS_OBJ_TYPE definition
	DPSDK_INT32 iColor;								// Target color list. Refer to DPSDK_ABS_OBJ_COLOR definition
	DPSDK_INT32 iDirect;							// Target direction list. 0-360, 12 o'clock direction is 0. Clockwise rotation
	DPSDK_INT32 iSize;								//  Target size list. Refer to DPSDK_ABS_OBJ_SIZE definition
	DPSDK_INT32 iSpeed;								//  Target speed list. Refer to DPSDK_ABS_OBJ_SPEED definition
}DPSDK_ABSTRACT_OBJ_ATTR;

// Cloud synopsis detailed info request condition
typedef struct
{
	DPSDK_INT32 iDetictArrayWidth;					// Array width
	DPSDK_INT32 iDetictArrayHeight;					// Array height
	DPSDK_POINT** pDetectZone;						// Detection zone

	DPSDK_INT32 iMaskArrayWidth;					// Array width
	DPSDK_INT32 iMaskArrayHeight;					// Array height
	DPSDK_POINT** pMaskZone;						// Mask zone

	DPSDK_INT32 iLineNum;							// Line number
	DPSDK_LINE* pLineList;							// Line list
}DPSDK_ABSTRACT_ADV_CONDITION;

// Cloud synopsis detailed info request parameter
typedef struct
{
	DPSDK_CHAR szRegionId[DPSDK_ID_LEN];			// Search domain
	DPSDK_INT32 iOrgCodeNum;						// Organization code number
	DPSDK_ID* pOrgCodeList;							// Organization code
	DPSDK_INT32 iDevIdNum;							// Device ID number
	DPSDK_DEVICE_ID* pDevIdList;					// Device ID list
	DPSDK_INT32 iChannelIdNum;						// Channel ID number
	DPSDK_CHANNEL_ID* pChannelIdList;				// Channel ID list
	DPSDK_TIMET tBeginTime;							// Start time
	DPSDK_TIMET tEndTime;							// End time
													// objectAttribute
	DPSDK_ABSTRACT_OBJ_ATTR struObjAttr;			// Target property
													//advancedConditions
	DPSDK_ABSTRACT_ADV_CONDITION struAdvCond;		// Advanced query condition
}DPSDK_ABSTRACT_OBJ_DETAIL_INFO_QUERY_PARAM;

// Cloud synopsis image info
typedef struct
{
	DPSDK_INT32 iWidth;									// Width
	DPSDK_INT32 iHeight;									// Height
	DPSDK_POSITION struPos;									// Location info
	DPSDK_TIMET tTime;										// Time
	DPSDK_CHAR szUrl[DPSDK_FILE_PATH_LEN];					// Original image address
	DPSDK_CHAR szCutoutUrl[DPSDK_FILE_PATH_LEN];			// Sectional image address
	DPSDK_CHAR szSmallUrl[DPSDK_FILE_PATH_LEN];				// Small image address
}DPSDK_ABSTRACT_OBJ_PIC_INFO;

typedef enum
{
	ABS_TYPE_HUAMN = 1,							// Person
	ABS_TYPE_VECHILE = 2,							// Vehicle
	ABS_TYPE_OTHER = 3,							// Other
}DPSDK_ABSTRACT_OBJ_TYPE;

// Cloud synopsis detailed info
typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Single ID of target
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
	DPSDK_TIMET tBeginTime;									// Target appearing time
	DPSDK_TIMET tEndTime;									// Target disappearing time
	DPSDK_INT32 iType;										// Target type. Refer to DPSDK_ABSTRACT_OBJ_TYPE definition.
	DPSDK_INT32 iDirect;									// Target direction list. 0-360, 12 o'clock direction is 0. Clockwise rotation
	DPSDK_INT32 iSize;										// Target size. Refer to DPSDK_ABS_OBJ_SIZE definition
	DPSDK_INT32 iSpeed;										// Target speed. Refer to DPSDK_ABS_OBJ_SPEED definition
	DPSDK_ABSTRACT_OBJ_PIC_INFO struPic;					// Image info
}DPSDK_ABSTRACT_OBJ_DETAIL_INFO;

//Cloud synopsis detailed info list
typedef struct
{
	DPSDK_UINT32 uiTotal;									// Detailed info number
	DPSDK_ABSTRACT_OBJ_DETAIL_INFO struObjDetailInfo[1];	// Detailed info list
}DPSDK_ABSTRACT_OBJ_DETAIL_LIST;

typedef enum
{
	ABS_PIC_VIDEO = 1,							// Real-time synopsis
	ABS_PIC_BAY_DEV = 2,							// ANPR device
}DPSDK_ABS_PIC_TYPE;

// Cloud synopsis image lifecycle
typedef struct
{
	DPSDK_INT32 iPicType;									// Refer to DPSDK_ABS_PIC_TYPE definition
	DPSDK_INT32 iLifeCycle;									// Lifecycle
	DPSDK_INT32 iDataNum;									// 
	DPSDK_INT32 iParityNum;									//
}DPSDK_ABSTRACT_LIFE_CYCLE_INFO;

// Cloud synopsis image lifecycle list
typedef struct
{
	DPSDK_UINT32 uiTotal;									// Number
	DPSDK_ABSTRACT_LIFE_CYCLE_INFO struList[1];				// Cloud synopsis image lifecycle list
}DPSDK_ABSTRACT_LIFE_CYCLE_LIST;

// Cloud synopsis summary info query parameter
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_TIMET tBeginTime;									// Target appearing time
	DPSDK_TIMET tEndTime;									// Target disappearing time
}DPSDK_ABSTRACT_OBJ_SUMMMARY_INFO_QUERY_PARAM;

// Cloud synopsis summary info
typedef struct
{
	DPSDK_TIMET tBeginTime;									// Start time
	DPSDK_TIMET tEndTime;									// End time
	DPSDK_INT32 iObjectTimeNum;								// Target time number
	DPSDK_TIMET* pObjectTimeList;							// Target time list
}DPSDK_ABSTRACT_OBJ_SUMMMARY_INFO;

// Cloud synopsis summary info list
typedef struct
{

	DPSDK_UINT32 uiTotal;									// Summary info number
	DPSDK_ABSTRACT_OBJ_SUMMMARY_INFO* pObjSummaryInfoList;	// Summary info list
}DPSDK_ABSTRACT_OBJ_SUMMMARY_LIST;

// Cloud synopsis detailed info change parameter
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Single ID of target
	DPSDK_INT32 iType;										// Target type
	DPSDK_INT32 iDirect;									// Target direction
}DPSDK_ABSTRACT_OBJ_MODIFY_PARAM;

/************************** Alarm host begin ***********************************/
//Operation type
typedef enum
{
	DPSDK_OPERATE_IMMEDIATE_PROTECTION = 1,					// Arm now
	DPSDK_OPERATE_FORCE_PROTECTION = 2,						// Forced arm
	DPSDK_OPERATE_STOP_PROTECTION = 3,						// Disarm
	DPSDK_OPERATE_STOP_ALARM = 4,							// Stop alarm
	DPSDK_OPERATE_STOP_NORMAL = 5,							// Normal
	DPSDK_OPERATE_STOP_PL = 6,								// Bypass
	DPSDK_OPERATE_STOP_GL = 7,								// Isolation
}DPSDK_OPERATE_TYPE;

//Arm status type
typedef enum
{
	DPSDK_ARM_STATUS_ALL = -1,								// All
	DPSDK_ARM_STATUS_DISARM = 0,							// Disarm
	DPSDK_ARM_STATUS_ARM = 1,								// Arm
	DPSDK_ARM_STATUS_P1ARM = 2,								// P1 Arm
	DPSDK_ARM_STATUS_P2ARM = 3,								// P2 Arm
	DPSDK_ARM_STATUS_P1ANDP2ARM = 4,						// P1 And P2 Arm
}DPSDK_ARM_STATUS_TYPE;

//Bypass status type
typedef enum
{
	DPSDK_BYPASS_STATUS_ALL = -1,							// All
	DPSDK_BYPASS_STATUS_NORMAL = 0,							// Normal
	DPSDK_BYPASS_STATUS_BYPASS = 1,							// Bypass
	DPSDK_BYPASS_STATUS_ISOLATE = 2,						// Isolate
}DPSDK_BYPASS_STATUS_TYPE;

//Alarm status type
typedef enum
{
	DPSDK_ALARM_STATUS_ALL = -1,							// All
	DPSDK_ALARM_STATUS_NORMAL = 0,							// Normal
	DPSDK_ALARM_STATUS_ALARM = 1,							// Alarm
	DPSDK_ALARM_STATUS_OPEN = 2,							// Open
}DPSDK_ALARM_STATUS_TYPE;

//Failure status type
typedef enum
{
	DPSDK_FAILURE_STATUS_ALL = -1,							// All
	DPSDK_FAILURE_STATUS_NORMAL = 0,						// Normal
	DPSDK_FAILURE_STATUS_TAMPER = 1,						// Tamper
	DPSDK_FAILURE_STATUS_SHORT = 2,							// Short
	DPSDK_FAILURE_STATUS_MASK = 3,							// Mask
	DPSDK_FAILURE_STATUS_MainPowerDown = 4,					// Main Power Down
	DPSDK_FAILURE_STATUS_SubPowerDown = 5,					// Sub Power Down
	DPSDK_FAILURE_STATUS_PowerLow = 6,						// Power Low
	DPSDK_FAILURE_STATUS_OffLine = 7,						// OffLine
}DPSDK_FAILURE_STATUS_TYPE;

// Get area list parameter
typedef struct
{
	DPSDK_INT32 iNum;										// Device number
	DPSDK_DEVICE_ID* pDeviceId;								// Device ID list
}DPSDK_GET_AREA_LIST_PARAM;

// Get page area list parameter
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];				// The keywords of search
	DPSDK_INT32 iArmStatus;									// Arm status. Refer to DPSDK_ARM_STATUS_TYPE
	DPSDK_INT32 iAlarmStatus;								// Alarm status. 0: normal, 1: alarm
}DPSDK_GET_PAGE_AREA_LIST_PARAM;

// Get page zone list parameter
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szAreaCode[DPSDK_CHANNEL_ID_LEN];			// Area code
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];				// The keywords of search
	DPSDK_INT32 iBypassStatus;								// Zone bypass status. Refer to DPSDK_BYPASS_STATUS_TYPE
	DPSDK_INT32 iAlarmStatus;								// Zone alarm status. Refer to DPSDK_ALARM_STATUS_TYPE
	DPSDK_INT32 iFailureStatus;								// Zone failure status. Refer to DPSDK_FAILURE_STATUS_TYPE
	DPSDK_INT32 iRealTimeStatus;							// RealTime Status. 0 = close, 1 = open.
}DPSDK_GET_PAGE_ZONE_LIST_PARAM;

// Partition info
typedef struct
{
	DPSDK_CHAR szPartitionCode[DPSDK_CHANNEL_ID_LEN];		// Partition code
	DPSDK_CHAR szPartitionName[DPSDK_CHANNEL_NAME_LEN];		// Partition name
}DPSDK_PARTITION_INFO;

// Area info
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];			// Alarm host name
	DPSDK_CHAR szAreaCode[DPSDK_CHANNEL_ID_LEN];			// Area code
	DPSDK_CHAR szAreaName[DPSDK_CHANNEL_NAME_LEN];			// Area name
	DPSDK_INT32 iArmStatus;									// Arm status. Refer to DPSDK_ARM_STATUS_TYPE
	DPSDK_INT32 iAlarmStatus;								// Alarm status. 0 = normal, 1 = alarm
	DPSDK_INT32 iPartitionNum;								// Partition num
	DPSDK_PARTITION_INFO* pPartitionInfo;					// Partition list
}DPSDK_AREA_INFO;

// Get area list
typedef struct
{
	DPSDK_INT32 iNum;										// Record info number
	DPSDK_AREA_INFO* pAreaInfo;								// Area list
}DPSDK_GET_AREA_LIST;

// Get area list
typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNum;										// Record info number
	DPSDK_AREA_INFO* pAreaInfo;								// Area list
}DPSDK_GET_PAGE_AREA_LIST;

// Zone info
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];			// Alarm host name
	DPSDK_CHAR szAreaCode[DPSDK_CHANNEL_ID_LEN];			// Area code
	DPSDK_CHAR szAreaName[DPSDK_CHANNEL_NAME_LEN];			// Area name
	DPSDK_CHAR szZoneId[DPSDK_CHANNEL_ID_LEN];				// Zone ID
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR szZoneName[DPSDK_DEVICE_NAME_LEN];			// Zone name
	DPSDK_INT32 iPartitionNum;								// Partition num
	DPSDK_PARTITION_INFO* pPartitionList;					// Partition list
	DPSDK_INT32 iBypassStatus;								// Zone bypass status. Refer to DPSDK_BYPASS_STATUS_TYPE
	DPSDK_INT32 iAlarmStatus;								// Zone alarm status. Refer to DPSDK_ALARM_STATUS_TYPE
	DPSDK_INT32 iFailureStatus;								// Zone failure status. Refer to DPSDK_FAILURE_STATUS_TYPE
	DPSDK_INT32 iRealTimeStatus;							// Real Time Status. 0 = close, 1 = open.
	DPSDK_INT32 iSupportSnapshot;							// Does it support capturing images? 0=No, 1=Yes
	DPSDK_INT32 iFailureStatusNum;
	DPSDK_INT32 vecFailureStatus[7];
}DPSDK_ZONE_INFO;

// Get zone list
typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNum;										// Record info number
	DPSDK_ZONE_INFO* pZoneInfo;								// Zone list
}DPSDK_GET_PAGE_ZONE_LIST;

//Operation arm type
typedef enum
{
	DPSDK_OPERATE_ARM = 1,									// Arm
	DPSDK_OPERATE_P1ARM = 2,								// P1 arm
	DPSDK_OPERATE_P2ARM = 3,								// P2 arm
	DPSDK_OPERATE_DISARM = 5,								// Disarm
}DPSDK_OPERATE_ARM_TYPE;

//Operation zone type
typedef enum
{
	DPSDK_OPERATE_ZONE_NORMAL = 7,							// Normal
	DPSDK_OPERATE_ZONE_BYPASS = 8,							// Bypass
	DPSDK_OPERATE_ZONE_ISOLATE = 9,							// Isolation
}DPSDK_OPERATE_ZONE_TYPE;

// Alarm host operation parameter
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_INT32 iOperate;									// Operation type of alarm host. Refer to DPSDK_OPERATE_ARM_TYPE
}DPSDK_OPERATE_ALARMHOST_PARAM;

// Alarm host operation parameter
typedef struct
{
	DPSDK_INT32 iNum;										// Device number
	DPSDK_DEVICE_ID* pDeviceId;								// Device ID list
	DPSDK_INT32 iOperate;									// Device operation type. Refer to DPSDK_OPERATE_ARM_TYPE
	DPSDK_BOOL bForce;										// Force operation
}DPSDK_OPERATE_DEVICE_PARAM;

//Operation error type
typedef enum
{
	DPSDK_OPERATE_ERROR_DEVICE = 1,							// Device error
	DPSDK_OPERATE_ERROR_MODULE = 2,							// Module error
	DPSDK_OPERATE_ERROR_ZONE = 3,							// Zone error
}DPSDK_OPERATE_ALARMHOST_ERROE_TYPE;

// Alarm host operation error info
typedef struct
{
	DPSDK_INT32 iErrorType;									// Error type. Refer to DPSDK_OPERATE_ALARMHOST_ERROE_TYPE
	DPSDK_CHAR szErrorMsg[DPSDK_MEMO_LEN];					// Error message
}DPSDK_OPERATE_ALARMHOST_ERROE;

// Alarm host device operation result
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];			// Alarm host name
	DPSDK_BOOL bSupportForce;								// Support force
	DPSDK_INT32 iErrorNum;
	DPSDK_OPERATE_ALARMHOST_ERROE* pErrorList;
}DPSDK_OPERATE_DEVICE_RESULT;

// Alarm host device operation result list
typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_OPERATE_DEVICE_RESULT* pResult;
}DPSDK_OPERATE_DEVICE_RESULT_LIST;

// Area base info
typedef struct
{
	DPSDK_CHAR szAreaCode[DPSDK_CHANNEL_ID_LEN];			// Area code
	DPSDK_CHAR szAreaName[DPSDK_CHANNEL_NAME_LEN];			// Area name
}DPSDK_BASE_AREA_INFO;

// Alarm host area operation result
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];			// Alarm host name
	DPSDK_BOOL bSupportForce;								// Support force
	DPSDK_INT32 iAreaNum;
	DPSDK_BASE_AREA_INFO* pAreaInfo;
	DPSDK_INT32 iErrorNum;
	DPSDK_OPERATE_ALARMHOST_ERROE* pErrorList;
}DPSDK_OPERATE_AREA_RESULT;

// Alarm host area operation result list
typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_OPERATE_AREA_RESULT* pResult;
}DPSDK_OPERATE_AREA_RESULT_LIST;

// Area operation parameter
typedef struct
{
	DPSDK_INT32 iNum;										// Area number
	DPSDK_CHANNEL_ID* pAreaId;								// Area ID list
	DPSDK_INT32 iOperate;									// Area operation type. Refer to DPSDK_OPERATE_ARM_TYPE
	DPSDK_BOOL bForce;										// Force operation
}DPSDK_OPERATE_AREA_PARAM;

// Zone operation parameter
typedef struct
{
	DPSDK_INT32 iNum;										// Zone number
	DPSDK_CHANNEL_ID* pZoneId;								// Zone ID list
	DPSDK_INT32 iOperate;									// Zone operation type. Refer to DPSDK_OPERATE_ZONE_TYPE
}DPSDK_OPERATE_ZONE_PARAM;

//Apple VOIP certificate Info
typedef struct
{
	DPSDK_TIMET tExpireTime;							// Expire time, timestamp (unit: second)
	DPSDK_BOOL	bStatus;								// Certificate status, 0=Expire, 1=Valid
	DPSDK_INT32	iValidDays;								// Valid Days
}DPSDK_APPLE_VOIP_CERTINFO;

/************************** Alarm host end ***********************************/

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_INT32 iAction;									// Action,0:close, 1:open	
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// User ID
}DPSDK_CONTROL_DOOR_PARAM;

//
typedef struct
{
	DPSDK_INT32 iStatus;									// Channel ID
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Status, 1-enabled, 0-Not enabled
}DPSDK_ALARMOUT_CONTROL;

//
typedef struct
{
	DPSDK_INT32 iAlarmStatus;								// Siren status, 0-Not enabled, 1-enabled
	DPSDK_CHAR szDevCode[DPSDK_DEVICE_CODE_LEN];			// Device code
}DPSDK_ALARM_STATUS;

// Access control
typedef struct
{
	DPSDK_CHAR szpKeyWord[DPSDK_MEMO_LEN];					// Search keywords, options
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN_EX];				// Person name
	DPSDK_CHAR szDepartmentId[DPSDK_ID_LEN];				// Organization code ID
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];					// Card no.
	DPSDK_CHAR szPersonNo[DPSDK_PERSON_NO_LEN];				// Person no.
	DPSDK_TIMET tBeginTime;									// Start time, timestamp (unit: second), required
	DPSDK_TIMET tEndTime;									// End time, timestamp (unit: second), required
	DPSDK_INT32 iPage;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32 iPageSize;									// Number of records on every page. Min. 1, max. 256. It is 32 by default if not filled in.
	DPSDK_INT32 iEventType;									// Event type. Select all if not filled in. Optional.
	DPSDK_INT32 iSubEventType;								// Event sub-type
	DPSDK_INT32 iQueryType;									// 0:fuzzy query, 1:accurate query
	DPSDK_INT32 iChannelNum;								// Channel number
	DPSDK_CHANNEL_ID* pChannelIdList;						// Channel ID list
	DPSDK_INT32 iDeviceNum;									// The number of device
	DPSDK_DEVICE_ID* pDeviceCodeList;						// The list of device code					
	DPSDK_BOOL	bIsVisitorModule;							// Whether is visitor module
}DPSDK_ACCESSCONTROL_LOG;

// Access control

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];		//Organization code
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN_EX];		//Organization name
}DPSDK_ORG_INFO_NOTIFY;

typedef struct
{
	DPSDK_INT32 iChannelNum;								// Channel number
	DPSDK_CHANNEL_ID* pChannelIdList;						// Channel ID list
	DPSDK_INT32 iDeviceNum;									// The number of device
	DPSDK_DEVICE_ID* pDeviceCodeList;						// The list of device code
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];					// Card no.
	DPSDK_CHAR szPersonNo[DPSDK_PERSON_NO_LEN];				// Person no.
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN_EX];				// Person name
	DPSDK_CHAR szDepartmentId[DPSDK_ID_LEN];				// Organization code ID
	DPSDK_INT32 iEventType;									// Event type. Select all if not filled in. Optional.
	DPSDK_INT32 iSubEventType;								// Event sub-type
	DPSDK_TIMET tBeginTime;									// Start time, timestamp (unit: second), required
	DPSDK_TIMET tEndTime;									// End time, timestamp (unit: second), required
	DPSDK_INT32 iExportType;
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
}DPSDK_GET_ACCESSCONTROL_LOG_COUNT;

typedef struct
{
	DPSDK_TIMET tTime;										// Occurrence time
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];					// Card no.
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];			// Device name
	DPSDK_CHAR szAlarmCode[DPSDK_ALARM_CODE_LEN];			// Alarm no.
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];				// Channel name
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];					// Card first name	
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN_EX];					// Card last name
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Card user ID		
	DPSDK_INT32 iEventType;									// Event type
	DPSDK_INT32 iSubEventType;								// Event type
	DPSDK_INT32 iInOutStatus;								// In/out status
	DPSDK_CHAR szStageId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szBuildingId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szUnitId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szRoomId[DPSDK_ORG_CODE_LEN];
}DPSDK_ACCESSCONTROL_INFO;

typedef struct
{
	DPSDK_INT32 iNum;										// Record info number
	DPSDK_ACCESSCONTROL_INFO* pAccessControlList;			// Access control info list
}DPSDK_ACCESSCONTROL_LIST;

typedef struct
{
	DPSDK_CHAR szEventLevel[DPSDK_TYPE_LEN];
}DPSDK_EVENT_LEVEL_INFO;

typedef struct
{
	DPSDK_INT32 iLevelNum;
	DPSDK_EVENT_LEVEL_INFO* pEventLevelInfo;
}DPSDK_EVENT_LEVEL_LIST;

typedef struct
{
	DPSDK_CHAR szPointType[DPSDK_TYPE_LEN];
}DPSDK_POINT_TYPE_INFO;

typedef struct
{
	DPSDK_INT32 iPointTypeNum;
	DPSDK_POINT_TYPE_INFO* pPointTypeInfo;
}DPSDK_POINT_TYPE_LIST;

typedef struct
{
	DPSDK_CHAR szAreaCode[DPSDK_PERSON_ID_LEN];
}DPSDK_AREA_CODE_INFO;

typedef struct
{
	DPSDK_INT32 iAreaCodeNum;
	DPSDK_AREA_CODE_INFO* pAreaCodeInfo;
}DPSDK_AREA_CODE_LIST;

typedef struct
{
	DPSDK_PAGE_INFO				struPageInfo;
	DPSDK_GENERAL_ID_LIST		struChannelIds;
	DPSDK_GENERAL_ID_LIST		struDeviceCodes;
	DPSDK_EVENT_LEVEL_LIST		struEventLevelList;								// event level
	DPSDK_POINT_TYPE_LIST		struPointTypeList;
	DPSDK_AREA_CODE_LIST		struAreaCodeList;								// Area  code
	DPSDK_CHAR					szAlarmTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR					szCardNo[DPSDK_CARD_NO_LEN];					// Card no.
	DPSDK_BASE_ID_NAME_INFO		struPersonInfo;
	DPSDK_CHAR					szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR					szACSPointID[DPSDK_ID_LEN];							// Access Point ID
	DPSDK_CHAR					szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
	DPSDK_TIMET					tStartTime;
	DPSDK_TIMET					tEndTime;
	DPSDK_TIMET					tSplitTime;
	DPSDK_CHAR					szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32					iCurrentPage;
}DPSDK_ACCESSCONTROL_LOG_PARAM;

typedef struct
{
	DPSDK_CHAR					szRecordId[DPSDK_ID_LEN];
	DPSDK_CHAR					szAlarmCode[DPSDK_ALARM_CODE_LEN];
	DPSDK_TIMET					tAlarmTime;
	DPSDK_BASE_ID_NAME_INFO		struAlarmTypeInfo;
	DPSDK_BASE_ID_NAME_INFO		struDeviceInfo;
	DPSDK_BASE_ID_NAME_INFO		struChannelInfo;
	DPSDK_CHAR					szCardNo[DPSDK_CARD_NO_LEN];					// Card no.
	DPSDK_CHAR					szFirstName[DPSDK_NAME_LEN_EX];					// Card first name	
	DPSDK_CHAR					szLastName[DPSDK_NAME_LEN_EX];					// Card last name
	DPSDK_CHAR					szPersonId[DPSDK_PERSON_ID_LEN];				// Card user ID		
	DPSDK_CHAR					szSipId[DPSDK_MEMO_LEN];
	DPSDK_INT32					iDirection;										// 0=in，1=out
}DPSDK_ACCESSCONTROL_LOG_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNum;										// Record info number
	DPSDK_ACCESSCONTROL_LOG_INFO* pAccessControlList;			// Access control info list
}DPSDK_ACCESSCONTROL_LOG_LIST;


typedef struct
{
	DPSDK_CHAR					szRecordId[DPSDK_ID_LEN];
	DPSDK_CHAR					szEventCode[DPSDK_ALARM_CODE_LEN];
	DPSDK_TIMET					tEventTime;
	DPSDK_INT32					iEnentLevel;					//1=Normal，2=Exception，3=Alarm
	DPSDK_INT32					iPointType;
	DPSDK_BASE_ID_NAME_INFO		struEventTypeInfo;
	DPSDK_BASE_ID_NAME_INFO		struDeviceInfo;
	DPSDK_BASE_ID_NAME_INFO		struChannelInfo;
	DPSDK_BASE_ID_NAME_INFO		struAreaInfo;
	DPSDK_BASE_ID_NAME_INFO		struPointInfo;
	DPSDK_BASE_ID_NAME_INFO		struPersonInfo;
	DPSDK_CHAR					szCardNo[DPSDK_CARD_NO_LEN];					// Card no.
	DPSDK_CHAR					szFirstName[DPSDK_NAME_LEN_EX];					// Card first name	
	DPSDK_CHAR					szLastName[DPSDK_NAME_LEN_EX];					// Card last name
	DPSDK_CHAR					szPersonId[DPSDK_PERSON_ID_LEN];				// Card user ID		
	DPSDK_CHAR					szSipId[DPSDK_MEMO_LEN];
	DPSDK_INT32					iDirection;										// 0=in，1=out
	DPSDK_CHAR					szCaptureImageUrl[DPSDK_URL_LEN];				// Capture image Url
	DPSDK_INT32					iOrgNum;										// Person group number
	DPSDK_ORG_INFO_NOTIFY*		pOrgInfoNotify;									// Person group Info
	DPSDK_INT32					iAntiPassType;								// 0=Local Anti-passback/ UnAnti pass,1=Global Anti-passback
	DPSDK_INT32					iOperateType;									// Operate Type:0=Other, 1=User, 2=Room, 3=Manager
	DPSDK_CHAR					szOperateInfo[DPSDK_NAME_LEN_MAX];			    // Operate Info
}DPSDK_ACCESSCONTROL_AREA_LOG_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNum;										// Record info number
	DPSDK_ACCESSCONTROL_AREA_LOG_INFO* pAccessControlList;			// Access control info list
}DPSDK_ACCESSCONTROL_AREA_LOG_LIST;

typedef struct
{
	DPSDK_CHAR szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];		// Alarm code
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_TIMET tAlarmTime;									// Alarm time
}DPSDK_ALARM_ACCESSRECORD_PARAM;

typedef struct
{
	DPSDK_CHAR szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];		// Alarm code
	DPSDK_TIMET tAlarmTime;									// Alarm time
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN];				// Device name
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
	DPSDK_CHAR szFaceImageUrl[DPSDK_URL_LEN];				// Face image Url
	DPSDK_CHAR szCaptureImageUrl[DPSDK_URL_LEN];			// Capture image Url
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// User ID
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];					// Card first name	
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN_EX];					// Card last name
	DPSDK_CHAR szStageId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szBuildingId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szUnitId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szRoomId[DPSDK_ORG_CODE_LEN];
	DPSDK_INT32 iGender;									// Gender: 0-female, 1-male, 2-unknown, 
	DPSDK_CHAR szIDNum[DPSDK_ID_LEN];
	DPSDK_CHAR szDepartmentName[DPSDK_NAME_LEN];			// Organization name
	DPSDK_INT32 iOrgNum;									// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;						// Person group Info
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];						// Telephone
	DPSDK_CHAR szCardNum[DPSDK_MEMO_LEN];					// Card no.
	DPSDK_INT32	iChanlBindNum;								// The number of channel
	DPSDK_CHANNEL_ID* pBindChanlIdList;						// The list of channel id
	DPSDK_INT32	iChanlLinkNum;								// The number of channel
	DPSDK_CHANNEL_ID* pLinkChanlIdList;						// The list of channel id
	DPSDK_INT32 iAntiPassType;								// 0=Local Anti-passback/ UnAnti pass,1=Global Anti-passback
	DPSDK_INT32 iOperateType;								// Operate Type:0=Other, 1=User, 2=Room, 3=Manager
	DPSDK_CHAR szOperateInfo[DPSDK_NAME_LEN_MAX];			// Operate Info
}DPSDK_ALARM_ACCESSRECORD_INFO;

typedef struct
{
	DPSDK_TIMET tBeginTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szDevCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_INT32 iExtractType;								// Extracted record type
}DPSDK_EXTRACT_ACCESSCONTROL_PARAM;

// Export system log parameter
typedef struct
{


	DPSDK_CHAR						szAreaCode[DPSDK_ID_LEN_EX];						// Area Code
	DPSDK_TIMET						tBeginTime;											// Start time
	DPSDK_TIMET						tEndTime;											// End time
	DPSDK_INT32						iLevelNum;
	DPSDK_EVENT_LEVEL_INFO*			pEventLevelInfo;									// event level
	DPSDK_CHAR						szDepartmentId[DPSDK_ID_LEN];						// Organization code id
	DPSDK_CHAR						szPointCode[DPSDK_ID_LEN_EX];
	DPSDK_CHAR						szKeyWord[DPSDK_KEYWORD_LEN];						// The keywords of search
	DPSDK_CHAR						szEncryptPass[DPSDK_PWD_LEN];						//AES
	DPSDK_INT32						iExportRange;										// 0=export all，1=export select, 2=export custom，default 0
	DPSDK_INT32						iDataType;											// Data Type, 0:Record, 1: Record + pic
	DPSDK_INT32						iExportType;										// Export type see DPSDK_EXPORT_LOG_TYPE
	DPSDK_INT32						iExportStartNo;
	DPSDK_INT32						iExportNumber;
	DPSDK_INT32						iDisplayTimezoneOffset;								// Display Server Timezone Offset
	DPSDK_INT32						iSelectIdsNum;
	DPSDK_BASE_ID_INFO*				pSelectIdsList;
	DPSDK_INT32						iDeviceNum;											// device quantity
	DPSDK_DEVICE_CODE*				pDeviceCodeList;								// device code list
	DPSDK_INT32						iChannelNum;										// The number of channel
	DPSDK_CHANNEL_ID*				pChannelIdList;									// The list of channel id
	DPSDK_CHAR						szCardNum[DPSDK_MEMO_LEN];							// Card number
	DPSDK_CHAR						szPersonNum[DPSDK_MEMO_LEN];							// Person code
	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];						// Person name	
	DPSDK_INT32						iEventType;											// Query module event
	DPSDK_INT32						iSubEventType;
	DPSDK_CHAR*						pLocal;												// International
}DPSDK_EXPORT_ACCESS_LOG_PARAM;

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];				// User name
}DPSDK_EXTRACT_ACCESSCONTROL_RESULT;


//Export Lift Controller Log
typedef struct
{
	DPSDK_CHANNEL_ID* pChannelIdList;								// The list of channel id
	DPSDK_INT32 iChannelNum;										// The number of channel
	DPSDK_INT32 iEventType;											// Query event type
	DPSDK_CHAR szPersonID[DPSDK_MEMO_LEN];							// Person code
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];						// Person name
	DPSDK_CHAR szOrgCode[DPSDK_ID_LEN];								// Person group code
	DPSDK_TIMET tStartTime;											// Start time
	DPSDK_TIMET tEndTime;											// End time
	DPSDK_INT32 iExportRange;										// 0=export all，1=export select, default 0
	DPSDK_INT32 iDataType;											// Data Type, 0=Record, 1=Record + pic
	DPSDK_INT32 iSelectIdsNum;										// Select record ID
	DPSDK_BASE_ID_INFO* pSelectIdsList;								// Resord ID,exportRange=1
	DPSDK_CHAR szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_INT32 iDisplayTimezoneOffset;								// Display Server Timezone Offset,0=No,1=Yes
}DPSDK_EXPORT_LIFT_LOG_PARAM;

typedef struct
{
	DPSDK_CHAR szPlanId[DPSDK_ID_LEN];						// plan ID
}DPSDK_PLAN_ID;

typedef struct
{
	DPSDK_INT32 iPersonNum;									// Person quantity
	DPSDK_PERSON_ID struPersonIdList[1];					// Person ID list
}DPSDK_PERSON_LIST;

typedef struct
{
	DPSDK_CHAR szCarID[DPSDK_ID_LEN];				                // Car ID
}DPSDK_CAR_ID;

typedef struct
{
	DPSDK_INT32 iDeleteCarsNum;					    // CarID quantity
	DPSDK_CAR_ID* pCarIDList;					// CarID list
}DPSDK_BATCHDELETECARS_INFO;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_RECORD_ID* pRecordList;
}DPSDK_RECORD_ID_LIST;

typedef struct
{
	DPSDK_INT32 iChannelNum;
	DPSDK_CHANNEL_ID* pChannelList;
}DPSDK_ATTENDANCE_CHANNEL_PARAM;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];							// Channel id
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];					    // Channel name
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];							// Device name
}DPSDK_ATT_CHANNEL_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iChannelInfoNum;
	DPSDK_ATT_CHANNEL_INFO* pRelChannelInfo;
}DPSDK_GET_CHANNEL_RESULT;

typedef struct
{
	DPSDK_CHAR szDeviceId[DPSDK_DEVICE_CODE_LEN];							// Channel id
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];							// Device name
}DPSDK_ATT_DEVICE_INFO;

typedef struct
{
	DPSDK_TIMET tBeginTime;
	DPSDK_TIMET tEndTime;
	DPSDK_INT32 iDeviceInfoNum;
	DPSDK_ATT_DEVICE_INFO* pDeviceInfo;
}DPSDK_ATT_MANUALSYNCRECORD;

typedef struct
{
	DPSDK_INT32 iTaskStatue;
	DPSDK_INT32 iTasResult;
	DPSDK_INT32 iSyncNum;
	DPSDK_CHAR szSessionId[DPSDK_SESSION_LEN];
}DPSDK_ATT_MANUALSYNCRECORD_NOTIFY;

typedef struct
{
	DPSDK_BOOL bAutomaticSync;
	DPSDK_CHAR szBeginTime[DPSDK_TIME_STRING_LEN];
	DPSDK_INT32 iDeviceInfoNum;
	DPSDK_ATT_DEVICE_INFO* pDeviceInfo;
}DPSDK_ATT_AUTOMATIC_SYNC_RULE;

typedef struct
{
	DPSDK_CHAR szStartTime[DPSDK_TIME_LEN];
	DPSDK_CHAR szEndTime[DPSDK_TIME_LEN];
	DPSDK_FLOAT fWorkHours;
	DPSDK_CHAR szSignInStartTime[DPSDK_TIME_LEN];
	DPSDK_CHAR szSignInEndTime[DPSDK_TIME_LEN];
	DPSDK_INT32 iMustSignIn;
	DPSDK_CHAR szSignOutStartTime[DPSDK_TIME_LEN];
	DPSDK_CHAR szSignOutEndTime[DPSDK_TIME_LEN];
	DPSDK_INT32 iMustSignOut;
}DPSDK_WORKATT_INFO;

typedef struct
{
	DPSDK_CHAR szHolidayId[DPSDK_ID_LEN];
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32 iHolidayType;
	DPSDK_CHAR szHolidayValueStr[DPSDK_MEMO_LEN];
	DPSDK_INT32 iHolidayNum;
}DPSDK_HOLIDAY_DATA;

typedef struct
{
	DPSDK_INT32 iHolidayNum;
	DPSDK_ID*	pHolidayId;
}DPSDK_DEL_HOLIDAY_INFO;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_INT32 iStatus;
	DPSDK_INT32 iTotalCount;
	DPSDK_CHAR szExtractIP[DPSDK_IP_LEN];
}DPSDK_EXTRACT_PERSONCARD_INFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR szExtractId[DPSDK_ID_LEN];					// Task database id			
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_INT32 iStatus;
	DPSDK_INT32 iTotalCount;
	DPSDK_CHAR szExtractIP[DPSDK_IP_LEN];
}DPSDK_EXTRACT_PERSON_TASK_NOTIFY;

typedef struct
{
	DPSDK_CHAR szExtractId[DPSDK_ID_LEN];					// Task database id	
}DPSDK_EXTRACTID;

typedef struct
{
	DPSDK_INT32 iExtractIdNum;
	DPSDK_EXTRACTID* pExtractIdList;
}DPSDK_DELETE_EXTRACT_PERSON_TASK_NOTIFY;

typedef struct
{
	DPSDK_INT32				iPageSize;										// Number of alerts per page
	DPSDK_INT32				iPageNo;										// Query page number (from 1Start）
	DPSDK_CHAR				szStartDate[DPSDK_TIME_LEN];
	DPSDK_CHAR				szEndDate[DPSDK_TIME_LEN];
}DPSDK_GET_HOLIDAY_PARAM;

typedef struct
{
	DPSDK_CHAR szHolidayId[DPSDK_ID_LEN];
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32 iHolidayNum;
	DPSDK_CHAR	szStartDate[DPSDK_TIME_LEN];
	DPSDK_CHAR	szEndDate[DPSDK_TIME_LEN];
}DPSDK_ATTENDANCE_HOLIDAY_INFO;

typedef struct
{
	DPSDK_INT32				iNextPage;
	DPSDK_INT32				iTotalCount;
	DPSDK_INT32				iHolidayListNum;
	DPSDK_ATTENDANCE_HOLIDAY_INFO*     pHolidayList;
}DPSDK_GET_HOLIDAY_RESULT;

typedef struct
{
	DPSDK_CHAR szIntervalId[DPSDK_ID_LEN];
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32 iAttendanceModel;
	DPSDK_INT32 iColor;
	DPSDK_INT32 iLater;
	DPSDK_INT32 iLaterAbsence;
	DPSDK_INT32 iEarly;
	DPSDK_INT32 iEarlyAbsence;
	DPSDK_INT32 iWorkOvertime;
	DPSDK_FLOAT fFreeWorkHours;
	DPSDK_INT32 iFreeWorkLimit;
	DPSDK_CHAR szFreeLimitTime[DPSDK_TIME_LEN];
	DPSDK_FLOAT fRecordWorkHours;
	DPSDK_INT32 iEnableOddInEvenOut;
	DPSDK_INT32 iSwingCardInterval;
	DPSDK_CHAR szDayChangeTime[DPSDK_TIME_LEN];
	DPSDK_FLOAT fFreeWorkOvertime;
	DPSDK_INT32 iEnableFreeWorkOver;
	DPSDK_INT32 iWorkAttNum;
	DPSDK_WORKATT_INFO* pWorkAttInfo;
}DPSDK_TIMEINTERVAL_DATA;

typedef struct
{
	DPSDK_INT32	iTimeIntervalNum;
	DPSDK_TIMEINTERVAL_DATA* pTimeIntervalList;
}DPSDK_BATCH_TIMEINTERVAL_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
}DPSDK_TIMEINTERVAL_ID;

typedef struct
{
	DPSDK_INT32	iIdNum;
	DPSDK_TIMEINTERVAL_ID* pIntervalIdList;
}DPSDK_TIMEINTERVAL_ID_LIST;

typedef struct
{
	DPSDK_INT32	iIdNum;
	DPSDK_TIMEINTERVAL_ID* pIntervalIdList;
}DPSDK_DEL_TIMEINTERVAL_PARAM;

typedef struct
{
	DPSDK_CHAR szStartTime[DPSDK_TIME_LEN];
	DPSDK_CHAR szEndTime[DPSDK_TIME_LEN];
}DPSDK_FIXEDWORK_INFO;

typedef struct
{
	DPSDK_FLOAT fFreeWorkHours;
}DPSDK_TIMEINTERVAL_FREEWORK_INFO;

typedef struct
{
	DPSDK_CHAR szIntervalId[DPSDK_ID_LEN];
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32 iAttModel;
	DPSDK_INT32 iColor;
	DPSDK_INT32 iFixedWorkNum;
	DPSDK_FIXEDWORK_INFO* pFixedWorkList;
	DPSDK_INT32 iFreeWorkNum;
	DPSDK_TIMEINTERVAL_FREEWORK_INFO* pFreeWorkInfo;
}DPSDK_TIMEINTERVAL_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iNextPage;
	DPSDK_INT32 iNum;
	DPSDK_TIMEINTERVAL_INFO* pIntervalInfo;
}DPSDK_GET_TIMEINTERVAL_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32 iLoopType;
	DPSDK_INT32 iLoopValue;
	DPSDK_INT32 iIntervalNum;
	DPSDK_TIMEINTERVAL_ID* pIntervalIdList;
}DPSDK_ATTENDANCEORDER_INFO;

typedef struct
{
	DPSDK_INT32 iOrderNum;
	DPSDK_ATTENDANCEORDER_INFO* pOrderList;
}DPSDK_BATCH_ATTENDANCEORDER_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32 iColor;
}DPSDK_INTERVAL_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32 iLoopType;
}DPSDK_ATTENDANCEORDER_DATA;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iNum;
	DPSDK_ATTENDANCEORDER_DATA* pOrderInfo;
}DPSDK_ATTENDANCEORDER_LIST;

typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];
}DPSDK_ORDER_NAME;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_ORDER_NAME* pFailedOrderList;
}DPSDK_ATTENDANCE_ORDER_NAME_LIST;

typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];
}DPSDK_TIMEINTERVAL_NAME;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_TIMEINTERVAL_NAME* pFailedIntervalList;
}DPSDK_ATTENDANCE_TIMEINTERVAL_NAME_LIST;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
}DPSDK_ORDER_ID;

typedef struct
{
	DPSDK_INT32 iIdNum;
	DPSDK_ORDER_ID* pOrgIdList;
}DPSDK_ORDER_ID_LIST;

typedef struct
{
	DPSDK_CHAR szTempDate[DPSDK_TIME_LEN];
	DPSDK_CHAR szIntervalId[DPSDK_ID_LEN];// used by get 
	DPSDK_INT32 iIdNum;
	DPSDK_TIMEINTERVAL_ID* pIntervalId;
}DPSDK_SCHEDULE_TEMP_ORDER_INFO;

typedef struct
{
	DPSDK_CHAR szStartDate[DPSDK_TIME_LEN];
	DPSDK_CHAR szEndDate[DPSDK_TIME_LEN];
	DPSDK_CHAR szOrderId[DPSDK_ID_LEN];
}DPSDK_STANDARD_SCHEDULE_ORDER_INFO;

typedef struct
{
	DPSDK_INT32 iPersonIdNum;
	DPSDK_ID* pPersonIdList;
	DPSDK_INT32 iStandardOrderNum;
	DPSDK_STANDARD_SCHEDULE_ORDER_INFO* pStandardOrderList;
	DPSDK_INT32 iTempOrderNum;
	DPSDK_SCHEDULE_TEMP_ORDER_INFO* pTempOrderList;
}DPSDK_MODIFY_SCHEDULE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_ID_LEN];
	DPSDK_INT32 iStandardOrderNum;
	DPSDK_STANDARD_SCHEDULE_ORDER_INFO* pStandardOrderList;
	DPSDK_INT32 iTempOrderNum;
	DPSDK_SCHEDULE_TEMP_ORDER_INFO* pTempOrderList;
}DPSDK_PERSON_SCHEDULE_INFO;

typedef struct
{
	DPSDK_CHAR szDeptId[DPSDK_ID_LEN];
	DPSDK_INT32 iOrderNum;
	DPSDK_STANDARD_SCHEDULE_ORDER_INFO* pOrderList;
}DPSDK_DEPT_SCHEDULE_INFO;

typedef struct
{
	DPSDK_INT32 iPersonIdNum;
	DPSDK_ID* pPersonIdList;
	DPSDK_INT32 iStandardOrderNum;
	DPSDK_STANDARD_SCHEDULE_ORDER_INFO* pStandardOrderList;
	DPSDK_INT32 iTempOrderNum;
	DPSDK_SCHEDULE_TEMP_ORDER_INFO* pTempOrderList;
}DPSDK_UPDATE_PERSON_SCHEDULE;

typedef struct
{
	DPSDK_INT32 iDeptIdNum;
	DPSDK_ID* pDeptIdList;
	DPSDK_INT32 iStandardOrderNum;
	DPSDK_STANDARD_SCHEDULE_ORDER_INFO* pStandardOrderList;
}DPSDK_UPDATE_DEPT_SCHEDULE;

typedef struct
{
	DPSDK_CHAR szTempDate[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_INT32 iPersonIdNum;
	DPSDK_PERSON_ID* pPersonIdList;
	DPSDK_INT32 iIntervalIdNum;
	DPSDK_TIMEINTERVAL_ID* pIntervalIdList;
}DPSDK_SCHEDULE_TEMP_INFO;

typedef struct
{
	DPSDK_CHAR szTempDate[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];					// User ID
}DPSDK_DEL_SCHEDULE_TEMP_INFO;

typedef struct
{
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN_EX];			// startTime
	DPSDK_CHAR	szEndTime[DPSDK_TIME_STRING_LEN_EX];			// endTime
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];					// keyWord such as name,personCode
	DPSDK_CHAR  szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR  szPersonName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR	szDeptId[DPSDK_ID_LEN];
	DPSDK_CHAR	szEventType[DPSDK_TYPE_LEN];
	DPSDK_INT32 iExportType;
	DPSDK_CHAR	szLocale[DPSDK_ID_LEN];
	DPSDK_INT32 iWorkOverType;									//1 normal 2 rest 3 holiday
	DPSDK_INT32 iExportStartNo;
	DPSDK_INT32 iExportNumber;
	DPSDK_CHAR	szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_INT32 iDisplayServerTimezoneOffset;					// Display Server Timezone Offset
	DPSDK_INT32 iTimeFormat;									// 0=hour+minute，1=minute
	DPSDK_CHAR	szCredence[DPSDK_TOKEN_LEN];
}DPSDK_ATTENDANCE_RECORD;

typedef struct
{
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN_EX];			// startTime
	DPSDK_CHAR	szEndTime[DPSDK_TIME_STRING_LEN_EX];			// endTime
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN];					// keyWord such as name,personCode
	DPSDK_CHAR	szDeptId[DPSDK_ID_LEN];
	DPSDK_CHAR  szEventType[DPSDK_TYPE_LEN];					// Event type, 0-Total, 1-Come late, 2-Leave early, 3-Neglect work, 4-Come late and Leave early, 
																// 5-Forget to punch cards, 6-Come late and Forget to punch cards, 7-Leave early and Forget to punch cards
	DPSDK_INT32 iExportType;									// Export type see DPSDK_EXPORT_LOG_TYPE
	DPSDK_CHAR	szLocale[DPSDK_ID_LEN];
}DPSDK_GET_ATTENDANCE_ABNORMAL_REPORT_COUNT_PARAM;

typedef struct
{
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN_EX];			//  startTime
	DPSDK_CHAR	szEndTime[DPSDK_TIME_STRING_LEN_EX];			//  endTime
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];					//	keyWord such as name,personCode
	DPSDK_CHAR  szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR  szPersonName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR	szDeptId[DPSDK_ID_LEN];
	DPSDK_CHAR	szEventType[DPSDK_TYPE_LEN];					// Event type, 0-Total, 1-Come late, 2-Leave early, 3-Neglect work, 4-Come late and Leave early, 
																// 5-Forget to punch cards, 6-Come late and Forget to punch cards, 7-Leave early and Forget to punch cards
	DPSDK_CHAR	szLocale[DPSDK_ID_LEN];
	DPSDK_INT32	iPageNo;										// Query page number (from 1Start）
	DPSDK_INT32	iPageSize;										// Number of alerts per page
}DPSDK_GET_ATTENDANCE_ABNORMAL_REPORT_PARAM;

typedef struct
{
	DPSDK_CHAR	szDBId[DPSDK_DB_ID_LEN];						// Data base ID
	DPSDK_CHAR szAttendanceDate[DPSDK_TIME_STRING_LEN_EX];		// Attendance date
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];					// User ID
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];					// User name
	DPSDK_CHAR szDeptName[DPSDK_NAME_LEN];						// Department name
	DPSDK_CHAR szOrdernName[DPSDK_NAME_LEN];					// Order name
	DPSDK_CHAR szSignInTime[DPSDK_TIME_STRING_LEN_EX];			// Sign in time
	DPSDK_CHAR szSignOutTime[DPSDK_TIME_STRING_LEN_EX];			// Sign out time
	DPSDK_INT32 iWeekDay;										// 0 sunday - 6 saturday 
	DPSDK_CHAR szOutTime[DPSDK_TIME_STRING_LEN_EX];				// Out time
	DPSDK_TIMET tWorkTime;										// Work time
	DPSDK_TIMET tWorkOverTime;									// Work over time
	DPSDK_INT32 iAbnormalStatus;								// Abnormal status
	DPSDK_INT32 iOrgNum;										// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;							// Person group Info
}DPSDK_ATTENDANCE_ABNORMAL_REPORT_INFO;

typedef struct
{
	DPSDK_INT32 iNextPage;										// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;									// Total 
	DPSDK_INT32 iPageDataNum;
	DPSDK_ATTENDANCE_ABNORMAL_REPORT_INFO* pageDataList;
}DPSDK_ATTENDANCE_ABNORMAL_REPORT_LIST;

typedef struct
{
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN_EX];			// startTime
	DPSDK_CHAR	szEndTime[DPSDK_TIME_STRING_LEN_EX];			// endTime
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN];					// keyWord such as name,personCode
	DPSDK_CHAR	szDeptId[DPSDK_ID_LEN];
	DPSDK_CHAR  szEventType[DPSDK_TYPE_LEN];					// Event Type, 1-Go to work, 2-Go off work
	DPSDK_INT32 iExportType;									// Export type see DPSDK_EXPORT_LOG_TYPE
	DPSDK_CHAR	szLocale[DPSDK_ID_LEN];
}DPSDK_GET_ATTENDANCE_RECORD_INFO_REPORT_COUNT_PARAM;

typedef struct
{
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN_EX];			//  startTime
	DPSDK_CHAR	szEndTime[DPSDK_TIME_STRING_LEN_EX];			//  endTime
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];					//	keyWord such as name,personCode
	DPSDK_CHAR	szPersonId[DPSDK_PERSON_ID_LEN];					// User ID
	DPSDK_CHAR	szPersonName[DPSDK_NAME_LEN_MAX];					// User name
	DPSDK_CHAR	szDeptId[DPSDK_ID_LEN];
	DPSDK_CHAR	szLocale[DPSDK_ID_LEN];
	DPSDK_INT32	iPageNo;										// Query page number (from 1Start）
	DPSDK_INT32	iPageSize;										// Number of alerts per page
	DPSDK_INT32 iTimeFormat;									// 0=hour+minute，1=minute
}DPSDK_GET_ATTENDANCE_RECORD_INFO_REPORT_PARAM;

typedef struct
{
	DPSDK_CHAR	szDBId[DPSDK_DB_ID_LEN];						// Data base ID
	DPSDK_CHAR szAttendanceDate[DPSDK_TIME_STRING_LEN_EX];		// Attendance date
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];					// User ID
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];					// User name
	DPSDK_CHAR szDeptName[DPSDK_NAME_LEN];						// Department name
	DPSDK_CHAR szOrdernName[DPSDK_NAME_LEN];					// Order name	
	DPSDK_CHAR szSignInTime[DPSDK_TIME_STRING_LEN_EX];			// Sign in time	
	DPSDK_CHAR szSignOutTime[DPSDK_TIME_STRING_LEN_EX];			// Sign out time
	DPSDK_INT32 iWeekDay;										// 0 sunday - 6 saturday 	
	DPSDK_CHAR szOutTime[DPSDK_TIME_STRING_LEN_EX];				// Out time
	DPSDK_CHAR szWorkTime[DPSDK_TIME_STRING_LEN_EX];			// Work time
	DPSDK_CHAR szWorkOverTime[DPSDK_TIME_STRING_LEN_EX];		// Work over time
	DPSDK_INT32 iOrgNum;									// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;						// Person group Info
}DPSDK_ATTENDANCE_RECORD_INFO_REPORT_INFO;

typedef struct
{
	DPSDK_INT32 iNextPage;										// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;									// Total 
	DPSDK_INT32 iPageDataNum;
	DPSDK_ATTENDANCE_RECORD_INFO_REPORT_INFO* pageDataList;
}DPSDK_ATTENDANCE_RECORD_INFO_REPORT_LIST;

typedef struct
{
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN_EX];			// startTime
	DPSDK_CHAR	szEndTime[DPSDK_TIME_STRING_LEN_EX];			// endTime
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN];					// keyWord such as name,personCode
	DPSDK_CHAR	szDeptId[DPSDK_ID_LEN];
	DPSDK_CHAR	szLocale[DPSDK_ID_LEN];
	DPSDK_INT32 iExportType;									// Export type see DPSDK_EXPORT_LOG_TYPE
}DPSDK_GET_ATTENDANCE_OUTING_REPORT_COUNT_PARAM;

typedef struct
{
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN_EX];			//  startTime
	DPSDK_CHAR	szEndTime[DPSDK_TIME_STRING_LEN_EX];			//  endTime
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];					//	keyWord such as name,personCode
	DPSDK_CHAR	szPersonId[DPSDK_PERSON_ID_LEN];					// User ID
	DPSDK_CHAR	szPersonName[DPSDK_NAME_LEN_MAX];					// User name
	DPSDK_CHAR	szDeptId[DPSDK_ID_LEN];
	DPSDK_CHAR	szLocale[DPSDK_ID_LEN];
	DPSDK_INT32	iPageNo;										// Query page number (from 1Start）
	DPSDK_INT32	iPageSize;										// Number of alerts per page
	DPSDK_INT32 iTimeFormat;									// 0=hour+minute，1=minute
}DPSDK_GET_ATTENDANCE_OUTING_REPORT_PARAM;

typedef struct
{
	DPSDK_CHAR	szDBId[DPSDK_DB_ID_LEN];						// Data base ID	
	DPSDK_CHAR szAttendanceDate[DPSDK_TIME_STRING_LEN_EX];		// Attendance date
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];					// User ID
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];					// User name
	DPSDK_CHAR szDeptName[DPSDK_NAME_LEN];						// Department name
	DPSDK_CHAR szCardNum[DPSDK_MEMO_LEN];						// Card no.	
	DPSDK_CHAR szLeaveTime[DPSDK_TIME_STRING_LEN_EX];			// Leave time	
	DPSDK_CHAR szBackTime[DPSDK_TIME_STRING_LEN_EX];			// Back time	
	DPSDK_CHAR szOutingTime[DPSDK_TIME_STRING_LEN_EX];			// Outing time
	DPSDK_INT32 iOrgNum;										// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;							// Person group Info
}DPSDK_ATTENDANCE_OUTING_REPORT_INFO;

typedef struct
{
	DPSDK_INT32 iNextPage;										// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;									// Total 
	DPSDK_INT32 iPageDataNum;
	DPSDK_ATTENDANCE_OUTING_REPORT_INFO* pageDataList;
}DPSDK_ATTENDANCE_OUTING_REPORT_LIST;

typedef struct
{
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN_EX];			//  startTime
	DPSDK_CHAR	szEndTime[DPSDK_TIME_STRING_LEN_EX];			//  endTime
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN];					//	keyWord such as name,personCode
	DPSDK_CHAR	szDeptId[DPSDK_ID_LEN];
	DPSDK_CHAR	szLocale[DPSDK_ID_LEN];
	DPSDK_INT32 iExportType;
	DPSDK_INT32 iWorkOverType;									//1 normal 2 rest 3 holiday
}DPSDK_GET_ATTENDANCE_WORK_OVERTIME_REPORT_COUNT_PARAM;

typedef struct
{
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN_EX];			//  startTime
	DPSDK_CHAR	szEndTime[DPSDK_TIME_STRING_LEN_EX];			//  endTime
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];					//	keyWord such as name,personCode
	DPSDK_CHAR	szPersonId[DPSDK_PERSON_ID_LEN];					// User ID
	DPSDK_CHAR	szPersonName[DPSDK_NAME_LEN_MAX];					// User name
	DPSDK_CHAR	szDeptId[DPSDK_ID_LEN];
	DPSDK_CHAR	szLocale[DPSDK_ID_LEN];
	DPSDK_INT32 iExportType;
	DPSDK_INT32 iWorkOverType;									//1 normal 2 rest 3 holiday
	DPSDK_INT32	iPageNo;										// Query page number (from 1Start）
	DPSDK_INT32	iPageSize;										// Number of alerts per page
	DPSDK_INT32 iTimeFormat;									// 0=hour+minute，1=minute
}DPSDK_GET_ATTENDANCE_WORK_OVERTIME_REPORT_PARAM;

typedef struct
{
	DPSDK_CHAR	szDBId[DPSDK_DB_ID_LEN];						// Data base ID	
	DPSDK_CHAR szAttendanceDate[DPSDK_TIME_STRING_LEN_EX];		// Attendance date
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];					// User ID
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];					// User name
	DPSDK_CHAR szDeptName[DPSDK_NAME_LEN];						// Department name
	DPSDK_CHAR szWorkOverTime[DPSDK_TIME_STRING_LEN_EX];		// Work overtime;
	DPSDK_INT32 iWorkOverType;									//1 normal 2 rest 3 holiday
	DPSDK_INT32 iOrgNum;										// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;							// Person group Info
}DPSDK_ATTENDANCE_WORK_OVERTIME_REPORT_INFO;

typedef struct
{
	DPSDK_INT32 iNextPage;										// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;									// Total 
	DPSDK_INT32 iPageDataNum;
	DPSDK_ATTENDANCE_WORK_OVERTIME_REPORT_INFO* pageDataList;
}DPSDK_ATTENDANCE_WORK_OVERTIME_REPORT_LIST;

typedef struct
{
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN_EX];			//  startTime
	DPSDK_CHAR	szEndTime[DPSDK_TIME_STRING_LEN_EX];			//  endTime
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN];					//	keyWord such as name,personCode
	DPSDK_CHAR	szDeptId[DPSDK_ID_LEN];
	DPSDK_CHAR	szLocale[DPSDK_ID_LEN];
	DPSDK_CHAR  szEventType[DPSDK_TYPE_LEN];					// Event type, 0-total, 1-Check-in, 3-Check-out, 4-Go out, 5-Return home;
	DPSDK_INT32 iExportType;									// Export type see DPSDK_EXPORT_LOG_TYPE
}DPSDK_GET_ATTENDANCE_SWIPING_CARD_REPORT_COUNT_PARAM;

typedef struct
{
	DPSDK_CHAR	szStartTime[DPSDK_TIME_STRING_LEN_EX];			//  startTime
	DPSDK_CHAR	szEndTime[DPSDK_TIME_STRING_LEN_EX];			//  endTime
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];					//	keyWord such as name,personCode
	DPSDK_CHAR	szPersonId[DPSDK_PERSON_ID_LEN];					// User ID
	DPSDK_CHAR	szPersonName[DPSDK_NAME_LEN_MAX];					// User name
	DPSDK_CHAR	szDeptId[DPSDK_ID_LEN];
	DPSDK_CHAR	szEventType[DPSDK_TYPE_LEN];					// Event type, 0-total, 1-Check-in, 3-Check-out, 4-Go out, 5-Return home;
	DPSDK_CHAR	szLocale[DPSDK_ID_LEN];
	DPSDK_INT32	iPageNo;										// Query page number (from 1Start）
	DPSDK_INT32	iPageSize;										// Number of alerts per page
	DPSDK_INT32 iDisplayServerTimezoneOffset;					// Display Server Timezone Offset
	DPSDK_CHAR	szSequence[DPSDK_SEQUENCE_LEN];					// interface sequence
	DPSDK_CHAR	szSplitTime[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_CHAR	szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32 iCurrentPage;
}DPSDK_GET_ATTENDANCE_SWIPING_CARD_REPORT_PARAM;

typedef struct
{
	DPSDK_CHAR	szDBId[DPSDK_DB_ID_LEN];						// Data base ID	
	DPSDK_CHAR szSwipeTime[DPSDK_TIME_STRING_LEN_EX];			// Swipe time
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];					// User ID
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];					// User name
	DPSDK_CHAR szDeptName[DPSDK_NAME_LEN];						// Department name
	DPSDK_CHAR szCardNum[DPSDK_MEMO_LEN];						// Card no.	
	DPSDK_CHAR szPersonPicUrl[DPSDK_URL_LEN_EX];				//
	DPSDK_CHAR szSwipeLocation[DPSDK_NAME_LEN];					// Swipe location
	DPSDK_CHAR szEventName[DPSDK_NAME_LEN];						// Event name
	DPSDK_INT32 iOrgNum;										// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;							// Person group Info
}DPSDK_ATTENDANCE_SWIPING_CARD_REPORT_INFO;

typedef struct
{
	DPSDK_INT32 iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;								// Total 
	DPSDK_INT32 iPageDataNum;
	DPSDK_ATTENDANCE_SWIPING_CARD_REPORT_INFO* pageDataList;
}DPSDK_ATTENDANCE_SWIPING_CARD_REPORT_LIST;

typedef struct
{
	DPSDK_INT32 iRepeatPersonNum;
	DPSDK_PERSON_ID* pRepeatPersonId;
	DPSDK_INT32 iRepeatCardPersonNum;
	DPSDK_PERSON_ID* pRepeatCardPersonId;
}DPSDK_ADD_EXTRACT_ACCESSPERSON_RESULT;

typedef struct
{
	DPSDK_INT32 iIdNum;
	DPSDK_ID* pIdList;
	DPSDK_CHAR szExportType[DPSDK_TYPE_LEN];				// Export type
	DPSDK_CHAR szLocale[DPSDK_ID_LEN];
	DPSDK_CHAR szExtractId[DPSDK_ID_LEN];					// Task database id
	DPSDK_CHAR szKey[DPSDK_KEYWORD_LEN];					// Keyword
	DPSDK_INT32 iDataType;									// Data Type, 0:Record, 1: Record + pic
	DPSDK_INT32 iExportStartNo;
	DPSDK_INT32 iExportNumber;
}DPSDK_EXTRACT_PERSON_EXPORT_PARAM;

typedef struct
{
	DPSDK_INT32 iIdNum;
	DPSDK_ID* pIdList;
	DPSDK_CHAR szExtractId[DPSDK_ID_LEN];					// Task database id
	DPSDK_CHAR szKey[DPSDK_KEYWORD_LEN];					// Keyword
}DPSDK_GET_PERSON_EXTRACT_COUNT_PARAM;

typedef struct
{
	DPSDK_INT32 iIdNum;
	DPSDK_ID* pIdList;
	DPSDK_CHAR szExtractId[DPSDK_ID_LEN];					// Task database id
	DPSDK_CHAR szKey[DPSDK_KEYWORD_LEN];					// Keyword
}DPSDK_EXTRACT_PERSON_ADD_PARAM;

typedef struct
{
	DPSDK_CHAR szCardNum[DPSDK_MEMO_LEN];					// Card no.
}DPSDK_CARD_NUM;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];
	DPSDK_CHAR szServerIp[DPSDK_IP_LEN];
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];
	DPSDK_FLOAT fbandwidth;				//one dot
}DPSDK_OVERRANGE_BANDWIDTH_WARNINGDATA;

typedef struct
{
	DPSDK_CHAR szSourceName[DPSDK_PLATE_NUMBER_LEN_EX];
}DPSDK_EVENT_EXIST_NAME_INFO;

typedef struct
{
	DPSDK_INT32 iOverRangeBandWidthNum;
	DPSDK_OVERRANGE_BANDWIDTH_WARNINGDATA* pOverRangeBandWidthList;
	DPSDK_INT32 iExistNameNum;
	DPSDK_EVENT_EXIST_NAME_INFO* pExistNameList;
}DPSDK_ADDALARMPLAN_FAILDDETAILDATA;

typedef struct
{
	DPSDK_INT32 iOverRangeBandWidthNum;
	DPSDK_OVERRANGE_BANDWIDTH_WARNINGDATA* pOverRangeBandWidthList;
	DPSDK_INT32 iExistNameNum;
	DPSDK_EVENT_EXIST_NAME_INFO* pExistNameList;
}DPSDK_UPDATEALARMPLAN_FAILDDETAILDATA;

typedef struct
{
	DPSDK_INT32 iOverRangeBandWidthNum;
	DPSDK_OVERRANGE_BANDWIDTH_WARNINGDATA* pOverRangeBandWidthList;
}DPSDK_BATCHUPDATEALARMPLANSTATUS_FAILDDETAILDATA;

typedef struct
{
	DPSDK_INT32 iUrlNum;
	DPSDK_FILE_URL* pUrlList;
}DPSDK_FILE_URL_LIST;

typedef struct
{
	DPSDK_CHAR szNodeId[DPSDK_NODE_ID_LEN];					// Node ID
}DPSDK_NODE_ID;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// User ID
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
}DPSDK_GET_INFRAREDFACE_PARAM;

typedef struct
{
	DPSDK_CHAR szInfraredFaceCode[DPSDK_INFRAREDFACE_CODE_LEN];			// Infrared Face Code
}DPSDK_INFRAREDFACE_INFO;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_INFRAREDFACE_INFO* pInfraredFaceList;
}DPSDK_GET_INFRAREDFACE_RESULT;

typedef struct
{
	DPSDK_CHAR szFingerPrintName[DPSDK_FINGER_PRINT_NAME];
	DPSDK_CHAR szFingerPrint[DPSDK_FINGER_PRINT_LEN];		// Fingerprint code/600 digits
	DPSDK_INT32 iThreadFlag;							    // Is it Thread fingerprint or not
	DPSDK_INT32 iMainFlag;								// Is it Main fingerprint or not
}DPSDK_FINGER_PRINTS_DATA;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// User ID
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
}DPSDK_EXTRACT_PERSON_SINGLE_PARAM;

typedef struct
{
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];					// Card no.
	DPSDK_INT32 iDuressFlag;								// Is it Duress card or not
	DPSDK_INT32 iMainFlag;								// Is it Main card or not
}DPSDK_CARD_DATA;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// User ID
	DPSDK_INT32 iPersonType;
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];				// Person name
	DPSDK_INT32 iIsAuthority;								// 1:YES, 0:NO
	DPSDK_INT32 iInfraredFaceNum;
	DPSDK_INFRAREDFACE_INFO* pInfraredFaceList;
	DPSDK_INT32 iFingerPrintInfoNum;
	DPSDK_FINGER_PRINTS_DATA * pFingerPrintInfoList;
	DPSDK_INT32 iCardNum;									// Card quantity
	DPSDK_CARD_DATA* pCardDataList;								// Card no. category
}DPSDK_EXTRACT_SINGLE_INFO;

typedef struct
{
	DPSDK_CHAR szFingerPrintName[DPSDK_FINGER_PRINT_NAME];
}DPSDK_FINGER_PRINT_POSITION_INFO;

typedef struct
{
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];						// Card no.
	DPSDK_INT32 iAuthorizeType;									// Card authorize type, 0:cancel 1:dispatch 2:modify
}DPSDK_AUTHORIZE_CARD_INFO;

typedef struct
{
	DPSDK_INT32 iCardNum;										// Card quantity
	DPSDK_AUTHORIZE_CARD_INFO* pCardList;						// Card list
	DPSDK_INT32 iUserAuthorizeType;								// User authorize type, 0:cancel 1:dispatch 2:modify
	DPSDK_INT32 iFingerPrintAuthorizeType;						// Finger print authorize type, 0:cancel 1:dispatch 2:modify
	DPSDK_INT32 iFacePictureAuthorizeType;						// Face picture authorize type, 0:cancel 1:dispatch 2:modify
	DPSDK_INT32 iInfraredFaceAuthorizeType;						// Infrared face authorize type, 0:cancel 1:dispatch 2:modify
	DPSDK_INT32 iPasswordAuthorizeType;							// Password authorize type, 0:cancel 1:dispatch 2:modify
}DPSDK_AUTHORIZE_FAILED_DETAIL;

typedef struct
{
	DPSDK_INT32 iStatisticsRule;
}DPSDK_STATISTICE_RULE_INFO;

typedef struct
{
	DPSDK_INT32 iFileLen;									// File length
	DPSDK_CHAR* pPersonFile;								// Person file
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];					// Language
}DSPDK_IMPORTPERSON_PARAM;

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
	DPSDK_INT32 iRepeatPersonNum;
	DPSDK_PERSON_ID* pRepeatPersonId;
	DPSDK_INT32 iIlleglePersonNum;
	DPSDK_PERSON_ID* pIlleglePersonId;
}DSPDK_IMPORTPERSON_RESULT;

typedef struct
{
	DPSDK_CHAR szDeptCode[DPSDK_ID_LEN];
}DSPDK_GET_ACCESSCONTOL_PERSON_COUNT_PARAM;

typedef struct
{
	DPSDK_CHAR szDoorGroupId[DPSDK_PERSON_ID_LEN];			// Door group ID
}DPSDK_DOORGROUP_ID;

// Lift floors info
typedef struct
{
	DPSDK_CHAR szFloorSerialNo[DPSDK_MEMO_LEN];				// floors no
	DPSDK_CHAR szFloorName[DPSDK_MEMO_LEN];					// floors name
}DPSDK_LIFT_FLOORS;

// Lift relations info
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// channels
	DPSDK_INT32 iNum;										// relations quantity
	DPSDK_LIFT_FLOORS* pFloorslList;						// floors list
}DPSDK_LIFT_RELATIONS;

// Lift floors info
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// channels
	DPSDK_INT32 iNum;										// floors quantity
	DPSDK_LIFT_FLOORS* pFloorslList;						// floors list
}DPSDK_LIFT_FLOOR_LIST;

// Lift floors info
typedef struct
{
	DPSDK_INT32 iNum;										// floors quantity
	DPSDK_LIFT_FLOOR_LIST* pFloorslList;						// floors list
}DPSDK_LIFT_FLOOR_INFO;

typedef struct
{
	DPSDK_CHAR szDoorGroupName[DPSDK_DEVICE_NAME_LEN];		// Door group name
	DPSDK_INT32 iTimeTemplateId;							// Time template ID
	DPSDK_CHAR szDoorGroupId[DPSDK_CHANNEL_ID_LEN];			// Door group ID
	DPSDK_CHAR szHolidayPlanId[DPSDK_CHANNEL_ID_LEN];		// Holiday Plan Id
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN_LONG];
	DPSDK_INT32 iIssueResult;								// 0: no failed task, 1:has failed task	
}DPSDK_DOOR_GROUP;

typedef struct
{
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];
	DPSDK_INT32 iErrorCode;
}DPSDK_PERSON_CARD_ERRORS;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN];				// surname 
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN];				// personal name
	DPSDK_BASE_ID_NAME_INFO struDeviceInfo;				// device code and name
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;			// channel id and name
	DPSDK_INT32 iAction;								// operate type: 0=cancel，1=send，2=update,
	DPSDK_INT32 iUserErrorCode;							// user error code
	DPSDK_INT32 iCardErrorsNum;							// the num of card error list
	DPSDK_PERSON_CARD_ERRORS* pCardErrorsList;
}DPSDK_PERSON_FAILURE_LIFT_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_PERSON_FAILURE_LIFT_INFO* pPageDataList;
}DPSDK_PERSON_GET_PAGE_FAILURE_LIFT_RESULT;

typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];						// Name
}DPSDK_READER_NAME;

//Multi-door interlocking list
typedef struct
{
	DPSDK_CHAR szInterDoorLockId[DPSDK_ID_LEN];             // Multi-door interlocking id
}DPSDK_DOOR_LOCK_ID;

typedef struct
{
	DPSDK_INT32 iOpenMethod;
	DPSDK_CHAR szStartTime[DPSDK_TIME_LEN];
	DPSDK_CHAR szEndTime[DPSDK_TIME_LEN];
}DPSDK_TIMESECTION;

typedef  struct
{
	DPSDK_INT32 iWeekDay;									// 0 sunday - 6 saturday 
	DPSDK_INT32 iTimeSectionNum;
	DPSDK_TIMESECTION* pTimeSection;
}DPSDK_WEEKDAY_CFG;
// Door info
typedef struct
{
	DPSDK_FLOAT	fDoorLockInterval;							// Lock hold time
	DPSDK_TIMET	tUnLockInterval;							// Unlock overtime, second
	DPSDK_INT32	iAlarmTypeNumber;							// Alarm type quantity
	DPSDK_INT32* pAlarmTypeList;							// Alarm type list (refer to Alarm_type_e)
	DPSDK_INT32 iUnlockMode;								// Open type: 0 card,1 password,2 fingerprint, 3 template Id, 4 Card + Password, 5 Card / Password / Fingerprint, 6 Card + Fingerprint
	DPSDK_INT32 iCloseTimeTemplateId;						// NC period
	DPSDK_INT32 iOpenTemplateId;							// NO period
	DPSDK_INT32 iPeriodOpenTemplateId;						// Open ID by period
	DPSDK_CHAR	szOpenHolidayPlanId[DPSDK_ID_LEN];			// holidayTemplateId, time template ID
	DPSDK_CHAR	szCloseHolidayPlanId[DPSDK_ID_LEN];			// holidayTemplateId, time template ID
	DPSDK_INT32 iDoorStatus;								// Door status, 0 normal, 1 NC, 2 NO
	DPSDK_INT32 iState;										// Issue status,0 not issued, 1 being issued, 2 issued successfully, 3 failed to issue,4 Failed to delete issue

	DPSDK_INT32 iReaderStatus;								// Reading head in/out, 0 means in and 1 means out.
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			//  Channel ID
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];		//  Channel name
	DPSDK_BOOL bSensorEnable;								// Door contact enable 1/0
	DPSDK_BOOL bEnable;										// Enable this door 1/0
	DPSDK_BOOL bAlarmEnable;								// Enable alarm 1/0
	DPSDK_BOOL bPeriodOpen;									// true，false, enable opening by period or not
	DPSDK_BOOL bLockTongueEnable;
	DPSDK_CHAR szInterDoorLockId[DPSDK_ID_LEN];             // Selected multi-door interlocking ID 
	DPSDK_BOOL bPublicPassWordEnable;
	DPSDK_CHAR szPublicPassWord[DPSDK_PWD_LEN];
	DPSDK_INT32 iNum;										// Multi-door interlocking ID quantity
	DPSDK_DOOR_LOCK_ID struInterDoorLockIdList[DPSDK_MAX_DOOR_LOCK_ID_NUM];               // Available multi-door interlocking ID list
	DPSDK_INT32 iWeekDayNum;
	DPSDK_WEEKDAY_CFG* pWeekDayCfg;
}DPSDK_DOOR_INFO;

// Copy basic config of door
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_INT32 iNum;										// Target channel quantity
	DPSDK_CHANNEL_ID* pTargetChnIdList;						//  Target channel ID list
}DPSDK_DOOR_BASE_CONFIGURE;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_INT32 iNum;										// Reading head quantity
	DPSDK_CHANNEL_ID* pReaderIdList;						// Reading head ID list
}DPSDK_DOOR_READER_INFO;

typedef struct
{
	DPSDK_INT32 iDoorReaderNum;								// Reading head quantity of door
	DPSDK_DOOR_READER_INFO* pDoorReaderList;				// Reading head info list of door
}DPSDK_DOOR_READER;

typedef struct
{
	DPSDK_INT32 iChannelInSeq;								// Alarm input channel S./N.
	DPSDK_INT32 iTime;
	DPSDK_INT32 iInStatus;									// Alarm input status,0 NC, 1 NO
	DPSDK_INT32 iDoorStatus;								// Alarm linkage door status,0 no operation, 1 auto, 2 open door,3 close door, 4 NO, 5 NC
	DPSDK_INT32 iOutNum;									// Alarm output channel quantity
	DPSDK_INT32* pChannelOutSeqList;						// Alarm output channel S./N. list
	DPSDK_INT32 iDoorNum;									// Door quantity
	DPSDK_INT32* pDoorSeqList;								// Channel no. list
}DPSDK_DEVICE_INOUTCONFIG;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szFilePath[DPSDK_FILE_PATH_LEN];				// Upgrade file path
}DPSDK_UPGRADE_DEVICE;
//
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_INT32 iState;										// Issue status,0 not issued, 1 being issued, 2 issued successfully, 3 failed to issue,4 Failed to delete issue
	DPSDK_INT32	iDeviceNum;									// Device quantity
	DPSDK_DEVICE_INOUTCONFIG struDeviceInOutList[1];		// Device input/output config list
}DPSDK_DOOR_ALARM_INOUT;

//
typedef struct
{
	DPSDK_INT32 iState;										// Issue status,0 not issued, 1 being issued, 2 issued successfully, 3 failed to issue,4 Failed to delete issue
	DPSDK_CHAR szDevCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_INT32	iDeviceNum;									// Device quantity
	DPSDK_DEVICE_INOUTCONFIG* pDeviceInOutList;				// Device input/output config list
}DPSDK_GET_DOOR_ALARM_INOUT;

// Cancel door right info
typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// User ID
	DPSDK_INT32 iChannelNum;								// Channel quantity
	DPSDK_CHANNEL_ID* pChannelIdList;						//  Channel ID list
	DPSDK_INT32 iDoorGroupNum;								// Door group quantity
	DPSDK_CHANNEL_ID* pDoorGroupList;						//  Door group ID list
}DPSDK_DOOR_UNAUTHORIZE;

typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];					// Organization name
	DPSDK_CHAR szParentCode[DPSDK_ORG_CODE_LEN];			// Parent node code
}DPSDK_ADD_DEPARTMENT;

typedef struct
{
	DPSDK_CHAR szDepartmentName[DPSDK_NAME_LEN_EX];			// Organization name
	DPSDK_CHAR szDepartmentCode[DPSDK_ORG_CODE_LEN];		// Organization code
	DPSDK_CHAR szParentName[DPSDK_NAME_LEN_EX];				// Parent organization name
	DPSDK_CHAR szParentCode[DPSDK_ORG_CODE_LEN];			// Parent node code
}DPSDK_UPDATE_DEPARTMENT;

typedef struct
{
	DPSDK_INT32 iDoorGroupIdNum;
	DPSDK_DOORGROUP_ID* pDoorGroupIdList;
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];
}DPSDK_MODIFY_DEP_AUTHORITY;

typedef struct
{
	DPSDK_INT32 iIssueResult;								// 0:no failed task 1:has
	DPSDK_INT32 iNum;										// Door group quantity
	DPSDK_DOORGROUP_ID* pDoorGroupList;						// Door group ID list
}DPSDK_FAILED_DOORGROUP_NOTIFY;

typedef struct
{
	DPSDK_INT32 iPersonNum;									// Person quantity
	DPSDK_ID* pPersonList;									// Person ID list
}DPSDK_UPDATE_PERSONAUTHORIZE_NOTIFY;

typedef struct
{
	DPSDK_INT32 iStatus;										// Status
}DPSDK_DOORGROUPAUTHORIZE_STATUS_NOTIFY;

typedef struct
{
	DPSDK_INT32 iDoorGroupNum;
	DPSDK_CHANNEL_INFO* pDoorGroupList;
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
}DPSDK_DEP_AUTHORITY_INFO;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;						// page Info
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN_EX];			// Keyword, Fuzzy search by ID or name
	DPSDK_CHAR szDoorGroupId[DPSDK_CHANNEL_ID_LEN];	    // Door group ID
}DPSDK_GET_DOORGROUP_AUTHORITY_INFO;

typedef struct
{
	DPSDK_INT32 iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iDepNum;
	DPSDK_CHANNEL_INFO* pDepList;
}DPSDK_GET_DOORGROUP_DEP_AUTHORITY_RESULT;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;							// page Info
	DPSDK_CHAR szDoorGroupId[DPSDK_CHANNEL_ID_LEN];			// Door group ID
}DPSDK_GET_DOORGROUP_AUTHORITY_PARAM;

typedef struct
{
	DPSDK_CHAR szType[DPSDK_TYPE_LEN];
}DPSDK_TYPE;

typedef struct
{
	DPSDK_INT32 iTypeNum;									// Type ID number
	DPSDK_TYPE* pTypeList;									// Type ID list
}DPSDK_TYPE_ID_LIST;

typedef struct
{
	DPSDK_CHAR szTypeId[DPSDK_TYPE_LEN];					// Type ID
	DPSDK_CHAR szTypeName[DPSDK_NAME_LEN_EX];				// Type Name
}DPSDK_TYPE_INFO;

typedef struct
{
	DPSDK_INT32 iTypeNum;									// Type number
	DPSDK_TYPE_INFO* pTypeList;								// Type list
}DPSDK_TYPE_LIST;

typedef struct
{
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];			// The name of device
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];				// Channel name
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Person ID
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN_EX];				// Person name
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];				// First name
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN_EX];				// Lasr name	
	DPSDK_INT32 iFailedTypeNum;
	DPSDK_TYPE* pFailedType;
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
}DPSDK_DOORGROUP_AUTHORITY_DATA;

typedef struct
{
	DPSDK_CHAR szDoorGroupId[DPSDK_CHANNEL_ID_LEN];			// Door group ID
	DPSDK_CHAR szDoorGroupName[DPSDK_DEVICE_NAME_LEN];		// Door group name
	DPSDK_INT32 iSuccessNumber;
	DPSDK_INT32 iFailedNumber;
	DPSDK_INT32 iTotalNumber;
	DPSDK_INT32 iIssueStatus;								//
}DPSDK_DOORGROUP_AUTHORITY_PROGRESS;

typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];
}DPSDK_DELETE_INFO;

typedef struct
{
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];			// Channel no.
	DPSDK_CHAR szMemo[DPSDK_MEMO_LEN];						// Note
	DPSDK_INT32 iStatus;									// 0=ignore, 1=pass
}DPSDK_IGNORE_REMOTE_CHECK;

typedef struct
{
	DPSDK_BOOL bEnable;										// 
	DPSDK_INT32 iTemplateId;								//Template ID
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
}DPSDK_REMOTE_VERIFICATION_DATA;

// Group info
typedef struct
{
	DPSDK_INT32 iCount;										// Card quantity
	DPSDK_INT32 iValidCount;								// Quantity of card to be verified
	DPSDK_INT32 iSort;										// Sequence
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Person ID
	DPSDK_INT32 iUnlockMode;								// Unlock mode
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];
}DPSDK_GROUP_INFO;

typedef struct
{
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];
} DPSDK_PERSONNAME;
typedef struct
{
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];
	DPSDK_INT32 iPersonCount;
	DPSDK_PERSONNAME* pNameList;

}DPSDK_MULTI_CARD_CONFIG_FAILINFO;

// Group info
typedef struct
{
	DPSDK_INT32 iSort;										// Sequence
	DPSDK_INT32 iChannelNum;								// Channel quantity
	DPSDK_CHANNEL_ID* pChannelList;							// Door channel list
}DPSDK_GROUP_ID;

typedef enum
{
	DPSDK_DEVICE_TYPE_CONTROL = 0,							// 0 access controller
	DPSDK_DEVICE_TYPE_CENTER_CONTROL = 1,					// 1 access main controller
}DPSDK_DEVICE_TYPE;



typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR szStageId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szBuildingId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szUnitId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szRoomId[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szDepartmentName[DPSDK_ORG_NAME_LEN];
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN];
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN];
}DPSDK_PERSON_DATA;


// Gender
typedef enum
{
	DPSDK_GENDER_FEMALE = 0,								// 0 female
	DPSDK_GENDER_MALE = 1,									// 1 male
}DPSDK_PERSON_GENDER;

// ID category
typedef enum
{
	DPSDK_ID_TYPE_ID = 0,									// 0 ID
	DPSDK_ID_TYPE_OFFICEID = 1,								// 1 officeId
	DPSDK_ID_TYPE_STUDENTID = 2,							// 2 studentId
	DPSDK_ID_TYPE_DRIVERLICENSE = 3,						// 3 dverLicense
	DPSDK_ID_TYPE_PADDPOR = 4,								// 4 passport
	DPSDK_ID_TYPE_TAXID = 5,								// 5 taxId
}DPSDK_ID_TYPE;

//All-in-one card category
typedef enum
{
	DPSDK_CARD_TYPE_GENNERRAL = 0,							// 0 GeneralCard
	DPSDK_CARD_TYPE_BLOCKLIST = 1,							// 1 blockList
	DPSDK_CARD_TYPE_GUEST = 2,								// 2 Guest
	DPSDK_CARD_TYPE_PATROL = 3,								// 3 Patrol
	DPSDK_CARD_TYPE_VIP = 4,								// 4 VIP
	DPSDK_CARD_TYPE_DURESE = 5,								// 5 Duress
}DPSDK_CARD_TYPE;

typedef enum
{
	DPSDK_TYPE_ACCESSCONTROL = 1,							// 1 means access person
	DPSDK_TYPE_VIDEOTALK = 2,								// 2 means video intercom
}DPSDK_CARD_PERSON_TYPE;

typedef enum
{
	DPSDK_DEGREE_TYPE_UNSCHOOL = 0,							// 0 no education background
	DPSDK_DEGREE_TYPE_PRIMARY = 1,							// 1 primary school
	DPSDK_DEGREE_TYPE_JUNIOR = 2,							// 2 junior middle school
	DPSDK_DEGREE_TYPE_HIGH = 3,								// 3 senior middle school
	DPSDK_DEGREE_TYPE_BACHELOR = 4,							// 4 bachelor 
	DPSDK_DEGREE_TYPE_MAIN = 5,								// 5 main
	DPSDK_DEGREE_TYPE_DOCTER = 6,							// 6 doctor
	DPSDK_DEGREE_TYPE_PROFESSOR = 7,						// 7 professor
}DPSDK_DEGREE_TYPE;

typedef struct
{
	DPSDK_INT32 iTimeTemplateId;							// Time template ID
	DPSDK_INT32 iHoilidayGroupId;							// Holiday time template ID
	DPSDK_CHAR szIdNo[DPSDK_ID_LEN];						// ID no.
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];						// Telephone
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];		// Email
	DPSDK_CHAR szAddress[DPSDK_USER_REMARK_LEN];			// Address
	DPSDK_CHAR szBirthday[DPSDK_BIRTHDAY_LEN];				// Birthday
	DPSDK_CHAR szNationalityId[DPSDK_ID_LEN_EX];			// Refer to country code
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];				// Remark
	DPSDK_CHAR szPosition[DPSDK_NAME_LEN];					// position
	DPSDK_CHAR szNickName[DPSDK_NAME_LEN_EX];				// Nick Name
	DPSDK_TIMET tInitialTime;								// Timestamp start time
	DPSDK_TIMET tExpireTime;								// Timestamp overtime
	DPSDK_CHAR  szCompanyName[DPSDK_NAME_LEN];              // CompanyName
	DPSDK_INT32 iUseTimes;									// Use time is 200 by default, which cannot be modified
	DPSDK_INT32 iDegree;									// Refer to DPSDK_DEGREE_TYPE
	DPSDK_INT32 iMaritalStatus;								// 0 confidential, 1 married 2 unmarried
	DPSDK_INT32 iIdType;									// For ID type, refer to DPSDK_ID_TYPE
}DPSDK_CARD_DETAIL_INFO;

typedef struct
{
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];			// Organization code ID
	DPSDK_CHAR szRoomId[DPSDK_ORG_CODE_LEN];				// Room ID
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// Database record ID
	DPSDK_CHAR szPersonId[DPSDK_ID_LEN];					// Person ID
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];				// First name
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN_EX];				// Last name. Pay attention to client translation,and deefine according to European and American habit.
	DPSDK_CHAR* pPicData;									// Picture data
	DPSDK_INT32 iPicLenght;									// Picture data size
	DPSDK_CHAR szPicUrl[DPSDK_URL_LEN];						// Picture Url
	DPSDK_INT32 iType;										// 1 means access person,2 means video intercom. Refer to DPSDK_CARD_PERSON_TYPE
	DPSDK_INT32 iCardType;									// For all-in-one card type, refer to DPSDK_CARD_TYPE
	DPSDK_INT32 iGender;									// For gender, refer to DPSDK_PERSON_GENDER
	DPSDK_INT32 iStatus;									// Personnel status, 0: On the job, 1:quit
	DPSDK_CHAR szStageId[DPSDK_TYPE_LEN];					// Stage ID
	DPSDK_CHAR szBuildingId[DPSDK_TYPE_LEN];				// Building ID
	DPSDK_CHAR szUnitId[DPSDK_TYPE_LEN];					// Unit ID
	DPSDK_INT32 iHouseholder;								// Householder
	DPSDK_INT32 iIsAuthority;                               //1:YES, 0:NO
}DPSDK_CARD_BASE_INFO;

typedef struct
{
	DPSDK_CHAR szFingerPrintName[DPSDK_FINGER_PRINT_NAME];	// Fingerprint name
	DPSDK_CHAR szFingerPrintId[DPSDK_FINGER_PRINT_LEN];		// Fingerprint code/600 digits
															//DPSDK_INT32 iPosition;								// 1 to 10 from left to right
	DPSDK_INT32 iMainFlag;								// Primary fingerprint or not, 0 = no, 1 = yes
	DPSDK_BOOL bThreaFlag;									// Whether it is a duress fingerprint, 0 = no, 1 = yes
}DPSDK_FINGER_PRINTS_INFO;

typedef struct
{
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];					// Card no.
	DPSDK_TIMET tIssueDate;									// Card-issuing time, in seconds
	DPSDK_TIMET tChangeDate;								// Modification time, in seconds
	DPSDK_INT32 iCardState;									// Card state, 0 frozen, 1 non-frozen
	DPSDK_INT32 iDuressFlag;								// Whether it is a duress card, 0 = no, 1 = yes
	DPSDK_INT32 iMainFlag;								// Main card (first generation card), 0 = no, 1 = yes
}DPSDK_CARDS_INFO;

typedef struct
{
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];				// license plate number
	DPSDK_INT32 iCarRight;									// Vehicle authority, 1 = blocklist, 2 = allowlist; default 2
	DPSDK_INT32 iCarGroup;									// Car group, 1 = no group, 3 = normal car, 4 = VIP; default 1
}DPSDK_CARS_INFOEX;

typedef struct
{
	DPSDK_INT32 iFacePicLen;									// Face picture length
	DPSDK_CHAR* pFacePicData;									// Face picture data
	DPSDK_CHAR szFacePicUrl[DPSDK_URL_LEN];						// Picture Url
}DPSDK_FACE_PIC_INFO;

typedef struct
{
	DPSDK_INT32 iCarportAmount;								// Number of vehicles that users can park
	DPSDK_BOOL bHasPassword;
	DPSDK_CHAR szPassWord[DPSDK_PWD_LEN];					// Personnel card password
	DPSDK_BOOL bHasOpenDoorPassword;
	DPSDK_CHAR szOpenDoorPwd[DPSDK_PWD_LEN];				// Open door password
	DPSDK_INT32 iCardNum;									// Card number
	DPSDK_CARDS_INFO* pCardsInfo;							// Card info list
	DPSDK_INT32 iCarsNum;									// Car number
	DPSDK_CARS_INFOEX* pCarsInfoList;						// Car info list
	DPSDK_INT32 iFingerPrintsNum;							// Fingerprint quantity
	DPSDK_FINGER_PRINTS_INFO* pFingerPrintsInfo;			// Fingerprint info list
	DPSDK_INT32	iFacePicNum;
	DPSDK_FACE_PIC_INFO* pFacePicList;
	DPSDK_INT32	iInfraredFaceNum;
	DPSDK_INFRAREDFACE_INFO* pInfraredFaceList;
}DPSDK_AUTHENTICATION;

typedef struct
{
	DPSDK_CHAR szCardNum[DPSDK_MEMO_LEN];					// Card no.
	DPSDK_CHAR szPersonId[DPSDK_MEMO_LEN];					// Person ID
}DPSDK_PERSON;

// Elevator channel info
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szFloor[DPSDK_ELEVATOR_FLOOR_NUM_MAX];
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];
}DPSDK_ELEVATORCHANNEL_ID;

typedef struct
{
	DPSDK_INT32 iPersonNum;									// Person quantity
	DPSDK_PERSON* pPersonList;								// Person info list
	DPSDK_INT32 iChannelIdNum;								// Channel quantity
	DPSDK_CHANNEL_ID* pChannelIdList;						// Channel ID list
	DPSDK_INT32 iDoorGroupNum;								// Group quantity
	DPSDK_CHANNEL_ID* pDoorGroupIdList;						// Group ID list
	DPSDK_INT32 iDevicesCodeNum;
	DPSDK_DEVICECODE_INFO* pEntranceDeviceCode;
	DPSDK_INT32 iDepDoorGroupNum;
	DPSDK_CHANNEL_ID* pDepDoorGroupIdList;
	DPSDK_INT32 iElevatorChannelIdNum;						// Elevator channel quantiyl
	DPSDK_ELEVATORCHANNEL_ID* pElevatorChannelIdList;		// Elevator channel ID list
}DPSDK_ACCESS_RIGHT;

typedef struct
{
	DPSDK_INT32 iPage;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32 iPageSize;									// Number of records on every page. Min. 1, max. 256. It is 32 by default if not filled in.
	DPSDK_INT32 iPersonNum;									// Person quantity
	DPSDK_PERSON_ID struPersonIdList[1];					// Person ID list
}DPSDK_GET_PERSONPIC;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_ID_LEN];					// Person ID
	DPSDK_INT32 iPicLength;									// Picture data size
	DPSDK_CHAR* pPic;										// Person picture data
}DPSDK_PERSONPIC_INFO;

typedef struct
{
	DPSDK_INT32 iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNum;										// Record info quantity
	DPSDK_PERSONPIC_INFO* pAccessControlList;				//  Person picture data list
}DPSDK_PERSONPIC_LIST;

typedef struct
{
	DPSDK_CHAR szAttribute1[DPSDK_NAME_LEN];
	DPSDK_CHAR szAttribute2[DPSDK_NAME_LEN];
	DPSDK_CHAR szAttribute3[DPSDK_NAME_LEN];
	DPSDK_CHAR szAttribute4[DPSDK_NAME_LEN];
	DPSDK_CHAR szAttribute5[DPSDK_NAME_LEN];
}DPSDK_ATTRIBUTE_INFO;

// Card info
typedef struct
{
	DPSDK_CARD_DETAIL_INFO struDetailInfo;					// All-in-one card details
	DPSDK_CARD_BASE_INFO struBaseInfo;						// all-in-one card basic info
	DPSDK_AUTHENTICATION struAuthentication;				// Identity authentication
	DPSDK_ACCESS_RIGHT struAccessRight;
	DPSDK_ATTRIBUTE_INFO	struAttributeInfo;// Access right
}DPSDK_CARD_INFO;

typedef struct
{
	DPSDK_INT32 iCardNum;									// Card quantity
	DPSDK_CARD_NUM* pCardNumList;							// Card no. list
	DPSDK_INT32 iPersonIdNum;                               // Person Id quantity
	DPSDK_PERSON_ID* pPersonIdList;							// Person Id list
}DPSDK_REPEAT_CARD_PERSON_LIST;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Person ID
	DPSDK_INT32 iNum;										// Card quantity
	DPSDK_CARD_NUM* pCardNumList;							// Card no. list
}DPSDK_CARD_PERSON_PARAM;

typedef struct
{
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];			// Organization ID
	DPSDK_CHAR szStageId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szBuildingId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szUnitId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szRoomId[DPSDK_ORG_CODE_LEN];
	DPSDK_TIMET tIntialTime;								// Start time
	DPSDK_TIMET tExpireTime;								// Overtime
	DPSDK_INT32 iCardType;									// Card type
	DPSDK_INT32 iPersonNum;									// Person quantity
	DPSDK_CARD_PERSON_PARAM* pPersonList;					// Person list
}DPSDK_CARD_PERSON_INFO;

// Add all-in-one card user in batches
typedef struct
{
	DPSDK_CARD_PERSON_INFO struCardPersonInfo;				// All-in-one card user info
	DPSDK_INT32 iChannelNum;								// Channel quantity
	DPSDK_CHANNEL_ID* pChannelIdList;						// Channel ID list
	DPSDK_INT32 iDoorGroupNum;								// Door group quantity
	DPSDK_CHANNEL_ID* pDoorGroupIdList;						// Door group ID list
}DPSDK_CARD_PERSON_LIST;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// User ID
}DPSDK_TASK_QUERY_INFO;

typedef struct
{
	DPSDK_INT32 iTaskNum;
	DPSDK_TASK_QUERY_INFO* pTaskQueryInfoList;
}DPSDK_GET_FAIL_TASK_PARAM;

// Person group info
typedef struct
{
	DPSDK_CHAR szPersonGroupName[DPSDK_NAME_LEN];			// Person group name
	DPSDK_CHAR szPersonGroupId[DPSDK_PERSON_ID_LEN];		// Person group ID
	DPSDK_CHAR szID[DPSDK_ID_LEN];
	DPSDK_INT32 iSyncDeviceFlag;
	DPSDK_INT32 iPersonNum;									// Person quantity
	DPSDK_PERSON_DATA* pPerson;								// Person list
}DPSDK_PERSON_GROUP;

typedef struct
{
	DPSDK_INT32 iNextPage;									//Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNum;										// Person quantity
	DPSDK_PERSON_GROUP* pPersonGroupList;
}DPSDK_PERSON_GROUP_LIST;

typedef struct
{
	DPSDK_CHAR szDoorGroupName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDoorGroupId[DPSDK_USER_ID_LEN];
}DPSDK_ACCESS_DATA;

// Door right info
typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// User ID
	DPSDK_INT32 iChannelNum;								// Channel quantity
	DPSDK_CHANNEL_ID* pChannelIdList;						// Channel ID list
	DPSDK_INT32 iDoorGroupNum;								// Door group quantity
	DPSDK_CHANNEL_ID* pDoorGroupList;						// Door group ID list
}DPSDK_DOOR_AUTHORIZE;

// Organization node info
typedef struct DPSDK_DEPARTMENT_TREE_INFO_t
{
	DPSDK_CHAR szName[DPSDK_ORG_NAME_LEN];					// Organization node name
	DPSDK_CHAR szId[DPSDK_ORG_CODE_LEN];					// Organization node ID
	DPSDK_CHAR szParentName[DPSDK_NAME_LEN];				// Parent organization name
	DPSDK_CHAR szParentId[DPSDK_PERSON_ID_LEN];				// Parent organization ID
	DPSDK_INT32 iNum;										// Child organization node quantity
	DPSDK_DEPARTMENT_TREE_INFO_t* subDepartmenTreeList;		// Child organization node info list
}DPSDK_DEPARTMENT_TREE_INFO;

// Obtain all-in-one card info
typedef struct
{
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];			// Organization code ID
	DPSDK_CHAR szId[DPSDK_ORG_CODE_LEN];					// Person ID
	DPSDK_INT32 iPage;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32 iPageSize;									// Number of records on every page. Min. 1, max. 256. It is 32 by default if not filled in.
	DPSDK_CHAR szKey[DPSDK_KEYWORD_LEN_EX];					// Keyword
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR szPersonType[DPSDK_TYPE_LEN];
	DPSDK_INT32 iNeedCardNum;								// 0:not need, 1:need
	DPSDK_INT32 iModuleType;								// Caller module: 1-personnel management, 2-first card opening, 3-personnel group, 4-attendance management
	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_CHAR szRoomNumber[DPSDK_ROOMNUM_LEN];				// Number if room
}DPSDK_GETCARD_PERSON_INFO;

typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];
	DPSDK_INT32 iGender;									// Gender. Refer to DPSDK_PERSON_GENDER.;	
}DPSDK_FIXATTRIBUTE_INFO;

typedef struct
{
	DPSDK_INT32 iIndex;
	DPSDK_CHAR szValue[DPSDK_NAME_LEN_EX];
}DPSDK_CUSTOMATTRIBUTE_INFO;

typedef struct
{
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];			// Organization code ID
	DPSDK_INT32 iPage;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32 iPageSize;									// Number of records on every page. Min. 1, max. 256. It is 32 by default if not filled in
	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_FIXATTRIBUTE_INFO struFixAttributeInfo;
	DPSDK_INT32	iCustomAtrributeNum;
	DPSDK_CUSTOMATTRIBUTE_INFO* pCustomAttributeList;
}DPSDK_PERSON_LIST_INFO_EX;

// Card no.
typedef struct
{
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];					// Card no.
}DPSDK_CARD_NO;

// Cars no.
typedef struct
{
	DPSDK_CHAR szCarsNo[DPSDK_PLATE_NUMBER_LEN];					// Cars no.
}DPSDK_CARS_NO;

// All-in-one card info
typedef struct
{
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];					// Database record ID uniqueness constraint
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// It cannot repeat verification return error. Decide person ID and room ID according to type
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];					// First name
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN_EX];					//  Last name. Pay attention to client translation,and deefine according to European and American habit.
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];			// Organization code ID
	DPSDK_CHAR szRoomId[DPSDK_ID_LEN];						// Room ID
	DPSDK_CHAR szStageId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szBuildingId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szUnitId[DPSDK_TYPE_LEN];
	DPSDK_INT32 iHasFinger;                                 // 1:has 0:has not
	DPSDK_INT32 iIsAuthority;                               // 1:YES, 0:NO	
	DPSDK_INT32 iStatus;
	DPSDK_INT32 iCardType;									// All-in-one card type. Refer to DPSDK_CARD_TYPE.
	DPSDK_INT32 iGender;									// Gender. Refer to DPSDK_PERSON_GENDER.
	DPSDK_INT32 iCardNum;									// Card quantity
	DPSDK_CARD_NO* pCardNoList;								// Card no. type
	DPSDK_INT32 iCarsNum;									// Cars quantity
	DPSDK_CARS_NO* pCarsNoList;								// Cars no. type
	DPSDK_CHAR szHeadPicUrl[DPSDK_URL_LEN];
	DPSDK_INT32	iInfraredFaceNum;
	DPSDK_INFRAREDFACE_INFO* pInfraredFaceList;
}DPSDK_PERSONCARD_INFO;

// All-in-one card info list
typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32 iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iNum;										//  All-in-one card quantity
	DPSDK_PERSONCARD_INFO* pCardList;						//  All-in-one card info list
}DPSDK_CARD_LIST;

typedef struct
{
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];					// Card no.
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];			// Organization code ID
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Person ID
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];				// Person name
	DPSDK_CHAR szUnLockPassWord[DPSDK_PWD_LEN];				// Unlock password
	DPSDK_CHAR szCardPassWord[DPSDK_PWD_LEN];				// Card password
	DPSDK_CHAR szPicUrl[DPSDK_URL_LEN];						// Picture url
	DPSDK_TIMET tEndTime;									// End time
	DPSDK_TIMET tBeginTime;									// Start time
	DPSDK_INT32 iCardType;									// All-in-one card type. Refer to DPSDK_CARD_TYPE
	DPSDK_INT32 iUseTimes;									// Use time is 200 by default, which cannot be modified
}DPSDK_QUERY_CARD_BASE_INFO;

// Query all-in-one card info
typedef struct
{
	DPSDK_CARD_DETAIL_INFO struDetailInfo;					//  All-in-one card details
	DPSDK_QUERY_CARD_BASE_INFO struBaseInfo;				// All-in-one card basic info
	DPSDK_CHAR szFingerPrint[DPSDK_FINGER_PRINT_LEN];		// Fingerprint code
}DPSDK_QUERY_CARD_INFO;

typedef struct
{
	DPSDK_CHAR szDoorRuleId[DPSDK_ID_LEN];					// Door rule ID
}DPSDK_DOOR_RULE;

//
typedef struct
{
	DPSDK_INT32 iRuleNum;									// Door rule quantity
	DPSDK_DOOR_RULE struDoorRule[1];						// Door rule ID list
}DPSDK_DEL_DOOR_RULE;

typedef struct
{
	DPSDK_CHAR szRuleName[DPSDK_NAME_LEN];
	DPSDK_CHAR szRuleId[DPSDK_ID_LEN];
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_TIMET tTime;										// utc timestamp
	DPSDK_INT32	iPersonNum;									// Person quantity
	DPSDK_PERSON_DATA* pPersonList;							// Person ID list
	DPSDK_INT32 iChannelNum;								// Channel quantity
	DPSDK_CHANNEL_ID* pChannelIdList;						// Channel ID list
	DPSDK_INT32 iDoorGroupNum;								// Door group quantity
	DPSDK_CHANNEL_ID* pDoorGroupIdList;						// Door group ID list
}DPSDK_ACCESSCONTROL_RULE_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];					// doorGroup Id
	DPSDK_CHAR szName[DPSDK_CHANNEL_NAME_LEN];				// doorGroup Name
}DPSDK_DOORGROUP_INFO;

typedef struct
{
	DPSDK_CHAR szRuleName[DPSDK_NAME_LEN];
	DPSDK_CHAR szRuleId[DPSDK_ID_LEN];
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_TIMET tTime;										// utc timestamp
	DPSDK_INT32	iPersonNum;									// Person quantity
	DPSDK_PERSON_DATA* pPersonList;							// Person ID list
	DPSDK_INT32 iChannelNum;								// Channel quantity
	DPSDK_CHANNEL_ID* pChannelIdList;						// Channel ID list
	DPSDK_INT32 iDoorGroupNum;								// Door group quantity
	DPSDK_DOORGROUP_INFO* pDoorGroupInfoList;				// Door group info list
}DPSDK_ACCESS_CONTROL_RULE_INFO;

//
typedef struct
{
	DPSDK_CHAR szRuleID[DPSDK_ID_LEN];
	DPSDK_INT32 iHasRulePersonIDNum;
	DPSDK_PERSON_ID* pHasRulePersonIDList;
}
DPSDK_ADD_RULE_RES;

//
typedef struct
{
	DPSDK_INT32 iHasRulePersonIDNum;
	DPSDK_PERSON_ID* pHasRulePersonIDList;
}
DPSDK_UPDATE_RULE_RES;

//
typedef struct
{
	DPSDK_INT32 iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;								// Total records
	DPSDK_INT32	iNum;										// Record quantity
	DPSDK_ACCESS_CONTROL_RULE_INFO *pAccessControlRuleList;	// Access rule record info list
}DPSDK_ACCESSCONTRO_RULE_LIST;

//
typedef struct
{
	DPSDK_CHAR szHolidayId[DPSDK_ID_LEN];					// Holiday ID
}DPSDK_HOLIDAY_ID;

typedef struct
{
	DPSDK_CHAR szBeginTime[DPSDK_TIME_LEN];					// Start time, 02:00:00
	DPSDK_CHAR szEndTime[DPSDK_TIME_LEN];					// End time, 04:00:00
}DPSDK_PERIOD_INFO;

typedef struct
{
	DPSDK_INT32 iEnable;
	DPSDK_CHAR	szSynchronizeTime[DPSDK_TIME_STRING_LEN];	// HH:MM:SS
}DPSDK_AUTO_SYNC_ACCESS_RECORD;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// ID
	DPSDK_CHAR szName[DPSDK_NAME_LEN];						// Name
	DPSDK_CHAR szBeginTime[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_CHAR szEndTime[DPSDK_TIME_STRING_LEN_EX];
}DPSDK_PAGEDATA_INFO;

//Store codes
typedef struct
{
	DPSDK_CHAR szStoreCode[DPSDK_STORE_CODE_LEN];				//Store code
}DPSDK_STORE_CODE;

//Map info
typedef struct
{
	DPSDK_INT32				iMapNum;							//Map quantity
	DPSDK_CHAR				szStoreName[DPSDK_STORENAME_LEN];	//Store name
	DPSDK_CHAR				szStoreCode[DPSDK_STORENAME_LEN];	//Store code
	DPSDK_MAP_INFO*			pMapList;							//Map list
}DPSDK_STORE_INFO;


// Store list
typedef struct
{
	DPSDK_INT32				iStoreNum;						//Store quantity
	DPSDK_STORE_INFO*		pStoreList;						//Store list
}DPSDK_STORE_LIST;

//Store codes list
typedef struct
{
	DPSDK_INT32 iStoreNum;									// Store quantity
	DPSDK_STORE_CODE *pStoreCode;							// Store codes list
}DPSDK_STORE_CODE_LIST;

// Store organization tree info
typedef struct
{
	DPSDK_CHAR				szOrgCode[DPSDK_ORG_CODE_LEN];	//Organization code
	DPSDK_BOOL				bContainStore;					//Inlcude store node or not: 0=excluding, 1= including
	DPSDK_BOOL				bChildStatus;					//Include child node: 0= level 1 child node, 1=all child nodes
}DPSDK_STOREORG_TREE_INFO;

// Controller info
typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];						// Name
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];					// S./N.
	DPSDK_INT32 iChannelNum;								// Channel quantity
	DPSDK_CHANNEL_ID* pChannelIdList;						// Channel ID list
}DPSDK_CONTROLLER_INFO;

// Device controller info
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_INT32 iControllerNum;								// Controller quantity
	DPSDK_CONTROLLER_INFO* pControllerList;					// Controller list
}DPSDK_DEV_CONTROLLER_INFO;

// Device controller list
typedef struct
{
	DPSDK_INT32 iNum;										//Device controller quantity
	DPSDK_DEV_CONTROLLER_INFO* pDevControllerList;			// Device controller info list
}DPSDK_DEV_CONTROLLER_LIST;

//Access status mode info
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_INT32 iStatus;									// Status 0- normal, 1-NC, 2-NO
}DPSDK_ACCESS_CONTROL_STATUS_INFO;

//Access status mode list
typedef struct
{
	DPSDK_INT32 iStatusNum;									// Access status mode quantity
	DPSDK_ACCESS_CONTROL_STATUS_INFO* pStatusList;			// Access status mode list
}DPSDK_ACCESS_CONTROL_STATUS_LIST;

// Map log info
typedef struct
{
	DPSDK_TIMET tTime;										// Occurrence time
	DPSDK_CHAR szCardNum[DPSDK_MEMO_LEN];					// Card no.
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN];				// Device name
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];				// Channel name
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Person ID
	DPSDK_CHAR szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];		// Alarm no.
	DPSDK_CHAR szMapId[DPSDK_MAP_ID_LEN];					// Map ID
	DPSDK_INT32 iInOutStatus;								// In/out status
	DPSDK_DOUBLE fGpsX;										// Longitude
	DPSDK_DOUBLE fGpsY;										// Latitude
}DPSDK_MAP_LOG_INFO;

// Map log info list
typedef struct
{
	DPSDK_INT32 iNextPage;									 //Next page quantity; -1 means there is no next page.
	DPSDK_INT32 iTotalCount;								 //Total records
	DPSDK_INT32 iNum;										 //Map log info record quantity
	DPSDK_MAP_LOG_INFO* pMapInfoList;						 //Map log info list
}DPSDK_MAP_LOG_LIST;

// Access map log query parameter
typedef struct
{
	DPSDK_INT32 iPage;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32 iPageSize;									// Number of records on every page. Min. 1, max. 256. It is 32 by default if not filled in.
	DPSDK_CHAR szCardNum[DPSDK_MEMO_LEN];					// Card no.
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Person ID
	DPSDK_TIMET tBeginTime;									// Start time, timestamp (unit: second), required
	DPSDK_TIMET tEndTime;									// End time, timestamp (unit: second)
}DPSDK_MAP_LOG_PARAM;

//Failed task info
typedef struct
{
	DPSDK_CHAR szDoorGroupId[DPSDK_USER_ID_LEN];				// Door group ID. Null string means this device is ticked separately.
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32 iUserAuthorizeType;								// 0:cancel 1:dispatch 2:modify
	DPSDK_INT32 iCardNum;										// Card quantity
	DPSDK_AUTHORIZE_CARD_INFO* pCardList;						// Card list
	DPSDK_INT32 iPassword;										// password
	DPSDK_INT32 iFingerPrintAuthorizeType;						// Finger print authorize type, 0:cancel 1:dispatch 2:modify
	DPSDK_INT32 iFacePictureAuthorizeType;						// Face picture authorize type, 0:cancel 1:dispatch 2:modify
	DPSDK_INT32 iInfraredFaceAuthorizeType;						// Infrared face authorize type, 0:cancel 1:dispatch 2:modify
	DPSDK_INT32 iPasswordAuthorizeType;							// Password authorize type, 0:cancel 1:dispatch 2:modify
}DPSDK_TASK_FAIL_INFO;

// 
typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Person ID
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];			// Device ID
	DPSDK_INT32 iNum;										// Failed task quantity
	DPSDK_TASK_FAIL_INFO* pFailTaskList;					// Failed task info list
}DPSDK_ISSUE_PERSONCARD_TASK_FAIL;

// 
typedef struct
{
	DPSDK_INT32 iFailNum;									// Failed task quantity
	DPSDK_ISSUE_PERSONCARD_TASK_FAIL* pFailTaskFailList;	// Failed task info list
}DPSDK_ISSUE_PERSONCARD_TASK_FAIL_LIST;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
}DPSDK_ISSUE_FAIL_TASK;

typedef struct
{
	DPSDK_INT32 iFailNum;									// Failed task quantity
	DPSDK_ISSUE_FAIL_TASK* pFailTaskList;					// Failed task info list
}DPSDK_ISSUE_FAIL_TASKS;

typedef struct
{
	DPSDK_CHAR szRuleId[DPSDK_ID_LEN];						// Rule ID
}DPSDK_ISSUE_RULE_FAIL_TASK;

typedef struct
{
	DPSDK_INT32 iFailNum;									// Failed task quantity
	DPSDK_ISSUE_RULE_FAIL_TASK* pFailTaskList;				// Failed task info list
}DPSDK_ISSUE_RULE_FAIL_TASKS;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_ID_LEN];							// Public password ID
	DPSDK_CHAR	szName[DPSDK_NAME_LEN];						// Public password name
	DPSDK_CHAR	szRemark[DPSDK_USER_REMARK_LEN];			// Remark
	DPSDK_CHAR	szPassWord[DPSDK_PWD_LEN];					// password
	DPSDK_INT32 iChannelNum;								// Channel number
	DPSDK_CHANNEL_INFO* pChannelList;						// Channel list
	DPSDK_INT32 iDeviceNum;									// Device number
	DPSDK_DEVICE_CODE* pDeviceList;							// Device list
}DPSDK_PUBLICPASSWORD_INFO;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_ID_LEN];					// Public password ID
	DPSDK_CHAR	szName[DPSDK_NAME_LEN];				// Public password name
	DPSDK_CHAR	szRemark[DPSDK_USER_REMARK_LEN];	// Remark
	DPSDK_CHAR	szPassWord[DPSDK_PWD_LEN];			// password
	DPSDK_INT32 iChannelNum;
	DPSDK_CHANNEL_INFO* pChannelList;
	DPSDK_INT32 iDeviceNum;
	DPSDK_DEVICE_INFO* pDeviceList;
}DPSDK_NOTIFY_MODIFY_PUBLICPASSWORD;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];			// Device code
	DPSDK_CHAR szDevicenName[DPSDK_DEVICE_NAME_LEN];		// Device name
}DPSDK_PUBLICPASSWORD_DEVICE_INFO;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_ID_LEN];							// Public password ID
	DPSDK_CHAR	szName[DPSDK_NAME_LEN];						// Public password name
	DPSDK_CHAR	szRemark[DPSDK_USER_REMARK_LEN];			// Remark
	DPSDK_CHAR	szPassWord[DPSDK_PWD_LEN];					// password
	DPSDK_INT32 iChannelNum;								// Channel number
	DPSDK_CHANNEL_INFO* pChannelList;						// Channel list
	DPSDK_INT32 iDeviceNum;									// Device number
	DPSDK_PUBLICPASSWORD_DEVICE_INFO* pDeviceList;					// Device list
}DPSDK_PUBLICPASSWORD_DETAIL;

typedef struct
{
	DPSDK_INT32				iPageSize;										// Number of alerts per page
	DPSDK_INT32				iPageNo;										// Query page number (from 1Start）
	DPSDK_CHAR	            szKeyWord[DPSDK_KEYWORD_LEN];					// Keyword
}DPSDK_GET_PASSWORDLIST_PARAM;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_ID_LEN];				// Public password ID
	DPSDK_CHAR	szName[DPSDK_NAME_LEN];			// Public password name
}DPSDK_PUBLICPASSWORD_BASE;

typedef struct
{
	DPSDK_PUBLICPASSWORD_BASE struPassWordBase;
	DPSDK_INT32 iHasFailedTask; //0:no, 1:yes
}DPSDK_PUBLICPASSWORD_DATA;

typedef struct
{
	DPSDK_INT32	iTotalCount;								// Total records
	DPSDK_INT32	iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32	iNum;
	DPSDK_PUBLICPASSWORD_DATA* pPassWord;
}DPSDK_GET_PASSWORDLIST_RESULT;

typedef struct
{
	DPSDK_CHANNEL_INFO struChannelBase;
	DPSDK_INT32 iFailedReason;							// reason
	DPSDK_INT32 iFailedAction;							// failed action
}DPSDK_FAILED_CHANNEL_INFO;

typedef struct
{
	DPSDK_PUBLICPASSWORD_DEVICE_INFO struDeviceBase;
	DPSDK_INT32 iFailedReason;							// reason
	DPSDK_INT32 iFailedAction;							// failed action
}DPSDK_FAILED_DEVICE_INFO;

typedef struct
{
	DPSDK_INT32 iOperatorType;					// operator type: 1=add,2=update,3=delete
	DPSDK_PUBLICPASSWORD_BASE struPassWordBase;
	DPSDK_INT32	iFailedChannelNum;
	DPSDK_FAILED_CHANNEL_INFO* pFailedChannels;
	DPSDK_INT32 iFailedDeviceNum;
	DPSDK_FAILED_DEVICE_INFO* pFailedDevices;
}DPSDK_PUBLICPASSWORD_TASK;

typedef struct
{
	DPSDK_INT32	iTotalCount;								// Total records
	DPSDK_INT32	iNextPage;									// Next page quantity; -1 means there is no next page.
	DPSDK_INT32	iNum;
	DPSDK_PUBLICPASSWORD_TASK* pTaskList;
}DPSDK_GET_PASSWORDFAILED_TASK_RESULT;


typedef struct
{
	DPSDK_INT32 iNum;										// The number of ID
	DPSDK_CHANNEL_ID* pPassWordId;									// password id list
}DPSDK_PASSWORDID_LIST;

typedef struct
{
	DPSDK_INT32 iDelMode;									// delete mode，1=normal,2=force delete
	DPSDK_INT32 iNum;										// The number of ID
	DPSDK_CHANNEL_ID* pPassWordId;									// password id list
}DPSDK_DELETE_PUBLICPASSWORDID_PARAM;

typedef struct
{
	DPSDK_INT32 iPictureLen;
	DPSDK_CHAR* pPictureData;
}DPSDK_PICTURE_DATA_INFO;

typedef struct
{
	DPSDK_CHAR	szChnlId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32	iCheckDays;
}DPSDK_CHECK_DAYS_CHANNEL_INFO;

typedef struct
{
	DPSDK_INT32	iPage;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32	iPageSize;									// Number of records on every page. Min. 1, max. 256. It is 32 by default if not filled in.
	DPSDK_INT32 iRoleIDNum;
	DPSDK_INT32	iEnableMPT;
	DPSDK_CHAR	szUserType[DPSDK_LEN_64];
	DPSDK_CHAR	szOnline[DPSDK_LEN_64];
	DPSDK_CHAR  szUserName[DPSDK_NAME_LEN];
	DPSDK_CHAR  szGroupId[DPSDK_NAME_LEN];
	DPSDK_ROLE_ID szRoleIDList[DPSDK_MAX_USER_NUM];
}DPSDK_GET_USERS_INFO;

typedef struct
{
	DPSDK_INT32	iPage;										// Start query page, min. 1. It is 1 by default if not filled in.
	DPSDK_INT32	iPageSize;									// Number of records on every page. Min. 1, max. 256. It is 32 by default if not filled in.
	DPSDK_CHAR  szRoleName[DPSDK_NAME_LEN];
}DPSDK_GET_ROLES_INFO;

typedef struct
{
	DPSDK_INT32 iStatus;
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User id
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];							// User name
	DPSDK_INT32	iOnline;
	DPSDK_INT32	iUserType;
	DPSDK_BOOL bEnbaleMPT;											// Is Support MPT Login
	DPSDK_CHAR szNickName[DPSDK_NAME_LEN];							// NickName, Support MPT Login must set
}DPSDK_USERINFO_BASE_INFO;

typedef struct
{
	DPSDK_INT32 iRoleNum;										// The number of role
	DPSDK_ROLE_INFO* pRoleInfo;									// role info
}DPSDK_ROLES_INFO;

typedef struct
{
	DPSDK_USERINFO_BASE_INFO struUserBaseInfo;
	DPSDK_ROLES_INFO struRolesList;
}DPSDK_GETUSERS_INFO;

typedef struct
{
	DPSDK_INT32	iTotalCount;								// Total records
	DPSDK_INT32	iNum;
	DPSDK_GETUSERS_INFO* pUsersList;
}DPSDK_USERS_LIST;


typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_USER_ID_LEN];							// Role id
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];							// Role name
	DPSDK_CHAR	szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_INT32	iRoleType;
	DPSDK_INT32	iAllowEdit;
}DPSDK_GETROLES_INFO;

typedef struct
{
	DPSDK_INT32	iTotalCount;								// Total records
	DPSDK_INT32	iNum;
	DPSDK_GETROLES_INFO* pRolesList;
}DPSDK_ROLES_LIST;

typedef struct
{
	DPSDK_CHAR szRoleId[DPSDK_USER_ID_LEN];							// Role id
	DPSDK_CHAR szRoleName[DPSDK_NAME_LEN];							// Role name
}DPSDK_FAILROLE_INFO;

typedef struct
{
	DPSDK_INT32	iNum;
	DPSDK_FAILROLE_INFO* pRolesList;
}DPSDK_FAILEDROLES_LIST;

typedef struct
{
	DPSDK_INT32			iWholenessChnnelNum;
	DPSDK_CHANNEL_ID*	pWholenessChnnelIds;						//Wholeness Channels
	DPSDK_INT32			iCheckDaysChannelNum;
	DPSDK_CHECK_DAYS_CHANNEL_INFO*	pCheckDaysChannelList;	//Check Days Channels
}DPSDK_DEVICE_RECORD_WHOLENESS_CONFIG_INFO;

typedef struct
{
	DPSDK_CHAR	szSessionId[DPSDK_ID_LEN];
	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];					// File Url
	DPSDK_INT32	iProcessRatio;								// 1-100
}DPSDK_EXPORT_VISITORS_INFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR szRepeatCarNo[DPSDK_PLATE_NUMBER_LEN];
}DPSDK_REPEATCAR_INFO;

typedef struct
{
	DPSDK_CHAR szExistingCarNo[DPSDK_PLATE_NUMBER_LEN];
}DPSDK_EXISTINGCAR_INFO;

typedef struct
{
	DPSDK_INT32 iRepeatCarNum;
	DPSDK_REPEATCAR_INFO* pRepeatCarInfoList;
	DPSDK_INT32 iExistingCarNum;
	DPSDK_EXISTINGCAR_INFO* pExistingCarInfoList;
}DPSDK_ADD_CARS_RESULT;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
	DPSDK_INT32 iRepeatCarNum;
	DPSDK_REPEATCAR_INFO* pRepeatCarInfoList;
	DPSDK_INT32 iExistingCarNum;
	DPSDK_EXISTINGCAR_INFO* pExistingCarInfoList;
}DPSDK_ADDCARPERSON_INFO;

typedef struct
{
	DPSDK_INT32 iRepeatCarNum;
	DPSDK_REPEATCAR_INFO* pRepeatCarInfoList;
	DPSDK_INT32 iExistingCarNum;
	DPSDK_EXISTINGCAR_INFO* pExistingCarInfoList;
}DPSDK_UPDATE_CARPERSON_RESULT;

typedef struct
{
	DPSDK_CHAR szServerIP[DPSDK_IP_LEN];							// Server IP address
	DPSDK_CHAR szIP[DPSDK_IP_LEN];									// Network disc IP
}DPSDK_DELETE_NETDISK_NOTIFY;


typedef struct
{
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];						// Server name
	DPSDK_CHAR szVolumeName[DPSDK_NAME_LEN];						// Volume name
	DPSDK_CHAR szIP[DPSDK_IP_LEN];									// Network disc IP
	DPSDK_CHAR szServerIP[DPSDK_IP_LEN];							// Server IP address
	DPSDK_INT32 iServerPort;										// Server port
	DPSDK_INT32 iDiskType;											// Disc type. Refer to DPSDK_DISK_TYPE definition.
	DPSDK_CHAR szPath[DPSDK_FILE_PATH_LEN];							// Disc path
	DPSDK_INT32 iFileSystemStatus;									// File system status. Refer to DPSDK_FILESYSTEM_STATUS definition.OK: normal,Other: abnormal
	DPSDK_DOUBLE fCapacity;											// Capacity
	DPSDK_DOUBLE fFreeSpace;										// Surplus capacity
	DPSDK_BOOL bFormat;												// Format or not
	DPSDK_BOOL bBelong;												// Does it belong to
}DPSDK_SINGLE_NETDISK_NOTIFY_INFO;

typedef struct
{
	DPSDK_INT32 iNetDiskNum;										// Network disc format
	DPSDK_SINGLE_NETDISK_NOTIFY_INFO* pNetDiskList;					// Network disc size
}DPSDK_ADD_NETDISK_NOTIFY;

typedef struct
{
	DPSDK_INT32 iNetDiskNum;										// Network disc format
	DPSDK_SINGLE_NETDISK_NOTIFY_INFO* pNetDiskList;					// Network disc size
}DPSDK_MODIFY_NETDISK_NOTIFY;

typedef struct
{
	DPSDK_INT32 iDiskType;											// Disc type. Refer to DPSDK_DISK_TYPE definition.
	DPSDK_CHAR szPath[DPSDK_FILE_PATH_LEN];							// Disc path
	DPSDK_UINT64 uiCapacity;										// Capacity
}DPSDK_ADD_VIRTUALDISK_NOTIFY;

typedef struct
{
	DPSDK_CHAR szPath[DPSDK_FILE_PATH_LEN];							// Disc path
}DPSDK_DELETE_VIRTUALDISK_NOTIFY;

typedef struct
{
	DPSDK_INT32 iDiskType;											// Disc type. Refer to DPSDK_DISK_TYPE definition.
	DPSDK_CHAR szPath[DPSDK_FILE_PATH_LEN];							// Disc path
	DPSDK_UINT64 uiCapacity;										// Capacity
}DPSDK_UPDATE_VIRTUALDISK_NOTIFY;


typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_USER_ID_LEN];							// User ID
}DPSDK_MODIFY_USER_NOTIFY;

typedef struct
{
	DPSDK_CHAR szServiceName[DPSDK_NAME_LEN];						// Server name
	DPSDK_INT32 iServerPort;										// Server port
	DPSDK_INT32 iStatus;											// Server status: 0.Not enabled; 1. enabled
}DPSDK_MODIFY_SERVICEPORT_NOTIFY;

typedef struct
{
	DPSDK_CHAR szRegisterIp[DPSDK_IP_LEN];							// Registration Ip
	DPSDK_INT32 iRegisterPort;										// Registration port
	DPSDK_CHAR szMainIp[DPSDK_IP_LEN];								// Host Ip
	DPSDK_INT32 iMainPort;											// Host port
	DPSDK_CHAR szMappingIp[DPSDK_IP_LEN];							// Mapping Ip
	DPSDK_BOOL bMain;												//Is it main mode, true/false
}DPSDK_MODIFY_SERVICEREGISTER_NOTIFY;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_INT32 iStatus;											// Device status
}DPSDK_DEVICE_SEARCH_STATUS_NOTIFY;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel ID
}DPSDK_COPY_ALARM_PLAN_NOTIFY;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_USER_ID_LEN];						// Group ID
	DPSDK_INT32	iOrgNum;											// Node quantity	
	DPSDK_ORG_CODE* pOrgCodeList;									// Node code list
	DPSDK_INT32	iChannelNum;										// Channel quantity	
	DPSDK_CHANNEL_ID* pChannelList;									// Channel ID list
}DPSDK_GROUP_RIGHTS_INFO;

typedef struct
{
	DPSDK_CHAR szStoreCode[DPSDK_STORE_CODE_LEN];				//Store code
	DPSDK_CHAR szStoreName[DPSDK_STORE_NAME_LEN];				//Store name
	DPSDK_CHAR szStoreOrgId[DPSDK_STORE_ORGID_LEN];				//Store organization ID
	DPSDK_CHAR szStoreOrgCode[DPSDK_ORG_CODE_LEN];				//Store organization code
	DPSDK_CHAR szStoreOrgOldCode[DPSDK_ORG_CODE_LEN];			//Old store organization code
	DPSDK_INT32	iMapNum;										//Map quantity
	DPSDK_MAP_INFO*	pMapList;									//Map info list
}DPSDK_ADD_STORE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szStoreCode[DPSDK_STORE_CODE_LEN];				//Store code
	DPSDK_CHAR szStoreName[DPSDK_STORE_NAME_LEN];				//Store name
	DPSDK_CHAR szStoreOrgId[DPSDK_STORE_ORGID_LEN];				//Store organization ID
	DPSDK_CHAR szStoreOrgCode[DPSDK_ORG_CODE_LEN];				//Store organization code
	DPSDK_CHAR szStoreOrgOldCode[DPSDK_ORG_CODE_LEN];			//Old store organization code
	DPSDK_INT32	iMapNum;										//Map quantity
	DPSDK_MAP_INFO*	pMapList;									//Map info list
}DPSDK_MODIFY_STORE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szStoreCode[DPSDK_STORE_CODE_LEN];				//Store code
	DPSDK_CHAR szStoreOrgCode[DPSDK_ORG_CODE_LEN];				//Store Organization code
}DPSDK_DELETE_STORE_INFO;

typedef struct
{
	DPSDK_INT32	iDelStoreNum;									//Deleted store quantity
	DPSDK_DELETE_STORE_INFO* pDelStoreList;						//Deleted store list
}DPSDK_DELETE_STORE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szStoreCode[DPSDK_STORE_CODE_LEN];				//Store code
	DPSDK_CHAR szStoreOrgCode[DPSDK_ORG_CODE_LEN];				//Store organization code
	DPSDK_CHAR szStoreOrgOldCode[DPSDK_ORG_CODE_LEN];			//Old store organization code
}DPSDK_MOVE_STORE_INFO;

typedef struct
{
	DPSDK_INT32	iMoveStoreNum;									// Moved store quantity
	DPSDK_MOVE_STORE_INFO* pMoveStoreList;						//Moved store list
}DPSDK_MOVE_STORE_NOTIFY;


// Add device group of video intercom
typedef struct
{
	DPSDK_DEV_GROUP_INFO struDevGroupInfo;						// Device group info
}DPSDK_ADD_DEV_GROUP_NOTIFY;

// Modify device group of video intercom
typedef struct
{
	DPSDK_DEV_GROUP_INFO struDevGroupInfo;						// Device group info
}DPSDK_MODIFY_DEV_GROUP_NOTIFY;

// Delete device group of video intercom
typedef struct
{
	DPSDK_INT32 iDevGroupNum;									// Device group quantity
	DPSDK_DEV_GROUP_ID* pDevGroupIdList;						// Device group ID list
}DPSDK_DEL_DEV_GROUP_NOTIFY;

// Add management group of video intercom
typedef struct
{
	DPSDK_GET_MANAGER_GROUP_INFO struMgrGroupInfo;				// Management group info
}DPSDK_ADD_MANAGER_GROUP_NOTIFY;

// Modify management group of video intercom
typedef struct
{
	DPSDK_GET_MANAGER_GROUP_INFO struMgrGroupInfo;				// Management group info
}DPSDK_MODIFY_MANAGER_GROUP_NOTIFY;

// Delete management group of video intercom
typedef struct
{
	DPSDK_INT32 iNum;											// Management group quantity
	DPSDK_MANAGE_GROUP_ID* pMagerGroupList;						// Management group ID list
}DPSDK_DEL_MANAGER_GROUP_NOTIFY;

// Add group relation of video intercom
typedef struct
{
	DPSDK_RELATION_GROUP_INFO struGroupRelationInfo;			// Group relation info
}DPSDK_ADD_GROUP_RELATION_NOTIFY;

// Modify group relation of video intercom
typedef struct
{
	DPSDK_RELATION_GROUP_INFO struGroupRelationInfo;			// Group relation info
}DPSDK_MODIFY_GROUP_RELATION_NOTIFY;

// Delete group relation of video intercom
typedef struct
{
	DPSDK_INT32 iNum;											// Group relation quantity
	DPSDK_GROUP_RELATION_ID* pGroupRelationList;				// Group relation ID list
}DPSDK_DEL_GROUP_RELATION_NOTIFY;

// Add issued info of video intercom
typedef struct
{
	DPSDK_PUBLISH_INFO struPublishInfo;				// Add issued info details
}DPSDK_ADD_INFO_PUBLISH_NOTIFY;

// Modify issued info of video intercom
typedef struct
{
	DPSDK_PUBLISH_INFO struPublishInfo;				// Modify issued info details
}DPSDK_MODIFY_INFO_PUBLISH_NOTIFY;

// Delete issued info of video intercom
typedef struct
{
	DPSDK_INT32 iNum;										// Issued info quantity
	DPSDK_PUBLISH_INFO_ID* pPublishInfoList;				// Issued info ID list
}DPSDK_DEL_INFO_PUBLISH_NOTIFY;

// RESOUCEALLOCATE status notice
typedef struct
{
	DPSDK_CHAR  szSession[DPSDK_ID_LEN];
	DPSDK_INT32 iSuccesCount;					//sucess count
	DPSDK_INT32 iFailCount;						// fail count
	DPSDK_INT32 iTotalCount;					//total count
	DPSDK_INT32 iProgress;						//progress
	DPSDK_INT32 iStatus;						//status
}DPSDK_RESOUCEALLOCATE_STATUS_NOTIFY;

//manual backup notice
typedef struct
{
	DPSDK_CHAR  szSession[DPSDK_ID_LEN];	//session id
	DPSDK_CHAR  szFileUrl[DPSDK_URL_LEN];	//file url
	DPSDK_INT32 iStatus;					//status
	DPSDK_INT32 iErrorCode;					//error code
}DPSDK_MANUALBACKUP_STATUS_NOTIFY;

//auto backup notice
typedef struct
{
	DPSDK_INT32 iStatus;					//status
	DPSDK_INT32 iErrorCode;					//error code
}DPSDK_AUTOBACKUP_STATUS_NOTIFY;

//manual Restore Result
typedef struct
{
	DPSDK_INT32 iReboot;				//reboot server
	DPSDK_INT32 iStatus;				//restore result status
}DPSDK_MANUALRESTORE_RESULT_NOTIFY;
//// Export Records Type
//typedef enum
//{
//	DPSDK_EXPORT_ACCESS_CONTROL_LOG = 1,	// Export Access Control Log
//	DPSDK_EXPORT_ALARM_RECORDS = 2,	// Export Alarm Records
//	DPSDK_EXPORT_PERSONS = 3,	// Export Persons
//	DPSDK_EXPORT_VISITOR_HISTORY_RECORDS = 4,	// Export Visitor History Records
//	DPSDK_EXPORT_VISITORS = 5,	// Export Visitors
//
//	DPSDK_EXPORT_ATTENDANCE_ABNORMAL_RECORDS = 6,	// Export Attendance Abnormal Records
//	DPSDK_EXPORT_ATTENDANCE_INFOS = 7,	// Export Attendance Infos
//	DPSDK_EXPORT_ATTENDANCE_OUTING_RECORDS = 8,	// Export Attendance Outing Records
//	DPSDK_EXPORT_ATTENDANCE_SWIPING_CARD_RECORDS = 9,	// Export Attendance Swiping Card Records
//	DPSDK_EXPORT_ATTENDANCE_WORK_OVERTIME_RECORDS = 10,	// Export Attendance Work Overtime Records
//	DPSDK_EXPORT_ENTRANCE_CAPTURE_RECORDS = 11,	// Export Entrance Capture Records
//												//DPSDK_EXPORT_ENTRANCE_CAR_EXITING_RECORDS		= 12,	// Export Entrance Car Exiting Records
//												//DPSDK_EXPORT_ENTRANCE_CARS						= 13,	// Export Entrance Cars
//												//DPSDK_EXPORT_ENTRANCE_ENTER_EXIT_RECORDS		= 14,	// Export Entrance Enter Exit Records
//												DPSDK_EXPORT_FACE_DETECTION_RECORDS = 15,	// Export Face Detection Records
//												DPSDK_EXPORT_FACE_RECOGNITION_RECORDS = 16,	// Export **** Records
//																							//DPSDK_EXPORT_ITC_CAR_CAPTURE_RECORDE			= 17,	// Export ITC Car Capture Records
//																							//DPSDK_EXPORT_ITC_PECCANCY_RECORDS				= 18,	// Export ITC Peccancy Records
//																							//DPSDK_EXPORT_ITC_RANGE_SPEED_RECORDS			= 19,	// Export ITC Range Speed Records
//																							//DPSDK_EXPORT_ITC_SURVEY_ALARM_RECORDS			= 20,	// Export ITC Survey Alarm Records
//																							DPSDK_EXPORT_VIDEO_ANALY_NON_VEHICLE_RECORDS = 21,	// Export Video Analy Non Vehicle Records
//																							DPSDK_EXPORT_VIDEO_ANALY_HUMAN_RECORDS = 22,	// Export Video Analy Human Records
//																							DPSDK_EXPORT_VIDEO_ANALY_VEHICLE_RECORDS = 23,	// Export Video Analy Vehicle Records
//																							DPSDK_EXPORT_EXTRACT_PERSONS = 24,	// Export Extract Persons
//																							DPSDK_EXPORT_VIDEO_TALK_CALL_LOG = 25,	// Export Video Talk Call Log
//																																	//DPSDK_EXPORT_ITC_TRAFFIC_FLOW_REPORT			= 26,	// Export ITC Traffic Flow Report	
//																																	DPSDK_EXPORT_STATISTICS_OVERVIEW = 30,	// Export Statistics OverView
//																																	DPSDK_EXPORT_STATISTICS_SERVERS = 31,	// Export Statistics Servers
//																																	DPSDK_EXPORT_STATISTICS_SERVICE = 32,	// Export Statistics Service
//																																	DPSDK_EXPORT_STATISTICS_DEVICES = 33,	// Export Statistics Devices
//																																	DPSDK_EXPORT_STATISTICS_DEVICES_INFO = 34,	// Export Statistics Devices Info
//																																	DPSDK_EXPORT_STATISTICS_FAULTS = 35,	// Export Statistics Faults
//																																	DPSDK_EXPORT_DEBUG_LOG = 36,	// Export Debug Log
//																																	DPSDK_EXPORT_USER_OPERATE_LOG = 40,	// Export userOperate log
//																																	DPSDK_EXPORT_SYSTEM_LOG = 41,   // Export system log
//																																	DPSDK_EXPORT_ENTRANCE_ENTER_RECORDS = 42,	// Export entrance enter records
//																																	DPSDK_EXPORT_ENTRANCE_EXIT_RECORDS = 43,	// Export entrance exit records
//																																	DPSDK_EXPORT_ENTRANCE_FORCE_EXIT_RECORDS = 44,	// Export entrance force exit records
//																																	DPSDK_EXPORT_DEVICES = 45,	// Export Devices
//																																	DPSDK_EXPORT_ENTRANCE_VEHICLES = 46,	// Export Entrance Vehicles
//																																	DPSDK_EXPORT_MPT_RECORDS = 47,	// Export MPT records
//																																	DPSDK_EXPORT_POSRECEIPT_RECORDS = 48,	// Export Pos records
//																																	DPSDK_EXPORT_ENTRANCE_PARKING_RECORDS = 50,	// Export entrance Parking records
//																																	DPSDK_EXPORT_AREA_ACCESS_LOG = 51,	// Export Access Area Records
//																																	DPSDK_EXPORT_AREA_STAY_LOG = 52,	// Export Access Area Stay Records
//																																	DPSDK_EXPORT_PLAN_POINT_RECORDS = 53,	// Export Point Plan records
//																																	DPSDK_EXPORT_POINT_RECORDS_HW = 54,	// Export Plan records
//																																	DPSDK_EXPORT_ALERT = 55,	// Export Alert
//																																	DPSDK_EXPORT_ALERTS = 56,	// Export Alerts
//																																	DPSDK_EXPORT_ALERT_REPORT = 57,	// Export Alert report
//																																	DPSDK_EXPORT_TOPOLOGY_DEVICES = 58,	// Export Topology devices
//																																	DPSDK_EXPORT_TOPOLOGY_SNAPSHOTS = 59,	// Export Topology snapshots
//																																	DPSDK_EXPORT_FAULTS_LOG = 60,	// Export fault log 
//																																	DPSDK_EXPORT_VEHICLE_BYPIC_RECORDS = 61,	// Export vehicle by pic
//																																	DPSDK_EXPORT_UVSS_RECORDS = 62,	// Export uvss record
//																																	DPSDK_EXPORT_DEVICE_LOG = 63,	// Export device log
//																																	DPSDK_EXPORT_MULTI_RECORDS = 64,	// Export Multi records
//																																	DPSDK_EXPORT_EVENT_SOURCE = 65,	// Export Event Source
//}DPSDK_EXPORT_RECORDS_TYPE;

// Export Attendance or Assess Records or Lift Records
typedef struct
{
	DPSDK_INT32 iExportRecordsType;							// Export Records Type see DPSDK_EXPORT_RECORDS_TYPE
	DPSDK_CHAR  szFileUrl[DPSDK_URL_LEN];					// File url
	DPSDK_INT32 iProcessRatio;
	DPSDK_CHAR  szSessionID[DPSDK_ID_LEN];					// Session ID
	DPSDK_INT32 iStatus;									// Return code
	DPSDK_INT32 iFileSize;									// Return File Size
}DPSDK_EXPORT_RECORDS_INFO;

typedef struct
{
	DPSDK_CHAR  szFileUrl[DPSDK_URL_LEN];					// File url
	DPSDK_INT32 iProcessRatio;
	DPSDK_CHAR  szSessionID[DPSDK_ID_LEN];					// Session ID
	DPSDK_INT32 iStatus;									// Return code
}DPSDK_EXPORT_OPERATE_RECORDS_INFO;

// Import records info
typedef struct
{
	DPSDK_INT32 iExportRecordsType;
	DPSDK_INT32 iProcessRatio;
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
	DPSDK_INT32 iErrorCode;
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_INT32 iSuccessCount;
	DPSDK_INT32 iFailCount;
	DPSDK_BOOL bStatus;										// 0：normal, 1：abnormal

}DPSDK_IMPORT_RECORDS_INFO;

// alters info notice
typedef struct
{
	DPSDK_INT32 iDataLen;									// Data length
	DPSDK_CHAR*	pJsonData;									// Received json data
}DPSDK_ALTERS_NOTIFY;

typedef struct
{
	DPSDK_INT32 iDataLen;									// Data length
	DPSDK_CHAR*	pJsonData;									// Received json data
}DPSDK_COMMON_JSON_NOTIFY;

// Delete person
typedef struct
{
	DPSDK_INT32 iPersonNum;									// Person quantity
	DPSDK_PERSON_ID* pPersonIdList;							// Person ID list
}DPSDK_DEL_PERSON_NOTIFY;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN_EX];
}DPSDK_PERSON_ID_NAME;

// Delete person process
typedef struct
{
	DPSDK_CHAR szSessionId[DPSDK_SESSION_LEN];
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iSucceedCount;
	DPSDK_INT32 iFailedCount;
	DPSDK_PERSON_ID_NAME* pFiledPersonList;
}DPSDK_DEL_PERSON_PROCESS_NOTIFY;

typedef struct
{
	DPSDK_INT32 iPersonNum;									// Person quantity
	DPSDK_PERSON_ID* pPersonIdList;							// Person ID list
}DPSDK_BATCH_ADD_PERSON_NOTIFY;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Person ID
	DPSDK_INT32 iCardNum;									// Card quantity
	DPSDK_CARD_NO* pCardNoList;								// Card no. category
}DPSDK_REPEAT_CARD;

typedef struct
{
	DPSDK_INT32 iProcessRatio;
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
	DPSDK_INT32 iReturnCode;
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_INT32 iSuccessCount;
	DPSDK_INT32 iFailCount;
}DPSDK_IMPORT_PERSON_NOTIFY;

typedef struct
{
	DPSDK_INT32 iProcessRatio;
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
}DPSDK_EXPORT_PERSON_NOTIFY;

typedef struct
{
	DPSDK_INT32 iProcessRatio;
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
	DPSDK_INT32 iErrorCode;
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_INT32 iSuccessCount;
	DPSDK_INT32 iFailCount;
	DPSDK_BOOL bStatus;										// 0：normal, 1：abnormal

}DPSDK_IMPORT_EXTRACT_PERSON_NOTIFY;

typedef struct
{
	DPSDK_INT32 iProcessRatio;
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
	DPSDK_INT32 iErrorCode;
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_INT32 iSuccessCount;
	DPSDK_INT32 iFailCount;
	DPSDK_BOOL bStatus;										// 0：normal, 1：abnormal
}DPSDK_IMPORT_PERSON_PICTURES_NOTIFY;


typedef struct
{
	DPSDK_INT32 iProcessRatio;
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
	DPSDK_BOOL bStatus;										// 0：normal, 1：abnormal
}DPSDK_EXPORT_EXTRACT_PERSON_NOTIFY;

// Person info
typedef struct
{
	DPSDK_INT32			iCardType;							// Card type
	DPSDK_INT32			iStatus;
	DPSDK_INT32         iHasFinger;							// 0:no, 1:have
	DPSDK_INT32			iGender;							// Gender
	DPSDK_CHAR			szLastName[DPSDK_NAME_LEN];			// 
	DPSDK_CHAR			szFirstName[DPSDK_NAME_LEN];		// 
	DPSDK_CHAR			szDepartmentId[DPSDK_ID_LEN];		// 
	DPSDK_CHAR			szRoomId[DPSDK_ID_LEN];				// 
	DPSDK_CHAR			szPersonId[DPSDK_PERSON_ID_LEN];	// 
	DPSDK_CHAR			szStageId[DPSDK_TYPE_LEN];
	DPSDK_CHAR			szBuildingId[DPSDK_TYPE_LEN];
	DPSDK_CHAR			szUnitId[DPSDK_TYPE_LEN];
	DPSDK_BOOL			bUpdatePic;							// 0: unchanged,1 changed
	DPSDK_CHAR			szHeadPicUrl[DPSDK_URL_LEN];
	DPSDK_INT32         iIsAuthority;                       // 1:YES, 0:NO
	DPSDK_INT32			iCardNum;									// Card quantity
	DPSDK_CARD_NO*		pCardNoList;								// Card no. category
	DPSDK_INT32			iInfraredFaceNum;
	DPSDK_INFRAREDFACE_INFO* pInfraredFaceList;
	DPSDK_ATTRIBUTE_INFO	struAttributeInfo;
}DPSDK_PERSON_NOTIFY;


// Card right info
typedef struct
{
	DPSDK_CHAR szCardNum[DPSDK_MEMO_LEN];					// Card no.
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Person ID
	DPSDK_INT32 iChannelNum;								// Channel quantity
	DPSDK_CHANNEL_ID* pChannelIdList;						// Channel ID list
	DPSDK_INT32 iDoorGroupNum;								// Door group quantity
	DPSDK_DOORGROUP_ID* pDoorGroupIdList;					// Door group ID list
}DPSDK_CARDRIGHT_INFO;

// Add card right
typedef struct
{
	DPSDK_INT32 iCardNum;									// Card quantity
	DPSDK_CARDRIGHT_INFO* pCardRightList;					// Card right info list
}DPSDK_ADD_CARDRIGHT_NOTIFY;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szHumanImageUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szFaceImageUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szGender[DPSDK_TYPE_LEN];
	DPSDK_CHAR szHat[DPSDK_TYPE_LEN];
	DPSDK_CHAR szBag[DPSDK_TYPE_LEN];
	DPSDK_CHAR szCoat[DPSDK_TYPE_LEN];
	DPSDK_CHAR szCoatColor[DPSDK_TYPE_LEN];
	DPSDK_CHAR szTrousers[DPSDK_TYPE_LEN];
	DPSDK_CHAR szTrousersColor[DPSDK_TYPE_LEN];
	DPSDK_CHAR szEmotion[DPSDK_TYPE_LEN];
	DPSDK_CHAR szBeard[DPSDK_TYPE_LEN];
	DPSDK_CHAR szGlasses[DPSDK_TYPE_LEN];
	DPSDK_CHAR szMask[DPSDK_TYPE_LEN];
	DPSDK_RECT struFaceImage;
	DPSDK_RECT struHumanImage;
	DPSDK_INT32 iAge;
	DPSDK_TIMET tCaptureTime;
	DPSDK_INT32	iDetectMode;													// 检测模式：0=属性检测，1=特征检测
}DPSDK_HUMAN_INFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szVehicleUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szPlateImageUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szPlate[DPSDK_ID_LEN];
	DPSDK_CHAR szCarType[DPSDK_TYPE_LEN];
	DPSDK_CHAR szCarColor[DPSDK_COLOR_LEN];
	DPSDK_CHAR szPlateColor[DPSDK_COLOR_LEN];
	DPSDK_CHAR szCarBrand[DPSDK_ID_LEN];
	DPSDK_RECT struCarImage;
	DPSDK_TIMET tCaptureTime;
	DPSDK_INT32	iDetectMode;													// 检测模式：0=属性检测，1=特征检测
}DPSDK_VEHICLE_INFO_NOTIFY;

typedef struct
{
	DPSDK_INT32				iID;													// parking id
	DPSDK_CHAR				szParkingLotName[DPSDK_NAME_LEN];						// parkingLot Name
	DPSDK_INT32				iTotalLots;												// totalLots
	DPSDK_INT32				iIdleLots;												// idleLots
	DPSDK_INT32				iEntrances;
	DPSDK_INT32				iExituses;
	DPSDK_INT32				iLeds;
}DPSDK_PARKINGLOT_INFO_NOTIFY;

typedef struct
{
	DPSDK_INT32				iID;													// parking id
}DPSDK_DEL_PARKINGLOT_INFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR szName[DPSDK_NAME_LEN];
	DPSDK_INT32 iGroupColor;

}DPSDK_ENTRANCE_CAPTURE_GROUP_INFO;

typedef struct
{
	DPSDK_INT64				iPersonId;												// Person Id
	DPSDK_CHAR				szFirstName[DPSDK_NAME_LEN];							// first Name
	DPSDK_CHAR				szLastName[DPSDK_NAME_LEN];								// last Name
	DPSDK_CHAR				szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR				szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];					// E-mail address
	DPSDK_CHAR				szMemo[DPSDK_MEMO_LEN];									// Description
	DPSDK_CHAR				szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR				szDepartmentName[DPSDK_NAME_LEN];
	DPSDK_INT32				iGender;
	DPSDK_INT32				iCaptureRecordId;
	DPSDK_INT32				iParkingLotId;
	DPSDK_CHAR				szParkingLotName[DPSDK_NAME_LEN];						// parkingLot Name
	DPSDK_CHAR				szCarNo[DPSDK_LEN_64];
	DPSDK_TIMET				tCaptureTime;
	DPSDK_CHAR				szCaptureChannelId[DPSDK_ID_LEN_EX];
	DPSDK_CHAR				szCaptureChannelName[DPSDK_NAME_LEN];
	DPSDK_CHAR				szCapturePictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szCapturePlatePictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_INT32				iDirect;
	DPSDK_INT32				iVehicleType;
	DPSDK_INT32				iCarBrand;
	DPSDK_INT32				iCarColor;
	DPSDK_INT32				iRelationChannelNum;
	DPSDK_ID*				pRelationChannels;
	DPSDK_INT32				iCapturePlateLeft;
	DPSDK_INT32				iCapturePlateTop;
	DPSDK_INT32				iCapturePlateRight;
	DPSDK_INT32				iCapturePlateBottom;
	DPSDK_INT32				iPassModel;
	DPSDK_CHAR				szPersonPictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szPositionName[DPSDK_NAME_LEN];
	DPSDK_CHAR				szPointName[DPSDK_NAME_LEN];
	DPSDK_BOOL				bVisiter;
	DPSDK_INT32				iEntranceGroupsNum;
	DPSDK_ENTRANCE_CAPTURE_GROUP_INFO*	pEntranceGroups;
}DPSDK_CAPTURE_INFO_NOTIFY;

typedef struct
{
	DPSDK_INT32				iParkingLotId;
	DPSDK_INT32				iTotalLots;												// totalLots
	DPSDK_INT32				iIdleLots;												// idleLots
}DPSDK_SYNCAVAILABLE_PARKING_INFO_NOTIFY;

typedef struct
{
	DPSDK_INT32				iParkingLotId;
	DPSDK_INT32				iTotalLots;												// totalLots
	DPSDK_INT32				iPresentTotalLots;										// present Total Lots
	DPSDK_CHAR				szParkingLotName[DPSDK_NAME_LEN];						// parkingLot Name
}DPSDK_SYNCCARACCESS_CUROVERFLOW_INFO_NOTIFY;

typedef struct
{
	DPSDK_INT32				iCarportAmount;
	DPSDK_INT32				iAccessCarAmount;
	DPSDK_CHAR				szFirstName[DPSDK_NAME_LEN];							// first Name
	DPSDK_CHAR				szLastName[DPSDK_NAME_LEN];								// last Name
	DPSDK_INT32				iParkingLotId;											// parkingLotId
	DPSDK_CHAR				szParkingLotName[DPSDK_NAME_LEN];						// parkingLot Name
	DPSDK_CHAR				szPersonId[DPSDK_ID_LEN];
}DPSDK_NOTIFY_PROMPTMSG_INFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR szFaceUrl[DPSDK_URL_LEN_EX];
	DPSDK_INT32 iGender;
	DPSDK_INT32 iComplexion;
	DPSDK_INT32	iMouth;
	DPSDK_INT32	iMask;
	DPSDK_INT32	iBeard;
	DPSDK_INT32	iGlasses;
	DPSDK_INT32 iEmotion;
}DPSDK_NOVEHICLE_FACE_INFO;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szCarImageUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szCarType[DPSDK_TYPE_LEN];
	DPSDK_CHAR szCarColor[DPSDK_COLOR_LEN];
	DPSDK_INT32 iRiderNum;
	DPSDK_RECT struCarImage;
	DPSDK_TIMET tCaptureTime;
	DPSDK_INT32 iEmotion;
	DPSDK_INT32 iFaceInfoNum;
	DPSDK_NOVEHICLE_FACE_INFO* pFaceInfoList;
}DPSDK_NONVEHICLE_INFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR szUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
}DPSDK_FILEDOWNLOAD_INFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR szDomainId[DPSDK_ID_LEN];
}DPSDK_DOMAIN_ID;

typedef struct
{
	DPSDK_INT32 iDomainNum;
	DPSDK_DOMAIN_ID* pDomainIdList;
}DPSDK_DOMAIN_ID_LIST;

typedef struct
{
	DPSDK_INT32 iSuccessCount;
	DPSDK_INT32 iFailCount;
	DPSDK_INT32 iAddCount;
	DPSDK_INT32 iUpdateCount;
}DPSDK_DEVICE_IMPORT_RESULT_NOTIFY;

typedef struct
{
	DPSDK_CHAR		szDeviceCode[DPSDK_DEVICE_ID_LEN];	// Device code
	DPSDK_INT32		iDeviceCategory;
	DPSDK_DOUBLE	fGpsX;												// Longitude
	DPSDK_DOUBLE	fGpsY;												// Latitude
	DPSDK_INT64		iMapId;
}DPSDK_DEV_DETAIL_INFO;

typedef struct
{
	DPSDK_INT32 iDevNum;
	DPSDK_DEV_DETAIL_INFO* pDevInfo;
}DPSDK_DEV_LOCATION_DETAIL_NOTIFY;

typedef struct
{
	DPSDK_CHAR		szDeviceCode[DPSDK_DEVICE_ID_LEN];	// Device code
	DPSDK_INT32		iUnitSeq;
	DPSDK_INT32		iUnitType;
	DPSDK_INT32		iChannelSeq;
	DPSDK_DOUBLE	fGpsX;												// Longitude
	DPSDK_DOUBLE	fGpsY;												// Latitude
	DPSDK_INT64		iMapId;
}DPSDK_CHN_DETAIL_INFO;

typedef struct
{
	DPSDK_INT32 iChnNum;
	DPSDK_CHN_DETAIL_INFO* pChnInfo;
}DPSDK_CHN_LOCATION_DETAIL_NOTIFY;

typedef struct
{
	DPSDK_CHAR				szServerIp[DPSDK_IP_LEN];
	DPSDK_INT32				iMode;	//central, distributed
	DPSDK_INT32				iLocalLoopbackStatus;//installed, not installed
}DPSDK_SYS_DETECTWARN_NOTIFY;

typedef struct
{
	DPSDK_CHAR		szSession[DPSDK_ID_LEN];
	DPSDK_CHAR		szDeviceCode[DPSDK_DEVICE_ID_LEN];	// Device code
	DPSDK_INT32		iTotalCount;
}DPSDK_EXTRACT_ACS_NOTIFY;

typedef struct
{
	DPSDK_CHAR		szSession[DPSDK_ID_LEN];
	DPSDK_INT32		iProgress;							// Upgrade progress
	DPSDK_INT32		iCode;								// 0 success -1 fail
}DPSDK_UPGRADE_PROGRESS_NOTIFY;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;							// 分页页码，必填  分页大小，必填
	DPSDK_ORDER_INFO struOrderInfo;							// 排序类型，1=时间，2=相似度，必填 排序方向，0=升序，1=降序，必填	
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_INT32 iGender;
	DPSDK_INT32 iCoat;
	DPSDK_INT32 iCoatColorNum;
	DPSDK_TYPE* pCoatColorList;
	DPSDK_INT32 iTrousers;
	DPSDK_INT32 iTrousersColorNum;
	DPSDK_TYPE* pTrousersColorList;
	DPSDK_INT32 iHat;
	DPSDK_INT32 iBag;
	DPSDK_TIMET	tSplitTime;
	DPSDK_CHAR  szSplitId[DPSDK_ID_LEN];
	DPSDK_CHAR	szSequence[DPSDK_SEQUENCE_LEN];
	DPSDK_INT32	iCurrentPage;
	DPSDK_INT32 iChannelNum;
	DPSDK_BASE_ID_INFO* pChannelIdList;
}DPSDK_HUMANSEARCH_PARAM;

typedef struct
{
	DPSDK_ORDER_INFO struOrder;
	DPSDK_CHAR	szEncryptPass[DPSDK_PWD_LEN];				//Export file encryption password(AES)
	DPSDK_INT32 iExportRange;								//export range£º0=all£¬1=select record£¬2=custome
	DPSDK_INT32 iDataType;									//Data Type, 0:Record, 1: Record + pic
	DPSDK_CHAR  szExportType[DPSDK_TYPE_LEN];				// Export type, zip
	DPSDK_CHAR	szSequence[DPSDK_SEQUENCE_LEN];
	DPSDK_INT32 iSelectIdsNum;
	DPSDK_BASE_ID_INFO* pSelectIdsList;
	DPSDK_BOOL bDisplayTimezoneOffset;
}DSPDK_EXPORT_HUMAN_BODYS_BY_SESSION;

typedef struct
{
	DSPDK_EXPORT_HUMAN_BODYS_BY_SESSION struSession;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
	DPSDK_TIMET	tBeginTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR	szBeginAge[DPSDK_ENUM_LEN];
	DPSDK_CHAR	szEndAge[DPSDK_ENUM_LEN];
	DPSDK_INT32	iGender;									// sex: 1=man£¬2=wuman, -1= don't know"
	DPSDK_INT32 iCoat;
	DPSDK_INT32 iCoatColorNum;
	DPSDK_TYPE* pCoatColorList;
	DPSDK_INT32 iTrouser;									//-1=all, 1=trousers, 2=shorts, 3=skirt
	DPSDK_INT32 iTrousersColorNum;
	DPSDK_TYPE* pTrousersColorList;
	DPSDK_INT32 iBag;										//-1=all, 1=no bag，2=with bag
	DPSDK_INT32 iHat;										//-1=all, 1=no hat，2=with hat

}DSPDK_EXPORT_HUMAN_BODYS_BY_FEATURE;

typedef struct
{
	DPSDK_CHAR  szLocale[DPSDK_ID_LEN];					// Locale
	DPSDK_CHAR  szSessionID[DPSDK_ID_LEN];				// Session ID
	DPSDK_CHAR  iDataType;								// Data type
	DPSDK_INT32	iDisplayTimezoneOffset;					// Display Server Timezone Offset
	DPSDK_INT32 iIdNum;
	DPSDK_ID* pIdList;									// Id list
	DPSDK_HUMANSEARCH_PARAM struHumanSearchBase;
}DPSDK_EXPORT_HUMANSEARCH_PARAM;

typedef struct
{
	DPSDK_CHAR				szId[DPSDK_ID_LEN];
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;
	DPSDK_CHAR				szHumanImageUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szPictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR				szFaceImageUrl[DPSDK_URL_LEN_EX];
	DPSDK_INT32				iGender;
	DPSDK_INT32				iHat;
	DPSDK_INT32				iCoat;
	DPSDK_CHAR				szCoatColor[DPSDK_TYPE_LEN];
	DPSDK_CHAR				szCoatColorName[DPSDK_NAME_LEN];
	DPSDK_INT32				iBag;
	DPSDK_INT32				iTrousers;
	DPSDK_CHAR				szTrousersColor[DPSDK_TYPE_LEN];
	DPSDK_CHAR				szTrousersColorName[DPSDK_NAME_LEN];
	DPSDK_INT32				iEmotion;
	DPSDK_INT32				iBeard;
	DPSDK_INT32				iGlasses;
	DPSDK_INT32				iMask;
	DPSDK_INT32				iAge;
	DPSDK_TIMET				tCaptureTime;
}DPSDK_HUMAN_INFO;

typedef struct
{
	DPSDK_INT32 iUserFuncNum;
	DPSDK_INT32* pUserFunction;										// user function
}DPSDK_USER_FUNCTION_LIST;

typedef struct
{
	DPSDK_INT32 iTotalCount;

	DPSDK_INT32 iPageDataNum;
	DPSDK_HUMAN_INFO* pHumanList;
}DPSDK_HUMAN_LIST;

typedef struct
{
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_INT32 iChannelNum;
	DPSDK_CHANNEL_ID* pChannelIdList;
	DPSDK_INT32 iCarTypeNum;
	DPSDK_ID* pCarTypeList;
	DPSDK_INT32 iCarColorNum;
	DPSDK_ID* pCarColorList;
}DPSDK_VEHICLE_BASE_PARAM;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szCarType[DPSDK_TYPE_LEN];
	DPSDK_CHAR szCarTypeName[DPSDK_NAME_LEN];
	DPSDK_CHAR szCarColor[DPSDK_COLOR_LEN];
	DPSDK_CHAR szCarColorName[DPSDK_NAME_LEN];
	DPSDK_RECT struCarImage;
	DPSDK_TIMET tCaptureTime;
}DPSDK_VEHICLE_BASE_INFO;

typedef struct
{
	DPSDK_VEHICLE_BASE_PARAM struVehicleBase;
	DPSDK_INT32 iPlateNum;
	DPSDK_ID* pPlateList;
	DPSDK_INT32 iCarBrandNum;
	DPSDK_ID* pCarBrandList;
	DPSDK_INT32 iPlateColorNum;
	DPSDK_ID* pPlateColorList;
}DPSDK_VEHICLE_PARAM;

typedef struct
{
	DPSDK_CHAR szLocale[DPSDK_LANGUAGE_LEN];						// Language
	DPSDK_CHAR szSessionID[DPSDK_SESSION_LEN];						// Session ID
	DPSDK_INT32	iDisplayTimezoneOffset;								// Display Server Timezone Offset

	DPSDK_INT32 iIdNum;
	DPSDK_ID* pIdList;
	DPSDK_VEHICLE_PARAM struVehicleSearchBase;
}DPSDK_EXPORT_VEHICLESEARCH_PARAM;

typedef struct
{
	DPSDK_VEHICLE_BASE_INFO struVehicleBaseInfo;
	DPSDK_CHAR szPlateImageUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szPlate[DPSDK_ID_LEN];
	DPSDK_CHAR szPlateColor[DPSDK_COLOR_LEN];
	DPSDK_CHAR szPlateColorName[DPSDK_NAME_LEN];
	DPSDK_CHAR szCarBrand[DPSDK_ID_LEN];
	DPSDK_CHAR szCarBrandName[DPSDK_NAME_LEN];
}DPSDK_VEHICLE_INFO;

typedef struct
{
	DPSDK_INT32 iVehicleNum;
	DPSDK_VEHICLE_INFO* pVehicleList;
}DPSDK_VEHICLE_LIST;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_TIMET	tSplitTime;
	DPSDK_CHAR	szSplitId[DPSDK_ID_LEN];
	DPSDK_CHAR	szSequence[DPSDK_SEQUENCE_LEN];
	DPSDK_INT32	iCurrentPage;
	DPSDK_INT32 iChannelNum;
	DPSDK_CHANNEL_ID* pChannelIdList;
}DPSDK_NONVEHICLE_PARAM;

typedef struct
{
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_INT32 iChannelNum;
	DPSDK_CHANNEL_ID* pChannelIdList;
	DPSDK_CHAR	szEncryptPass[DPSDK_PWD_LEN];				//Export file encryption password(AES)
	DPSDK_INT32 iExportRange;								//export range£º0=all£¬1=select record£¬2=custome
	DPSDK_INT32 iDataType;									//Data Type, 0:Record, 1: Record + pic
	DPSDK_CHAR szExportType[DPSDK_TYPE_LEN];				// Export type, zip
	DPSDK_CHAR szSequence[DPSDK_SEQUENCE_LEN];
	DPSDK_INT32 iSelectIdsNum;
	DPSDK_BASE_ID_INFO* pSelectIdsList;
	DPSDK_BOOL bDisplayTimezoneOffset;
}DPSDK_EXPORT_NONVEHICLESEARCH_PARAM;

typedef struct
{
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
}DSPDK_EXPORTNONVEHICLE_RESULT;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szVehicleImageUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szVideoUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szVehicleType[DPSDK_TYPE_LEN];
	DPSDK_CHAR szVehicleTypeName[DPSDK_NAME_LEN];
	DPSDK_CHAR szVehicleColor[DPSDK_COLOR_LEN];
	DPSDK_CHAR szVehicleColorName[DPSDK_NAME_LEN];
	DPSDK_TIMET tCaptureTime;
	DPSDK_INT32 iRiderNum;
	DPSDK_INT32 iFaceInfoNum;
	DPSDK_NOVEHICLE_FACE_INFO* pFaceInfoList;
}DPSDK_NONVEHICLE_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iVehicleNum;
	DPSDK_NONVEHICLE_INFO* pVehicleList;
}DPSDK_NONVEHICLE_LIST;

typedef struct
{
	DPSDK_CHAR szBillNo[DPSDK_ID_LEN];
}DPSDK_LOGISTICE_BILL_ID;

typedef struct
{
	DPSDK_CHAR szBillId[DPSDK_ID_LEN];
	DPSDK_CHAR szBillNo[DPSDK_ID_LEN];
	DPSDK_CHAR szProbDesc[DPSDK_MEMO_LEN];
	DPSDK_INT32 iStat;
	DPSDK_CHAR szDealAdvice[DPSDK_MEMO_LEN];
	DPSDK_CHAR szDealUser[DPSDK_NAME_LEN];
	DPSDK_TIMET	tDealTimestamp;
	DPSDK_CHAR szCaptureUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szCreateUser[DPSDK_NAME_LEN];
	DPSDK_TIMET	tCreateTimestamp;
}DPSDK_LOGISTICE_RECORD_DETAIL;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_LOGISTICE_RECORD_DETAIL* pResultList;
}DPSDK_GET_PROBRECORD_DETAIL_LIST;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szSessionId[DPSDK_ID_LEN];
}DPSDK_SMART_ANALYZE_RESULT;

typedef struct
{
	DPSDK_CHAR szFrameTime[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_CHAR szStartTime[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_CHAR szEndTime[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_INT32 iMotionRow;
	DPSDK_INT32 iMotionCol;
	DPSDK_INT32 iMotionResultNum;
	DPSDK_INT32* pMotionResults;
	DPSDK_INT32 iMotionHumanResultNum;
	DPSDK_INT32* pMotionHumanResults;
	DPSDK_INT32 iMotionVehicleResultNum;
	DPSDK_INT32* pMotionVehicleResults;
}DPSDK_SMART_ANALYZE_FRAME_INFO;

typedef struct
{
	DPSDK_INT32 iFrameNum;
	DPSDK_SMART_ANALYZE_FRAME_INFO* pFrameInfo;
}DPSDK_SMART_ANALYZE_FRAME_INFO_LIST;

typedef struct
{
	DPSDK_CHAR szBillNo[DPSDK_ID_LEN];
	DPSDK_TIMET tBegTime;
	DPSDK_TIMET tEndTime;
	DPSDK_INT32 iStat;
	DPSDK_INT32 iPage;
	DPSDK_INT32 iPageSize;
}DPSDK_GET_PROBRECORDS_PARAM;

typedef struct
{
	DPSDK_INT32 iNextPage;
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iResultNum;
	DPSDK_LOGISTICE_RECORD_DETAIL* pResultList;
}DPSDK_GET_PROBRECORDS_RESULT;

typedef struct
{
	DPSDK_CHAR szBillId[DPSDK_ID_LEN];
	DPSDK_CHAR szReturnTranBillNo[DPSDK_ID_LEN];
	DPSDK_TIMET	tOperateTimestamp;
	DPSDK_CHAR szLocationCode[DPSDK_ID_LEN];
	DPSDK_FLOAT fWeight;
	DPSDK_FLOAT fVolume;
}DPSDK_LOGISTICE_SCANRECORD_INFO;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_LOGISTICE_SCANRECORD_INFO* pResultList;
}DPSDK_GET_PROBSCANRECORDS_RESULT;

// Organization info
typedef struct
{
	DPSDK_CHAR szDepartmentName[DPSDK_NAME_LEN_EX];			// Organization name
	DPSDK_CHAR szDepartmentCode[DPSDK_ORG_CODE_LEN];		// Organization code
	DPSDK_CHAR szParentCode[DPSDK_ORG_CODE_LEN];			// Parent node code
}DPSDK_DEPARTMENT_NOTIFY;

// Organization code
typedef struct
{
	DPSDK_CHAR szDepartmentCode[DPSDK_ORG_CODE_LEN];		// Organization code
}DPSDK_DEPARTMENT_CODE;

// Delete organization 
typedef struct
{
	DPSDK_INT32 iDepartmentNum;								// Organization quantity
	DPSDK_DEPARTMENT_CODE* pDepartmentCodeList;				// Organization code list
}DPSDK_DEL_DEPARTMENT_NOTIFY;

// Door group info
typedef struct
{
	DPSDK_CHAR szDoorGroupName[DPSDK_DEVICE_NAME_LEN];		// Door group name
	DPSDK_CHAR szDoorGroupId[DPSDK_CHANNEL_ID_LEN];			// Door group ID
	DPSDK_CHAR szHolidayPlanID[DPSDK_CHANNEL_ID_LEN];		// Holiday Plan ID
	DPSDK_INT32 iTimeTemplateId;							// Time template ID
	DPSDK_INT32 iNum;										// Channel quantity
	DPSDK_CHANNEL_ID* pChannelList;							// Channel list
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN_LONG];
}DPSDK_DOORGROUP_NOTIFY;

// Delete door group 
typedef struct
{
	DPSDK_INT32 iNum;										// Door group quantity
	DPSDK_DOORGROUP_ID* pDoorGroupList;						// Door group ID list
}DPSDK_DEL_DOORGROUP_NOTIFY;

// 
typedef struct
{
	DPSDK_CHAR szdoorGroupId[DPSDK_DEVICE_NAME_LEN];		// Door group ID
	DPSDK_INT32 iPersonNum;									// Person quantity
	DPSDK_PERSON_DATA* pPersonList;							// Person ID list
}DPSDK_DOORGROUPPERSON_NOTIFY;

// Global door channel
typedef struct
{
	DPSDK_INT32 iChannelNum;								// Channel quantity
	DPSDK_CHANNEL_ID* pChannelList;							// Channel list
}DPSDK_GLOBAL_CONTROL_CONFIG_NOTIFY;

// Delete door rule
typedef struct
{
	DPSDK_INT32 iRuleNum;									// Door rule quantity
	DPSDK_DOOR_RULE* pDoorRuleList;							// Door rule ID list
}DPSDK_DEL_DOORRULE_NOTIFY;

// Device switch service
typedef struct
{
	DPSDK_INT32 iDevNum;									// Device quantity
	DPSDK_DEVICE_ID* pDevList;								// Device list
}DPSDK_CHANGE_SERVER_DEVICES_NOTIFY;

// Delete holiday
typedef struct
{
	DPSDK_INT32 iHolidayNum;								// Holiday quantity
	DPSDK_HOLIDAY_ID* pHolidayId;							// Holiday ID list
}DPSDK_DEL_HOLIDAY_NOTIFY;

// Access card using event (alarm notice info)
typedef struct
{
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];			//Device channel
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN_EX];			//Channel name
	DPSDK_CHAR szDepartmentCode[DPSDK_ORG_CODE_LEN];		//Organization code
	DPSDK_CHAR szDepartmentName[DPSDK_NAME_LEN_EX];			//Organization name
	DPSDK_CHAR szCardNum[DPSDK_MEMO_LEN];					//Card no.
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];					//Card user first name
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN_EX];					//Card user last name
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				//Card user ID
	DPSDK_CHAR szRoomId[DPSDK_ID_LEN];				// 
	DPSDK_CHAR szStageId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szBuildingId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szUnitId[DPSDK_TYPE_LEN];
	DPSDK_CHAR szPicture1[DPSDK_ALARM_ALARMPICTURE_LEN];	// Snapshot path
	DPSDK_CHAR szPicture2[DPSDK_ALARM_ALARMPICTURE_LEN];	// Snapshot path
	DPSDK_CHAR szPicture3[DPSDK_ALARM_ALARMPICTURE_LEN];	// Snapshot path
	DPSDK_CHAR szPicture4[DPSDK_ALARM_ALARMPICTURE_LEN];	// Snapshot path
	DPSDK_CHAR szMemo[DPSDK_MEMO_LEN];						// Description
	DPSDK_CHAR szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];		// Alarm code
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN];
	DPSDK_INT32 iAntiPassType;								// 0=Local Anti-passback/ UnAnti pass,1=Global Anti-passback
	DPSDK_INT32 iCardType;									// Card type
	DPSDK_INT32 iInOutStatus;								// In/out status
	DPSDK_INT32 iEventType;									// Event type
	DPSDK_INT32 iDeviceType;								// Device type
	DPSDK_INT32 iIdType;									// id type: 0=id card，1=**** ID, 2=Student ID, 3=Driver's license, 4=Passport, 5=Tax number, 6=Others; default 6
	DPSDK_TIMET tSwipDate;									// Card using time, timestamp
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR szIDNum[DPSDK_ID_LEN];
	DPSDK_INT32 iGender;
	DPSDK_INT32 iACSPointType;								// Access Point Type
	DPSDK_CHAR szACSPointID[DPSDK_ID_LEN];					// Access Point ID
	DPSDK_CHAR szACSPointName[DPSDK_NAME_LEN];				// Access Point  name
	DPSDK_CHAR szAreaCode[DPSDK_PERSON_ID_LEN];				// Area  code
	DPSDK_CHAR szAreaName[DPSDK_NAME_LEN];					// Area  name
	DPSDK_INT32	iOrgNum;									// Person group number
	DPSDK_ORG_INFO_NOTIFY*	pOrgInfoNotify;					// Person group Info
	DPSDK_INT32 iOperateType;								// Operate Type:0=Other, 1=User, 2=Room, 3=Manager
	DPSDK_CHAR szOperateInfo[DPSDK_NAME_LEN_MAX];			// Operate Info
}DPSDK_ACESSDOOR_RECORD_NOTIFY;

// Access status change notice
typedef struct
{
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];			// Device channel
	DPSDK_TIMET tSwipDate;									// Card using time, timestamp
	DPSDK_INT32 iDoorStatus;								// Door status,1- open door,2-close door
	DPSDK_CHAR	szPointID[DPSDK_CHANNEL_ID_LEN];			// Point ID
}DPSDK_ACESSDOOR_STATUS_NOTIFY;

typedef struct
{
	DPSDK_CHAR						szSession[DPSDK_SESSION_LEN];		// Session
	DPSDK_INT32						iPointNum;							// Point Num
	DPSDK_ACESSDOOR_STATUS_NOTIFY*	pPointDoorStatus;					//Door channel status Info
}DPSDK_ACESSDOOR_BATCH_STATUS_NOTIFY;


// Add door basic config notice
typedef struct
{
	DPSDK_DOOR_INFO struDoorInfo;							//  Door basic config notice
}DPSDK_ADD_DOORCONFIG_NOTIFY;

// Modify door basic config notice
typedef struct
{
	DPSDK_DOOR_INFO struDoorInfo;							// Door basic config notice
}DPSDK_MODIFY_DOORCONFIG_NOTIFY;

// Add access alarm linkage config
typedef struct
{
	DPSDK_DOOR_ALARM_INOUT* pAlarmLinkInfo;				// Alarm linkage info
}DSPDK_ADD_ALARMLINK_CONFIG_NOTIFY;

// Update access alarm linkage config
typedef struct
{
	DPSDK_DOOR_ALARM_INOUT* pAlarmLinkInfo;				// Alarm linkage info
}DSPDK_MODIFY_ALARMLINK_CONFIG_NOTIFY;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];				// Channel id
	DPSDK_CHAR szChanelName[DPSDK_CHANNEL_NAME_LEN];		// Channel Name
	DPSDK_CHAR szPointId[DPSDK_CHANNEL_ID_LEN];				// Point id
	DPSDK_CHAR szPointName[DPSDK_CHANNEL_NAME_LEN];		// Point Name
}DSPDK_DOOR_GLOBALCTRLFAILED_CHNAL_INFO;

typedef struct
{
	DPSDK_INT32 iStatus;
	DPSDK_INT32 iOperaSource;
	DPSDK_INT32 iChannelNum;
	DSPDK_DOOR_GLOBALCTRLFAILED_CHNAL_INFO* pChannelList;
}DSPDK_DOOR_GLOBALCTRLFAILED_CHANNEL_NOTIFY;

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];			// Session ID
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];		// Channel ID
	DPSDK_INT32 iOpreateRes;							// 1=Success, 2=Failed
	DPSDK_CHAR	szReason[DPSDK_MEMO_LEN];				// Failed Reason:1=Third arty not support, 2=Send failed
}DPSDK_DOOR_CONTROL_FAILURE_INFO;

//Fingerprint collection
typedef struct
{
	DPSDK_INT32 iBufLen;
	DPSDK_CHAR* pFingerPrintData;
	DPSDK_CHAR szReaderId[DPSDK_CHANNEL_ID_LEN];		// reader id;format:channelId_readerNo
}DPSDK_CAPTURE_FINGERPRINT;

//NO/NC
typedef struct
{
	DPSDK_INT32 iConfigType;							// NO: 1, NC: 0
	DPSDK_INT32 iStatus;								// NO (NC) failure or success, 0: failure; 1: success
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];		// Channel ID
}DPSDK_DOOR_ALAWYS_OPEN_CLOSE;

//Zone status notice
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];		// Device code
	DPSDK_CHAR szZoneId[DPSDK_CHANNEL_ID_LEN];			// Zone ID
	DPSDK_INT32 iStatus;
	DPSDK_INT32 iNum;
	DPSDK_INT32 vecFaultStatus[7];
}DPSDK_ALARMHOST_ZONE_STATUS_NOTIFY_INFO;

//Zone status notice
typedef struct
{
	DPSDK_INT32 iNum;									// Record info number
	DPSDK_ALARMHOST_ZONE_STATUS_NOTIFY_INFO* pInfo;		// Zone status
}DPSDK_ALARMHOST_ZONE_BYPASS_STATUS_NOTIFY;

typedef struct
{
	DPSDK_INT32 iNum;									// Record info number
	DPSDK_ALARMHOST_ZONE_STATUS_NOTIFY_INFO* pInfo;		// Zone status
}DPSDK_ALARMHOST_ZONE_ALARM_STATUS_NOTIFY;

typedef struct
{
	DPSDK_INT32 iNum;									// Record info number
	DPSDK_ALARMHOST_ZONE_STATUS_NOTIFY_INFO* pInfo;		// Zone status
}DPSDK_ALARMHOST_ZONE_FAILURE_STATUS_NOTIFY;

//Area status notice
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];		// Device code
	DPSDK_CHAR szAreaId[DPSDK_CHANNEL_ID_LEN];			// Area ID
	DPSDK_INT32 iArmStatus;
}DPSDK_ALARMHOST_AREA_STATUS_NOTIFY_INFO;

//Area status notice
typedef struct
{
	DPSDK_INT32 iNum;									// Record info number
	DPSDK_ALARMHOST_AREA_STATUS_NOTIFY_INFO* pInfo;		// Area status
}DPSDK_ALARMHOST_AREA_STATUS_NOTIFY;

//Alarm host status notice
typedef struct
{
	DPSDK_INT32 iStatus;								// 
	DPSDK_CHAR szDevCode[DPSDK_DEVICE_ID_LEN];			// Device code
}DPSDK_ALARMHOST_STATUS_NOTIFY;

// Alarm host refresh notice
typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];		// Device code
	DPSDK_INT32 iNum;									// Record info number
	DPSDK_AREA_INFO* pAreaInfo;							// Area list
}DPSDK_REFRESH_ALARMHOST_NOTIFY;


typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];		    // Device code
	DPSDK_CHAR szZoneId[DPSDK_DEVICE_CODE_LEN];				// Zone Id
	DPSDK_INT32 iRealTimeStatus;							// RealTime Status
}DPSDK_ZONE_REALTIME_INFO;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_ZONE_REALTIME_INFO* pZoneRealTimeList;			// Zone RealTime list
}DPSDK_ALARMHOST_ZONE_REALTIME_NOTIFY;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];		 // Device code
	DPSDK_CHAR szAreaId[DPSDK_DEVICE_CODE_LEN];			 // Area Id
	DPSDK_INT32 iAlarmStatus;							 // Alarm Status
}DPSDK_AREA_ALARM_INFO;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_AREA_ALARM_INFO* pAreaAlarmList;			// Area Alarm list
}DPSDK_ALARMHOST_AREA_ALARM_NOTIFY;

// Door global NO/NC operation notice
typedef struct
{
	DPSDK_INT32 iStatus;								//  0: restore to norma; 1: global clode; 2: global open
}DPSDK_DOOR_GLOBAL_CONTROL_STATUE;

typedef struct
{
	DPSDK_INT32 iStatus;								// Status: 1 open, 0 close 
}DPSDK_STATUS;

// Real-time notify present client after a call record is generated
typedef struct
{
	DPSDK_CALLLOG_INFO struCallLogInfo;					// Call info
}DPSDK_ADD_CALL_LOG_NOTIFY;

typedef struct
{
	DPSDK_INT32 iOperateType;									// Operating type: 1=Add, 2=update, 3=delete
	DPSDK_INT32 iGroupId;										// Alarm type category
	DPSDK_INT32	iAlarmTypeId;									// Alarm type ID
	DPSDK_CHAR	szAlarmTypeName[DPSDK_ALARM_ALARMTYPENAME_LEN];	// Alarm type name
	DPSDK_BOOL	bOther;											// Does it belong to others:0=no,1=yes
}DPSDK_UPDATE_CUSTOMALARMTYPE_NOTIFY;

typedef struct
{
	DPSDK_INT32 iOperateType;									// Operating type: 1=Add, 2=update, 3=delete
	DPSDK_INT32	iSourceTypeId;									// Alarm source ID
	DPSDK_CHAR	szSourceTypeName[DPSDK_ALARM_ALARMTYPENAME_LEN];// Alarm source name
}DPSDK_UPDATE_ALARMSOURCETYPE_NOTIFY;


typedef struct
{
	DPSDK_INT32	iAlarmTypeId;									// Alarm type ID
	DPSDK_CHAR	szAlarmTypeName[DPSDK_ALARM_ALARMTYPENAME_LEN];// Alarm type name
	DPSDK_CHAR	szAlarmTypeIcon[DPSDK_NAME_LEN];				// Alarm type icon
	DPSDK_BOOL	bAllowDelete;									//0:false 1:true

	DPSDK_INT32	iAlarmType;										// Alarm type type
	DPSDK_INT32 iSiaSupportMode;								// Sia Support Mode 0=不支持，1=CID，2=DCS，3=DCS+CID，必填
	DPSDK_INT32 iAlarmStatus;									// 报警状态：0=消失，1=产生
	DPSDK_CHAR szMinAmount[DPSDK_ALARM_ALARMTYPENAME_LEN];
	DPSDK_CHAR szMaxAmount[DPSDK_ALARM_ALARMTYPENAME_LEN];

}DPSDK_UPDATE_ALARM_TYPE_INFO;

typedef struct
{
	DPSDK_INT32	iAlarmTypeId;									// Alarm type ID
	DPSDK_CHAR	szAlarmTypeName[DPSDK_ALARM_ALARMTYPENAME_LEN];// Alarm type name
	DPSDK_INT32	iAlarmType;										// Alarm type type
	DPSDK_DOUBLE fMinAmount;
	DPSDK_DOUBLE fMaxAmount;
}DPSDK_UPDATE_POS_ALARM_TYPE_INFO;


typedef struct
{
	DPSDK_INT32 iOperateType;									// Operating type: 1=Add, 2=update, 3=delete
	DPSDK_INT32	iSourceTypeId;									// Source type ID
	DPSDK_INT32	iGroupId;										// Group ID
	DPSDK_INT32 iAlarmTypeNum;									// The number of alarm type
	DPSDK_UPDATE_ALARM_TYPE_INFO* pAlarmTypeList;				// The list of alarm type
}DPSDK_UPDATE_ALARM_TYPES_DETAIL_INFO;

typedef struct
{
	DPSDK_INT32 iOperateType;									// Operating type: 1=Add, 2=update, 3=delete
	DPSDK_INT32	iSourceTypeId;									// Source type ID
	DPSDK_INT32	iGroupId;										// Group ID
	DPSDK_INT32 iAlarmTypeNum;									// The number of alarm type
	DPSDK_UPDATE_POS_ALARM_TYPE_INFO* pAlarmTypeList;				// The list of alarm type
}DPSDK_UPDATE_POS_ALARM_TYPES_DETAIL_INFO;


typedef struct
{
	DPSDK_INT32 iOperateType;									// Operating type: 1=Add, 2=update, 3=delete
	DPSDK_INT32	iSourceTypeId;									// Source type ID
	DPSDK_INT32	iGroupId;										// Group ID
	DPSDK_CHAR	szGroupName[DPSDK_NAME_LEN];					// Group name
}DPSDK_UPDATE_ALARM_GROUP_INFO;

//Notify the client about obtained SIPID
typedef struct
{
	DPSDK_CHAR szDevCode[DPSDK_DEVICE_ID_LEN];					// Device code
	DPSDK_CHAR szSipId[DPSDK_MEMO_LEN];							// SIPID
}DPSDK_DEVICE_SIPID_NOTIFY;

//Notify the client about add email Address
typedef struct
{
	DPSDK_CHAR				szEmailAddr[DPSDK_ALARM_EMAILRECEIVER_LEN];		// E-mail address
}DPSDK_ADD_EMAILADDRESS_NOTIFY;

typedef struct
{
	DPSDK_INT32				iMode;
	DPSDK_CHAR				szServerIp[DPSDK_IP_LEN];
	DPSDK_FLOAT				fFreeCapcity;
	DPSDK_FLOAT				fFreePercent;
	DPSDK_BOOL				bCapcityWarning;
	DPSDK_FLOAT				fCpuPercent;
	DPSDK_BOOL				bCpuWarning;
	DPSDK_FLOAT				fMemoryPercent;
	DPSDK_BOOL				bMemoryWarning;
	DPSDK_BOOL				bDiskIOWarning;
	DPSDK_INT64             iDiskIODuration;
	DPSDK_FLOAT				fDiskIOThreshold;
}DPSDK_SYSTEMINFO_WARNING_NOTIFY;

typedef struct
{
	DPSDK_INT32				iCount;
}DPSDK_UNAUTHDEVICES_INFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR szChannelCode[DPSDK_CHANNEL_ID_LEN];			// Device channel
}DPSDK_CLOSE_REMOTECHECK_WIND_NOTIFY;

typedef struct
{
	DPSDK_ALARM_INFO struAlarmInfo;
}DPSDK_ALARM_PROCESS_RECORD_NOTIFY;

typedef struct
{
	DPSDK_INT32 iRecordType;
	DPSDK_CHAR	szRecordID[DPSDK_ID_LEN];
}DPSDK_DELETE_ALARM_PROCESS_RECORD_NOTIFY;

typedef struct
{
	DPSDK_ALARM_TEMPLATE_INFO struAlarmTempInfo;
}DPSDK_ALARM_PROCESS_TEMPLATE_NOTIFY;

typedef struct
{
	DPSDK_INT32 iID;
}DPSDK_DELETE_ALARM_PROCESS_TEMPLATE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szKeyCode[DPSDK_ID_LEN];
	DPSDK_INT32 iKeyType;
	DPSDK_INT32 iBindingKeyType;
}RESOURE_BINDING_INFO;

typedef struct
{
	DPSDK_INT32 iResoureNum;
	RESOURE_BINDING_INFO* pResoureInfo;
}DPSDK_NOTIFY_RESOURE_BINDING_NOTIFY;

typedef struct
{
	DPSDK_INT32 iIDNum;
	DPSDK_DEVICE_ID* pIDList;
}DPSDK_DELETE_UNAUTH_DEVICE_NOTIFY;

typedef struct
{
	DPSDK_DEVICE_ID struID;
	DPSDK_CHAR szDeviceIP[DPSDK_IP_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN];
	DPSDK_INT32 iDeviceType;
}DPSDK_ADD_UNAUTH_DEVICE_NOTIFY;

typedef struct
{
	DPSDK_DEVICE_ID struID;
	DPSDK_CHAR szDeviceIP[DPSDK_IP_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN];
	DPSDK_INT32 iDeviceType;
}DPSDK_UPDATE_UNAUTH_DEVICE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szSeq[DPSDK_ID_LEN];								// Serial namber
	DPSDK_INT32 iCode;											// Whether or not it is successful
	DPSDK_CHAR szBackUpPath[DPSDK_FILE_PATH_LEN];				// backup file path
}DPSDK_MANUAL_BACKUP_FILE_NOTIFY;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_ITC_SECTION_INFO* pSectionList;
}DPSDK_TIC_DEL_SECTION_NOTIFY;

//Notify the result of contact
typedef struct
{
	DPSDK_CHAR szDevCode[DPSDK_DEVICE_ID_LEN];					// Device code
	DPSDK_INT32 iStatus;										// Result, 0=failure, 1=success
}DPSDK_SYNC_CONTACT_NOTIFY;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_SYNC_CONTACT_NOTIFY* pContactList;
}DPSDK_SYNC_CONTACT_LIST_NOTIFY;

typedef struct
{
	DPSDK_CHAR szVthCallingLongNumber[DPSDK_VTHCALL_NUMBER_LEN];
	DPSDK_INT32 iIssueState;										// Result, 0=failure, 1=success
}DPSDK_VTODOOR_PASSISSUE_STATUS;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_VTODOOR_PASSISSUE_STATUS* pStatusList;
}DPSDK_VTODOOR_PASS_NOTIFY;

typedef struct
{
	DPSDK_INT32 iUnitEnable;											// Unit Enable
	DPSDK_INT32 iBuildingEnable;										// BuildingEnable Enable
	DPSDK_INT32 iPhaseEnable;											// Phase Enable
	DPSDK_INT32 iRegionType;											// Region Type
}DPSDK_INTERCOM_MODIFY_NOTIFY;

//Import video intercom device Notify
typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];				// Session ID
	DPSDK_INT32 iSuccessfulCount;								// Successful quantity
	DPSDK_INT32 iFailedCount;									// Failed quantity
	DPSDK_INT32 iAddCount;									// Add quantity
	DPSDK_INT32 iUpdateCount;								// Update quantity
	DPSDK_FILE_URL struFailedFileUrl;						// Failed file Url
}DPSDK_IMPORT_VIDEO_INTERCOM_DEVICE_NOTIFY;

//Import batch add device Notify
typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];				// Session ID
	DPSDK_INT32 iSuccessfulCount;								// Successful quantity
	DPSDK_INT32 iFailedCount;									// Failed quantity
}DPSDK_IMPORT_BATCH_ADD_DEVICE_NOTIFY;

//Add resource parameter
typedef struct
{
	DPSDK_CHAR				szAppearPoint[DPSDK_TZ_APPEARPOINT_LEN];				// Point of appearance(dictionary)
	DPSDK_CHAR				szChannelCode[DPSDK_TZ_CHNCODE_LEN];					// Channel code
	DPSDK_CHAR				szCaseRecordIdx[DPSDK_TZ_RECORDID_LEN];					// Unique identification code for related cases (required)
	DPSDK_CHAR				szCollectAddr[DPSDK_TZ_ADDRESS_LEN];					// Resource collection address
	DPSDK_CHAR				szCollectTime[DPSDK_TZ_TIME_LEN];						// Resource collection (required)
	DPSDK_CHAR				szCreatePersonCode[DPSDK_TZ_CREATOR_LEN];				// Founder code
	DPSDK_CHAR				szDataSource[DPSDK_TZ_DICTYPE_LEN];						// Resource source (dictionary) (required)
	DPSDK_CHAR				szDeviceCode[DPSDK_TZ_DEVCODE_LEN];						// Device code
	DPSDK_CHAR				szGpsX[DPSDK_TZ_GPS_LEN];								// Longitude
	DPSDK_CHAR				szGpsY[DPSDK_TZ_GPS_LEN];								// Latitude
	DPSDK_CHAR				szMemo[DPSDK_TZ_MEMO_LEN];								// Resource remark
	DPSDK_CHAR				szRecordType[DPSDK_TZ_DICTYPE_LEN];						// Record type (dictionary)
	DPSDK_CHAR				szResourceCode[DPSDK_TZ_RESOURCECODE_LEN];				// Unique resource code, web does not need this parameter when adding, provided for the view library
	DPSDK_CHAR				szResourceName[DPSDK_TZ_RESOURCENAME_LEN];				// Resource name(required)
	DPSDK_CHAR				szResourceType[DPSDK_TZ_DICTYPE_LEN];					// Resource type (dictionary) (required)
	DPSDK_CHAR				szStoragePath[DPSDK_TZ_PATH_LEN];						// Resource storage address
	DPSDK_CHAR				szVideoPicPath[DPSDK_TZ_PATH_LEN];						// Picture path of video
	DPSDK_CHAR				szFileSize[DPSDK_TZ_FILESIZE_LEN];						// File size (required)
	DPSDK_CHAR				szTimeDiff[DPSDK_TZ_TIMEDIFF_LEN];						// Time difference
	DPSDK_CHAR				szBeijingTime[DPSDK_TZ_TIME_LEN];						// Beijing time (required)
}DPSDK_TZ_NEWRESOURCE_PARAM;

typedef struct
{
	DPSDK_CHAR				szResourceCode[DPSDK_TZ_RESOURCECODE_LEN];				// Unique resource code, web does not need this parameter when adding, provided for the view library
}DPSDK_TZ_NEWRESOURCE_NOTIFY;

//Cloud storage info
typedef struct
{
	DPSDK_CHAR				szBucket[DPSDK_TZ_STRING_LEN];							// Cloud storage bucket
	DPSDK_CHAR				szEfsIp[DPSDK_IP_LEN];									// Cloud storage address
	DPSDK_CHAR				szModeM[DPSDK_TZ_STRING_LEN];							// Cloud storage M
	DPSDK_CHAR				szModeN[DPSDK_TZ_STRING_LEN];							// Cloud storage N
	DPSDK_CHAR				szPassWord[DPSDK_PWD_LEN];								// Cloud storage password
	DPSDK_CHAR				szPort[DPSDK_TZ_STRING_LEN];							// Cloud storage port
	DPSDK_CHAR				szUserName[DPSDK_NAME_LEN];								// Cloud storage user name
	DPSDK_CHAR				szIsLocal[DPSDK_TZ_STRING_LEN];							// Is local, 1=yes,0=no
}DPSDK_TZ_EFS_INFO;

//Cloud storage info list
typedef struct
{
	DPSDK_UINT32						uiTotal;									// Cloud storage info number	
	DPSDK_TZ_EFS_INFO					struEFSList[1];								// Cloud storage info list
}DPSDK_TZ_EFSINFO_LIST;

//Smart Analyze Start 
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szRecordType[DPSDK_IP_LEN];
	DPSDK_INT32 iSearchType;  //1 motion 2 human 3 motion + human 4 Vehicle 5 motion + Vehicle 6 human+ Vehicle 7 all = motion + human + Vehicle
	DPSDK_CHAR szStartTime[DPSDK_TIME_STRING_LEN_EX];
	DPSDK_CHAR szEndTime[DPSDK_TIME_STRING_LEN_EX];
}DPSDK_SMART_ANALYZE_INFO;

//Smart Analyze Get Frame 
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32 iFrameNum;
	DPSDK_CHAR szSessionId[DPSDK_ID_LEN];
}DPSDK_SMART_ANALYZE_GETFRAMES;

typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_ID_LEN];
	DPSDK_CHAR				szChannelName[DPSDK_NAME_LEN];
	DPSDK_INT32				iIsOnline;
	DPSDK_CHAR				szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR              szDeviceIp[DPSDK_IP_LEN];
	DPSDK_CHAR              szDeviceManufacturer[DPSDK_RECORD_FILE_NAME_LEN];
	DPSDK_CHAR              szDevicePort[DPSDK_TZ_STRING_LEN];
	DPSDK_INT32             iDeviceType;
	DPSDK_INT32             iAuthorityStatus;

	// Used to obtain field information
	DPSDK_CHAR				szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR				szServerName[DPSDK_NAME_LEN];							// Server name
	DPSDK_IP				struServerIP;											// Disk IP
}DPSDK_VTO_INFO;

typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_ID_LEN];
	DPSDK_CHAR				szChannelName[DPSDK_NAME_LEN];
	DPSDK_INT32				iIsOnline;
	DPSDK_CHAR				szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR              szDeviceIp[DPSDK_IP_LEN];
	DPSDK_CHAR              szDeviceManufacturer[DPSDK_RECORD_FILE_NAME_LEN];
	DPSDK_CHAR              szDevicePort[DPSDK_TZ_STRING_LEN];
	DPSDK_INT32             iDeviceType;
	DPSDK_INT32             iAuthorityStatus;

	// Used to obtain field information
	DPSDK_CHAR				szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR				szServerName[DPSDK_NAME_LEN];							// Server name
	DPSDK_IP				struServerIP;											// Disk IP
}DPSDK_BINDING_LED;

typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_ID_LEN];								// Auxiliary camera channel Id
	DPSDK_CHAR				szChannelName[DPSDK_NAME_LEN];							// Auxiliary camera channel name
	DPSDK_INT32				iIsOnline;												// Is it on-line
	DPSDK_CHAR				szOrgCode[DPSDK_ORG_CODE_LEN];							// Organization code	
	DPSDK_CHAR              szDeviceIp[DPSDK_IP_LEN];								// Device IP
	DPSDK_CHAR              szDeviceManufacturer[DPSDK_RECORD_FILE_NAME_LEN];		// Device manufacturer
	DPSDK_CHAR              szDevicePort[DPSDK_TZ_STRING_LEN];						// Device port
	DPSDK_INT32             iDeviceType;											// Device type
	DPSDK_INT32             iAuthorityStatus;										// Authority status,0-No authority,1-Authority

																					// Used to obtain field information
	DPSDK_CHAR				szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR				szServerName[DPSDK_NAME_LEN];							// Server name
	DPSDK_IP				struServerIP;											// Disk IP
}DPSDK_EXT_CAMERA_INFO;

typedef struct
{
	DPSDK_CHAR				szDirect[DPSDK_NAME_LEN];
	DPSDK_CHAR				szChannelId[DPSDK_ID_LEN];
	DPSDK_CHAR				szChannelName[DPSDK_NAME_LEN];
	DPSDK_INT32				iIsOnline;
	DPSDK_CHAR				szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR              szDeviceIp[DPSDK_IP_LEN];
	DPSDK_CHAR              szDeviceManufacturer[DPSDK_RECORD_FILE_NAME_LEN];
	DPSDK_CHAR              szDevicePort[DPSDK_TZ_STRING_LEN];
	DPSDK_INT32             iDeviceType;
	DPSDK_INT32             iAuthorityStatus;

	// Used to obtain field information
	DPSDK_CHAR				szServerCode[DPSDK_SERVER_CODE_LEN];					// Server Code
	DPSDK_CHAR				szServerName[DPSDK_NAME_LEN];							// Server name
	DPSDK_IP				struServerIP;											// Disk IP

	DPSDK_INT32				iExtCameraNum;
	DPSDK_EXT_CAMERA_INFO*  pExtCameraList;
	DPSDK_INT32				iVtoNum;
	DPSDK_VTO_INFO*			pVtoList;
	DPSDK_INT32				iLedNum;
	DPSDK_BINDING_LED*       pLedList;
}DPSDK_BINDING_ITC;

typedef struct
{
	DPSDK_CHAR				szParkingID[DPSDK_ID_LEN];								// parking id
	DPSDK_CHAR				szParkingLotName[DPSDK_NAME_LEN];						// parkingLot Name
	DPSDK_INT32				iTotalLots;												// totalLots
	DPSDK_INT32				iIdleLots;												// idleLots
	DPSDK_CHAR				szTimeTemplateId[DPSDK_ID_LEN];							// timeTemplateId
	DPSDK_INT32				iIsPassForUnknownCarEnter;								// isPassForUnknownCarEnter
	DPSDK_INT32				iIsPassZeroIdleLot;										// isPassZeroIdleLot
	DPSDK_INT32				iIsPassForUnknownCarExit;								// isPassForUnknownCarExit
	DPSDK_INT32				iOverTime;												// 0:close
	DPSDK_INT32				iMultipleCameraFlag;									// Multiple camera flag,1-Multiple camera,0-Monocular camera
	DPSDK_INT32				iCoordinativeTime;										// Coordinative time,range[1,10]s
	DPSDK_INT32				iRepeatCoverageFlag;									// Whether the entry record is covered,1-coverage,0-No coverage
	DPSDK_INT32				iBindingItcNum;
	DPSDK_BINDING_ITC*		pBindingItcsInfo;
	DPSDK_INT32				iBindingLedNum;
	DPSDK_BINDING_LED*		pBindingLedsInfo;
}DPSDK_PARKING_LOT_INFO;

typedef struct
{
	DPSDK_INT32				iId;
	DPSDK_INT32				iTotalLots;												// totalLots
	DPSDK_INT32				iIdleLots;												// idleLots
}DPSDK_PARKING_LOT_IDLES_INFO;

typedef struct
{
	DPSDK_CHAR				szParkingID[DPSDK_ID_LEN];								// parking id
}DPSDK_PARKING_ID;

typedef struct
{
	DPSDK_INT32				iIdleLots;												// idleLots
	DPSDK_FLOAT				fIdlePercent;
	DPSDK_INT32				iParkingLots;
	DPSDK_INT32				iTotalLots;
}DPSDK_PARKINGLOT_TOTAL_STATUS;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Device name
}DPSDK_DEVICE_DATA;

typedef struct
{
	DPSDK_CHAR				szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32				iDeviceNum;
	DPSDK_DEVICE_DATA*		pDeviceList;
}DPSDK_CARTASK_FAIL_DATA;

typedef struct
{
	DPSDK_CHAR				szPersonId[DPSDK_PERSON_ID_LEN];
	DPSDK_INT32				iModule;
	DPSDK_INT32				iFailMessageNum;
	DPSDK_CARTASK_FAIL_DATA* pFaileMessageList;
}DPSDK_CARTASK_FAIL_NOTIFY;

typedef struct
{
	DPSDK_INT32	iOpenSluiceResult;
	DPSDK_CHAR szDeviceID[DPSDK_DEVICE_ID_LEN];
	DPSDK_CHAR szChannelNo[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
}DPSDK_OPENSLUICE_RESULT_NOTIFY;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
}DPSDK_PERSON_CAR_NOTIFY;

typedef struct
{
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_INT32 iProcessRatio;
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
}DPSDK_EXPORT_RECORDRATIO_NOTIFY;

typedef struct
{
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32 iErrorCode;
}DPSDK_DOOROPEN_ERROR_NOTIFY;

typedef struct
{
	DPSDK_CHAR szChannelID[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
}DPSDK_GET_LIFTGLOBAL_CHANNELS_INFO;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_GET_LIFTGLOBAL_CHANNELS_INFO* pLiftChannelsList;
}DPSDK_GET_LIFTGLOBAL_CHANNELS_INFO_RESULT;

typedef struct
{
	DPSDK_INT32 iChannelNum;										// The number of channel
	DPSDK_CHANNEL_ID* pChannelIds;									// Channel id list
}DPSDK_ELEVATORGLOBAL_CHANNELS_INFO;

typedef struct
{
	DPSDK_CHAR  szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_CHAR	szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
}DPSDK_LIFT_CHANNLE_INFO;

typedef struct
{
	DPSDK_INT32 iChannelNum;;									// Channel info number
	DPSDK_LIFT_CHANNLE_INFO* pChannelInfo;					// Channel info 
}DPSDK_ELEVATORGLOBAL_CHANNELS_INFO_NOTIFY;


typedef struct
{
	DPSDK_CHAR szId[DPSDK_CHANNEL_ID_LEN];				// Channel id
	DPSDK_CHAR szChanelName[DPSDK_CHANNEL_NAME_LEN];		// Channel Name
	DPSDK_CHAR szPointId[DPSDK_CHANNEL_ID_LEN];				// Point id
	DPSDK_CHAR szPointName[DPSDK_CHANNEL_NAME_LEN];		// Point Name
}DPSDK_FAILED_ELEVATORGLOBAL_CHANL_INFO;

typedef struct
{
	DPSDK_INT32 iChannelNum;										// The number of channel
	DPSDK_FAILED_ELEVATORGLOBAL_CHANL_INFO* pChannelIds;									// Channel id list
	DPSDK_INT32 iElevatorGlobalStatus;								// Elevator global status,0-recover,1:close, 2:open
	DPSDK_INT32 iOperaSource;
}DPSDK_FAILED_ELEVATORGLOBAL_STATUS_INFO;

typedef struct
{
	DPSDK_CHAR szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];				// Alarm code
	DPSDK_TIMET tAlarmTime;											// Alarm time
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];					// Device code
	DPSDK_CHAR szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];			// Device name
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];							// Channel id
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];				// Channel Name
	DPSDK_INT32 iEventType;											// Event Type
	DPSDK_CHAR szCardNum[DPSDK_MEMO_LEN];							// Card number
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN];							// first name	
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN];							// last name
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];						// Person Id
	DPSDK_CHAR szStageId[DPSDK_TYPE_LEN];							// Stage Id
	DPSDK_CHAR szBuildingId[DPSDK_TYPE_LEN];						// Building Id
	DPSDK_CHAR szUnitId[DPSDK_TYPE_LEN];							// Unit Id
	DPSDK_CHAR szRoomId[DPSDK_ORG_CODE_LEN];						// Room Id
	DPSDK_CHAR szDepartmentCode[DPSDK_ORG_CODE_LEN];				// Department ID
	DPSDK_CHAR szDepartmentName[DPSDK_ORG_NAME_LEN];				// Department name
	DPSDK_CHAR szPersonPictureUrl[DPSDK_URL_LEN_EX];				// Person picture url
}DPSDK_REPORT_ELEVATOR_EVENT_NOTIFY;

typedef struct
{
	DPSDK_CHAR szRecordId[DPSDK_ID_LEN];
	DPSDK_TIMET tEventTime;											// Alarm Time
	DPSDK_BASE_ID_NAME_INFO struDeviceInfo;							// Device Info:device code & device name
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;						// Channel Info:channel code & channel name
	DPSDK_INT32 iEventType;											// Event Type
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];                     // Person Id
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];                        // Person name 
	DPSDK_BASE_ID_NAME_INFO struOrgInfo;							// Org id & Org name
	DPSDK_CHAR szRoomId[DPSDK_ORG_CODE_LEN];                        // Room Id
}DPSDK_ELEVATOR_LOG_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;                                        // Total records
	DPSDK_INT32 iNum;                                             // Record info number
	DPSDK_ELEVATOR_LOG_INFO* pElevatorLoglList;
}DPSDK_GET_ELEVATOR_LOG_RESULT;

typedef struct
{
	DPSDK_CHAR				szParkingID[DPSDK_ID_LEN];								// parking id
	DPSDK_CHAR				szParkingLotName[DPSDK_NAME_LEN];						// parkingLot Name
	DPSDK_INT32				iEntrances;
	DPSDK_INT32				iExituses;
	DPSDK_INT32				iLeds;
	DPSDK_INT32				iTotalLots;												// totalLots
	DPSDK_INT32				iIdleLots;												// idleLots
}DPSDK_PARKINGLOT_STATUS_INFO;

typedef struct
{
	DPSDK_INT32				iStatusNum;
	DPSDK_PARKINGLOT_STATUS_INFO* pStatusList;
}DPSDK_PARKINGLOT_STATUS_LIST;

typedef struct
{
	DPSDK_INT32				iSuccessNum;
	DPSDK_INT32				iFailedNum;
	DPSDK_INT32				iAction;
}DPSDK_CONFIG_ACSDESFIRE_NOTIFY;

typedef struct
{
	DPSDK_INT32				iNum;
	DPSDK_CHANNLE_ID* pChannelIdList;
}DPSDK_PERSON_ITC_RIGHT_LIST;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szCarNum[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iAuthorityStatus;
}DPSDK_BIND_DATA;

typedef struct
{
	DPSDK_INT32				iNum;
	DPSDK_BIND_DATA* pBindList;
}DPSDK_BIND_ITC_INFO;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN]; // vto device code
	DPSDK_CHAR szItcChannelId[DPSDK_ID_LEN]; // itc channel id
}DPSDK_VTORELITC_DATA;

typedef struct
{
	DPSDK_INT32				iNum;
	DPSDK_VTORELITC_DATA* pItcList;
}DPSDK_VTO_RELITC_INFO;

typedef struct
{
	DPSDK_CHAR				szItemCode[DPSDK_ID_LEN];								// itemCode
	DPSDK_CHAR				szItemName[DPSDK_NAME_LEN];						// itemName
}DPSDK_DIRECT_OPTION_INFO;

typedef struct
{
	DPSDK_CHAR				szSelected[DPSDK_NAME_LEN];
	DPSDK_INT32				iOptionNum;
	DPSDK_DIRECT_OPTION_INFO* pOptionList;
}DPSDK_PARKINGLOT_DIRECTOPTION_LIST;

typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_ID_LEN];
	DPSDK_CHAR				szChannelName[DPSDK_NAME_LEN];
	DPSDK_INT32				iIsOnline;
	DPSDK_CHAR				szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_INT32				iDirect;											//8:in, 9:out	
	DPSDK_CHAR				szDeviceIP[DPSDK_IP_LEN];							// Device ip
	DPSDK_INT32				iManufacturer;
	DPSDK_INT32				iDevicePort;										// Device port
	DPSDK_INT32				iDeviceType;										// Device type
	DPSDK_CHAR				szServerCode[DPSDK_SERVER_CODE_LEN];				// Server code
	DPSDK_CHAR				szServerName[DPSDK_NAME_LEN];							// Server name
	DPSDK_IP				struServerIP;											// Disk IP
}DPSDK_UNBINDING_ITC;

typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_ID_LEN];
	DPSDK_CHAR				szChannelName[DPSDK_NAME_LEN];
	DPSDK_INT32				iIsOnline;
	DPSDK_CHAR				szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR				szDeviceIP[DPSDK_IP_LEN];							// Device ip
	DPSDK_INT32				iManufacturer;
	DPSDK_INT32				iDevicePort;										// Device port
	DPSDK_INT32				iDeviceType;										// Device type
	DPSDK_CHAR				szServerCode[DPSDK_SERVER_CODE_LEN];				// Server code
	DPSDK_CHAR				szServerName[DPSDK_NAME_LEN];							// Server name
	DPSDK_IP				struServerIP;											// Disk IP
}DPSDK_UNBINDING_VTO;

typedef struct
{
	DPSDK_CHAR				szChannelId[DPSDK_ID_LEN];
	DPSDK_CHAR				szChannelName[DPSDK_NAME_LEN];
	DPSDK_INT32				iIsOnline;
	DPSDK_CHAR				szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR				szDeviceIP[DPSDK_IP_LEN];							// Device ip
	DPSDK_INT32				iManufacturer;
	DPSDK_INT32				iDevicePort;										// Device port
	DPSDK_INT32				iDeviceType;										// Device type
	DPSDK_CHAR				szServerCode[DPSDK_SERVER_CODE_LEN];				// Server code
	DPSDK_CHAR				szServerName[DPSDK_NAME_LEN];							// Server name
	DPSDK_IP				struServerIP;											// Disk IP
}DPSDK_UNBINDING_LED;

typedef struct
{
	DPSDK_INT32				iUnbindingItcNum;
	DPSDK_UNBINDING_ITC*	pUnbindingItcs;
	DPSDK_INT32				iUnbindingVtoNum;
	DPSDK_UNBINDING_VTO*	pUnbindingVtos;
	DPSDK_INT32				iUnbindingLedNum;
	DPSDK_UNBINDING_LED*	pUnbindingLeds;
}DPSDK_PARKINGLOT_UNBINDING_DEVICE_LIST;

typedef struct
{
	DPSDK_INT32 iParkingLotId;
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
}DPSDK_PARKINGLOTS_INFO;

typedef struct
{
	DPSDK_INT32 iID;
	DPSDK_TIMET tEffectiveStartTime;
	DPSDK_TIMET tEffectiveEndTime;
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szDepartmentName[DPSDK_ORG_NAME_LEN];
	DPSDK_INT32 iCarRight;
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_CHAR szMemo[DPSDK_MEMO_LEN];
	DPSDK_INT32 iCarGroup;
	DPSDK_INT32 iRightStatus;
	DPSDK_INT32 iParkingLotsNum;
	DPSDK_PARKINGLOTS_INFO* pParkingLotsInfoList;
}DPSDK_PARKINGLOT_CARS_DATA;

typedef struct
{
	DPSDK_INT32 iNextPage;
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_PARKINGLOT_CARS_DATA* pPageDataList;
}DPSDK_PARKINGLOT_GET_CARS_RESULT;

typedef struct
{
	DPSDK_INT32 iID;
	DPSDK_INT32	iMultipleCameraFlag;												// Multiple camera flag,1-Multiple camera,0-Monocular camera
	DPSDK_INT32 iCaptureRecordId;
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szDepartmentName[DPSDK_ORG_NAME_LEN];
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_CHAR szCarPicture[DPSDK_URL_LEN_EX];										// Pictures of vehicles entering from main camera,or Pictures of vehicles entering from Single camera
	DPSDK_CHAR szCarNoPicture[DPSDK_URL_LEN_EX];									// License plate picture of vehicles entering from main camera,or License plate picture of vehicles entering								
	DPSDK_CHAR szCarPictureExt[DPSDK_URL_LEN_EX];									// Pictures of vehicles entering from auxiliary camera
	DPSDK_CHAR szCarNoPictureExt[DPSDK_URL_LEN_EX];									// License plate picture of vehicles entering from auxiliary camera
	DPSDK_INT32 iMatchFlag;															// Entering match flag,1-Main camera,0-Auxiliary camera
	DPSDK_INT32 iCarType;
	DPSDK_TIMET tEnterTime;
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_INT32 iCarRight;
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN_EX];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
}DPSDK_PARKINGLOT_EXITING_DATA;

typedef struct
{
	DPSDK_INT32 iNextPage;
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_PARKINGLOT_EXITING_DATA* pPageDataList;
}DPSDK_PARKINGLOT_GET_EXITING_RESULT;

typedef struct
{
	DPSDK_INT32 iID;																// Historical record ID
	DPSDK_INT32	iMultipleCameraFlag;												// Multiple camera flag,1-Multiple camera,0-Monocular camera
	DPSDK_CHAR szEnterCarNo[DPSDK_LEN_64];											// plate number for vehicles entering
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];										// Person ID
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];											// Name of owner
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];										// Company name
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];									// Department ID
	DPSDK_CHAR szDepartmentName[DPSDK_ORG_NAME_LEN];								// Department name
	DPSDK_INT32 iCarStatus;															// Car status,0-Enter,1-Enter and exit,2-Exit
	DPSDK_INT32 iCarType;															// Car type,0-Visitor,1-Blocklist,2-Non group,3-Ordinary,4-VIP
	DPSDK_CHAR szEnterCarPicture[DPSDK_URL_LEN_EX];									// Pictures of vehicles entering from main camera,or Pictures of vehicles entering from Single camera
	DPSDK_CHAR szEnterCarNoPicture[DPSDK_URL_LEN_EX];								// License plate picture of vehicles entering from main camera,or License plate picture of vehicles entering from Single camera
	DPSDK_CHAR szEnterCaptureRecordId[DPSDK_ID_LEN];								// Main camera capture record ID of vehicles entering
	DPSDK_CHAR szEnterCarPictureExt[DPSDK_URL_LEN_EX];								// Pictures of vehicles entering from auxiliary camera
	DPSDK_CHAR szEnterCarNoPictureExt[DPSDK_URL_LEN_EX];							// License plate picture of vehicles entering from auxiliary camera
	DPSDK_CHAR szEnterCaptureExtRecordId[DPSDK_ID_LEN];								// Auxiliary camera capture record ID of vehicles entering
	DPSDK_INT32 iEnterMatchFlag;													// Entering match flag,1-Main camera,0-Auxiliary camera
	DPSDK_INT32 iEnterCarColor;
	DPSDK_INT32 iEnterCarBrand;
	DPSDK_CHAR szEnterChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szEnterChannelName[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_CHAR szEnterChannelIdExt[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szEnterChannelNameExt[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_TIMET tEnterTime;
	DPSDK_TIMET tEnterTimeExt;
	DPSDK_CHAR szExitCarNo[DPSDK_LEN_64];											// plate number for vehicles exiting
	DPSDK_CHAR szExitCarPicture[DPSDK_URL_LEN_EX];									// Pictures of vehicles exiting from main camera,or Pictures of vehicles exiting from Single camera
	DPSDK_CHAR szExitCarNoPicture[DPSDK_URL_LEN_EX];								// License plate picture of vehicles exiting from main camera,or License plate picture of vehicles exiting
	DPSDK_CHAR szExitCaptureRecordId[DPSDK_ID_LEN];									// Main camera capture record ID of vehicles exiting
	DPSDK_CHAR szExitCarPictureExt[DPSDK_URL_LEN_EX];								// Pictures of vehicles exiting from auxiliary camera
	DPSDK_CHAR szExitCarNoPictureExt[DPSDK_URL_LEN_EX];								// License plate picture of vehicles exiting from auxiliary camera
	DPSDK_CHAR szExitCaptureExtRecordId[DPSDK_ID_LEN];								// Auxiliary camera capture record ID of vehicles exiting
	DPSDK_INT32 iExitMatchFlag;														// Exiting match flag,1-Main camera,0-Auxiliary camera
	DPSDK_INT32 iExitCarColor;
	DPSDK_INT32 iExitCarBrand;
	DPSDK_CHAR szExitChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szExitChannelName[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_CHAR szExitChannelIdExt[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szExitChannelNameExt[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_TIMET tExitTime;
	DPSDK_TIMET tExitTimeExt;
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN_EX];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_INT32 iEnterBindChannelIdsNum;
	DPSDK_CHANNLE_ID* pEnterBindChannelIds;
	DPSDK_INT32 iExitBindChannelIdsNum;
	DPSDK_CHANNLE_ID* pExitBindChannelIds;
}DPSDK_PARKINGLOT_ENTEREXIT_DATA;

typedef struct
{
	DPSDK_INT32 iNextPage;
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_PARKINGLOT_ENTEREXIT_DATA* pPageDataList;
}DPSDK_PARKINGLOT_GET_ENTEREXIT_RESULT;

typedef struct
{
	DPSDK_CHAR szRecordID[DPSDK_ID_LEN];
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_TIMET tCaptureTime;
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szCarPicture[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szCarNoPicture[DPSDK_URL_LEN_EX];
	DPSDK_INT32 iVehicleType;
	DPSDK_INT32 iCarBrand;
	DPSDK_INT32 iCarColor;
	DPSDK_INT32	iCarModel;
	DPSDK_INT32 iInputCarBrand;
	DPSDK_INT32 iInputCarColor;
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN_EX];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_INT32 iCarDirect;
	DPSDK_CHAR szTravelDirectName[DPSDK_NAME_LEN];
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentId[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szDepartmentName[DPSDK_ORG_NAME_LEN];
	DPSDK_INT32 iID;
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN_LONG];
	DPSDK_INT32 iCarType;
	DPSDK_INT32						iEntranceGroupNum;
	DPSDK_BASE_ID_NAME_INFO*		pEntranceGroupList;
	DPSDK_INT32 iOrgInfoNum;
	DPSDK_ORG_SIMPLE_INFO* pOrgInfos;
	DPSDK_CHAR szIssuePlace[DPSDK_PLATE_ISSUE_PLACE_LEN];		// Issue place
	DPSDK_INT32 iPlateNoLength;//Plate no. length : 0-none,1-short,2-medium,3-long
	DPSDK_CHAR szPlateNoAreaCode[DPSDK_PLATE_AREA_CODE_LEN]; // Plate no. area code
	DPSDK_CHAR szExtPlateNo[DPSDK_PLATE_NUMBER_LEN];//Extended plate no.
	DPSDK_INT32 iPlateType;//License plate type
	DPSDK_CHAR szPlateTypeName[DPSDK_PLATE_TYPE_NAME_LEN];//License plate type name
}DPSDK_PARKINGLOT_CAPTURE_DATA;

typedef struct
{
	DPSDK_INT32 iNextPage;
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_PARKINGLOT_CAPTURE_DATA* pPageDataList;
}DPSDK_PARKINGLOT_GET_CAPTURE_RESULT;

typedef struct
{
	DPSDK_INT32 iPageNum;
	DPSDK_INT32 iPageSize;
	DPSDK_INT32 iOrderType;
	DPSDK_INT32 iDirection;
	DPSDK_CHAR szCarNum[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iCarType;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_CHANNLE_ID* pChannelIds;
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
}DPSDK_GET_EXISTINGRECORD_PARAM;

typedef struct
{
	DPSDK_INT32 iPageNum;
	DPSDK_INT32 iPageSize;
	DPSDK_INT32 iOrderType;
	DPSDK_INT32 iDirection;
	DPSDK_INT32 iEnterChannelIdsNum;
	DPSDK_INT32 iCarDirect;
	DPSDK_CHANNLE_ID* pEnterChannelIds;
	DPSDK_INT32 iExitChannelIdsNum;
	DPSDK_CHANNLE_ID* pExitChannelIds;
	DPSDK_CHAR szCarNum[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iEnterChannelEmpty;
	DPSDK_INT32 iExitChannelEmpty;
	DPSDK_INT32 iCarType;
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
}DPSDK_GET_ENTEREXIT_INFO;

typedef struct
{
	DPSDK_INT32 iPageNum;
	DPSDK_INT32 iPageSize;
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szCarNum[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_INT32 iParkingLotID;
	DPSDK_INT32 iCarGroup;
	DPSDK_INT32 iCarRight;
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
}DPSDK_GET_CARS_PARAM;

typedef struct
{
	DPSDK_CHAR szCarNum[DPSDK_PLATE_NUMBER_LEN];				                // Car no
}DPSDK_CAR_NUM;

typedef struct
{
	DPSDK_CHAR	szPlateNo[DPSDK_PLATE_NUMBER_LEN];				// Plate number
}DPSDK_PLATE_NO;

typedef struct
{
	DPSDK_INT32 iPlateNoMatchMode;
	DPSDK_INT32 iPlateNoNum;
	DPSDK_PLATE_NO* pPlateNoList;
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_INT32 iCarModel;
	DPSDK_INT32 iVehicleType;
	DPSDK_INT32 iPageNum;
	DPSDK_INT32 iPageSize;
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szEntranceGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_CHANNLE_ID* pChannelIds;
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_INT32 iOrderType;
	DPSDK_INT32 iDirection;
	DPSDK_CHAR szCarNum[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iCarDirect;
	DPSDK_INT32 iCarType;
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
	DPSDK_CHAR szSequence[DPSDK_SEQUENCE_LEN];
	DPSDK_TIMET	tSplitTime;
	DPSDK_CHAR	szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32	iCurrentPage;
}DPSDK_GET_CAPTURERECORD_INFO;

typedef struct
{
	DPSDK_INT32* pVehicleIds;
	DPSDK_INT32 iVehicleIdsNum;
	DPSDK_INT32 iExportColumnType;
	DPSDK_INT32 iCustomColumnsNum;
	DPSDK_INT32* pCustomColumns;
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iCarDirect;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_CHANNLE_ID* pChannelIds;
	DPSDK_INT32 iCarType;
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_INT32 iDataType;
	DPSDK_INT32 iExportStartNo;
	DPSDK_INT32 iExportNumber;
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szExportType[DPSDK_TYPE_LEN];
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
	DPSDK_INT32 iDisplayTimezoneOffset;										// Display Server Timezone Offset
}DPSDK_EXPORT_CAPTURERECORD_PARAM;

typedef struct
{
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iCarDirect;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_CHANNLE_ID* pChannelIds;
	DPSDK_INT32 iCarType;
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
}DPSDK_GET_CAPTURERECORDS_COUNT_PARAM;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR	szKeyword[DPSDK_KEY_WORD_LEN];					// Keyword, Support fuzzy query, match interval name, card point name, optional
}DPSDK_GET_SECTION_BY_PAGE_PARAM;

typedef struct
{
	DPSDK_CHAR	szSectionName[DPSDK_NAME_LEN];					// Section name
	DPSDK_CHAR	szPreSpotId[DPSDK_ID_LEN];						// Preposition spot ID
	DPSDK_CHAR	szSufSpotId[DPSDK_ID_LEN];						// Post position spot ID
	DPSDK_INT32	iDistance;										// Distance 
	DPSDK_INT32	iLargeCarMaxSpeed;								// Max speed of large car
	DPSDK_INT32	iLargeCarMinSpeed;								// Min speed of large car
	DPSDK_INT32	iSmallCarMaxSpeed;								// Max speed of small car
	DPSDK_INT32	iSmallCarMinSpeed;								// Min speed of small car
	DPSDK_INT32	iStatus;										// Status:0-No, 1-Yes
}DPSDK_SECTION_BASE_INFO;

typedef struct
{
	DPSDK_CHAR	szID[DPSDK_ID_LEN];								// Section ID
	DPSDK_SECTION_BASE_INFO struSectionBaseInfo;
}DPSDK_UPDATE_SECTION_DATA_INFO;

typedef struct
{
	DPSDK_CHAR	szID[DPSDK_ID_LEN];								// Section ID
	DPSDK_CHAR	szPreSpotName[DPSDK_NAME_LEN];					// Preposition spot Name
	DPSDK_CHAR	szSufSpotName[DPSDK_NAME_LEN];					// Post position spot Name
	DPSDK_SECTION_BASE_INFO struSectionBaseInfo;
}DPSDK_GET_SECTION_DATA_INFO;

typedef struct
{
	DPSDK_INT32	iTotalCount;										//All count
	DPSDK_INT32 iSectionNum;
	DPSDK_GET_SECTION_DATA_INFO* pSectionList;
}DPSDK_SECTION_PAGE_RESULT;

typedef struct
{
	DPSDK_CHAR  szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_CHAR	szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
}DPSDK_CHANNLE_INFO;

typedef struct
{
	DPSDK_INT32	iChannelNum;
	DPSDK_CHANNLE_INFO* pchannelList;
}DPSDK_CHANNLE_LIST;

/***************************************************    vehicle info     *********************************************************/

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR  szKeyWord[DPSDK_KEYWORD_LEN_EX];
}DPSDK_PAGE_GROUP_BASE_PARAM;

typedef struct
{
	DPSDK_PAGE_GROUP_BASE_PARAM struParam;
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];
}DPSDK_PAGE_GROUP_OUTSIDE_PARAM;

typedef struct
{
	DPSDK_CHAR szCarId[DPSDK_ID_LEN];
	DPSDK_BASE_ID_NAME_INFO struPersonInfo;					// person id and name
	DPSDK_CHAR	szPlateNo[DPSDK_PLATE_NUMBER_LEN];
}DPSDK_GROUP_OUTSIDE_CARINFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iCarInfoCount;
	DPSDK_GROUP_OUTSIDE_CARINFO* pCarInfoList;
}DPSDK_GROUP_OUTSIDE_CARLIST;

typedef struct
{
	DPSDK_CHAR	szGroupName[DPSDK_NAME_LEN];
	DPSDK_CHAR  szMemo[DPSDK_NAME_LEN_MAX];
	DPSDK_INT32 iColor;
	DPSDK_INT32 iRolesNum;
	DPSDK_INT32 iSurveyType;
	DPSDK_ROLEID* pRoleIdList;		// Role id list
}DPSDK_VEHICLE_GROUP_BASE_INFO;

typedef struct
{
	DPSDK_VEHICLE_GROUP_BASE_INFO struBaseInfo;
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];
	DPSDK_INT32 iRolesNum;
	DPSDK_ROLEID* pRoleIdList;		// Role id list
}DPSDK_VEHICLE_GROUP_UPDATE_INFO;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR	szGroupName[DPSDK_NAME_LEN];
	DPSDK_CHAR  szMemo[DPSDK_NAME_LEN_MAX];
	DPSDK_INT32 iColor;
	DPSDK_BOOL bDefaultGroup;		// 0=No, 1=Yes
	DPSDK_INT32 iRolesNum;
	DPSDK_RESROLE_DETAIL_INFO* pRoleInfo;		// Role id list
}DPSDK_GETVEHICLE_GROUP_INFO;

typedef struct
{
	DPSDK_VEHICLE_GROUP_BASE_INFO struBaseInfo;
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];
	DPSDK_INT32 iDefaultGroup;
}DPSDK_VEHICLE_GROUP_TYPE_INFO;

typedef struct
{
	DPSDK_INT32 iGroupCount;
	DPSDK_VEHICLE_GROUP_TYPE_INFO* pGroupInfoList;
}DPSDK_VEHICLE_GROUP_TYPE_LIST;

typedef struct
{
	DPSDK_VEHICLE_GROUP_BASE_INFO struBaseInfo;
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_INT32 iCarCount;
	DPSDK_INT32 iChannelCount;
	DPSDK_INT32 iSurveyChannelCount;
	DPSDK_INT32 iDefaultGroup;
}DPSDK_PAGE_GROUP_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iGroupInfoCount;
	DPSDK_PAGE_GROUP_INFO* pGroupInfoList;
}DPSDK_PAGE_GROUP_LIST;

typedef struct
{
	DPSDK_CHAR szVehicleId[DPSDK_ID_LEN];
	DPSDK_ID_LIST struGroupIdsList;
}DPSDK_REMOVE_VEHICLES_INFO;

typedef struct
{
	DPSDK_INT32 iVehiclesNum;
	DPSDK_REMOVE_VEHICLES_INFO* pVehiclesList;

}DPSDK_REMOVE_VEHICLES_PARAM;

typedef struct
{
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iFilterAuthorityOrg;						// Whether to filter organization permissions: 0 No, 1 Yes, Default 1, Optional
}DPSDK_GET_VEHICLE_BY_PLATE_NO_PARAM;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];
	DPSDK_TIMET tSurveyStartTime;
	DPSDK_TIMET tSurveyEndTime;
	DPSDK_TIMET tEntranceStartTime;
	DPSDK_TIMET tEntranceEndTime;
	DPSDK_INT32 iSurveyLongTerm;
	DPSDK_INT32 iEntranceLongTerm;

	DPSDK_INT32 iOrgNum;									// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;						// Person group Info
	DPSDK_INT32 iEntranceGroupNum;
	DPSDK_BASE_ID_INFO* pEntranceGroupList;
	DPSDK_INT32 iSurveyGroupNum;
	DPSDK_BASE_ID_INFO* pSurveyGroupList;

	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
}DPSDK_VEHICLES_INFO;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
	DPSDK_INT32 iParkingSpaceNum;
	DPSDK_BOOL bEnableParkingSpace;
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
}DPSDK_VEHICLES_PERSON_INFO;

typedef struct
{
	DPSDK_INT32 iCarsNum;
	DPSDK_VEHICLES_INFO* pCarsInfoList;

	DPSDK_BOOL bEnableSurvey;									//enable survey group，0=close，1=open
	DPSDK_BOOL bEnableEntrance;									//enable entrance group，0=close，1=open
	DPSDK_VEHICLES_PERSON_INFO struPersonInfo;
}DPSDK_ADD_VEHICLES_INFO;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_BASE_ID_NAME_INFO struPersonInfo;

	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN_EX];
	DPSDK_CHAR szVehicleColor[DPSDK_ENUM_LEN];
	DPSDK_CHAR szVehicleBrand[DPSDK_ENUM_LEN];
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_BOOL bContainChild;									// 0=No, 1=Yes
	DPSDK_CHAR szSurveyGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR szEntranceGroupId[DPSDK_ID_LEN];
	DPSDK_INT32 iGroupType;										// group type：1=access group，2=vehicle group，3=survey group
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szEntranceEffectiveStatus[DPSDK_ENUM_LEN];		// entrance effective，0=not effective，1=effective，2=Failure，null=all
	DPSDK_CHAR szSurveyEffectiveStatus[DPSDK_ENUM_LEN];			// survey effective，0=not effective，1=effective，2=Failure，null=all
	DPSDK_TIMET tEntanceEffectiveStartTime;
	DPSDK_TIMET tEntanceEffectiveEndTime;
	DPSDK_TIMET tEntanceFailureStartTime;
	DPSDK_TIMET tEntanceFailureEndTime;
	DPSDK_TIMET tSurveyEffectiveStartTime;
	DPSDK_TIMET tSurveyEffectiveEndTime;
	DPSDK_TIMET tSurveyFailureStartTime;
	DPSDK_TIMET tSurveyFailureEndTime;
	DPSDK_CHAR szKeyword[DPSDK_KEYWORD_LEN_EX];					// keyword，name、plate no、group name
	DPSDK_INT32 iFilterAuthorityOrg;							// whether to filter organization permissions: 0 No, 1 Yes, Default 1, Optional
	DPSDK_BOOL bContainVisitorVehicle;

}DPSDK_GET_PAGE_VEHICLES_PARAM;

typedef struct
{
	DPSDK_VEHICLE_GROUP_BASE_INFO struBaseInfo;
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];
	DPSDK_INT32 iLevel;											// for survey group
}DPSDK_VEHICLE_COMMON_GROUP_INFO;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struPersonInfo;

	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN_EX];
	DPSDK_BASE_ID_NAME_INFO struOrgInfo;

	DPSDK_INT32 iImageFaceNum;
	DPSDK_FACEIMAGE_INFO* pImageFaceList;						// face image URL，example：https://10.10.10.11:443/upload/person/xxx.jpg

	DPSDK_INT32 iOrgNum;										// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;							// Person group Info

	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];

	DPSDK_BOOL bEnableParkingSpace;
	DPSDK_INT32 iParkingSpaceNum;
	DPSDK_CHAR szPersonMemo[DPSDK_MEMO_LEN];
	DPSDK_BOOL bEnableEntranceGroup;
}DPSDK_VEHICLE_PERSON_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];								// vehicle ID
	DPSDK_TIMET tEffectiveStartTime;
	DPSDK_TIMET tEffectiveEndTime;
	DPSDK_TIMET tSurveyStartTime;
	DPSDK_TIMET tSurveyEndTime;
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];

	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];					//Person and Vehicle Group Code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];					//Person and Vehicle Group Name
	DPSDK_INT32 iOrgNum;										// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;							// Person group Info
	DPSDK_CHAR szMemo[DPSDK_MEMO_LEN];
	DPSDK_BOOL bEntranceLongTerm;								// entrance long term ：1=yes，0=no
	DPSDK_BOOL bSurveyLongTerm;									// survey long term ：1=yes，0=no
	DPSDK_BOOL bHasPermission;
	DPSDK_TIMET tEntranceRemaningTime;
	DPSDK_INT32 iEntranceEffectiveStatus;						// 0=not effective，1=effective，2=failure
	DPSDK_TIMET tSurveyRemaningTime;
	DPSDK_INT32 iSurveyEffectiveStatus;							// 0=not effective，1=effective，2=failure

	DPSDK_INT32 iEntranceGroupNum;
	DPSDK_VEHICLE_COMMON_GROUP_INFO* pEntranceGroupList;

	DPSDK_INT32 iSurveyGroupNum;
	DPSDK_VEHICLE_COMMON_GROUP_INFO* pSurveyGroupList;

	DPSDK_VEHICLE_PERSON_INFO struPersonInfo;

	DPSDK_INT32 iVehicleOrgNum;								    // Vehicle group number
	DPSDK_ORG_INFO_NOTIFY* pVehicleOrgInfo;					    // Vehicle group Info
}DPSDK_VEHICLE_INFOEX;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_VEHICLE_INFOEX* pPageDataList;
}DPSDK_GET_PAGE_VEHICLES_RESULT;

typedef struct
{
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR szSurveyGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szSurveyEffectiveStatus[DPSDK_ENUM_LEN];				//0=not effective，1=effective，2=Failure，null=all
	DPSDK_TIMET tSurveyEffectiveStartTime;
	DPSDK_TIMET	tSurveyEffectiveEndTime;
	DPSDK_TIMET tSurveyFailureStartTime;
	DPSDK_TIMET	tSurveyFailureEndTime;
	DPSDK_INT32 iExportRange;										//export range：0=all，1=select record，2=custome
	DPSDK_INT32	iExportStartNo;										//export start no，start from 1，0=all
	DPSDK_INT32 iExportNumber;										//export num，0=all，exportStartNo>0

	DPSDK_INT32 iSelectIdsNum;
	DPSDK_BASE_ID_INFO* pSelectIdsList;
	DPSDK_BOOL bDisplayTimezoneOffset;

}DPSDK_EXPORT_SURVEY_GROUP_VEHICLES_PARAM;

// import notify

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
	DPSDK_INT32 iSuccessCount;
	DPSDK_INT32 iFailCount;
	DPSDK_INT32	iProcessRatio;

}DPSDK_BASE_IMPORT_NOTIFY;

// export notify
typedef struct
{
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_INT32	iProcessRatio;
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
	DPSDK_BOOL bStatus;

}DPSDK_BASE_EXPORT_NOTIFY;

/****************************************************    vehicle end    ******************************************************************/
typedef struct
{
	DPSDK_CHAR	szID[DPSDK_ID_LEN];							// Spot ID
	DPSDK_CHAR	szSpotName[DPSDK_NAME_LEN];					// Spot Name
}DPSDK_SPOT_BASE_INFO;

typedef struct
{
	DPSDK_SPOT_BASE_INFO struSpotBaseInfo;
	DPSDK_INT32	iChannelNum;
	DPSDK_CHANNLE_INFO* pchannelList;
}DPSDK_SPOT_DETAILED_INFO;

typedef struct
{
	DPSDK_INT32 iSpotNum;
	DPSDK_SPOT_BASE_INFO* pSpotList;
}DPSDK_SPOT_LIST;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR	szKeyword[DPSDK_KEY_WORD_LEN];					// Keyword, Support fuzzy query, match interval name, card point name, optional
}DPSDK_GET_SPOT_BY_PAGE_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;									// Total count
	DPSDK_INT32	iSpotNum;
	DPSDK_SPOT_DETAILED_INFO* pSpotList;
}DPSDK_SPOT_PAGE_RESULT;

typedef struct
{
	DPSDK_CHAR	szStopName[DPSDK_NAME_LEN];						// Stop name
	DPSDK_INT32 iChannelIDNum;
	DPSDK_CHANNEL_ID* pChannelIDList;
}DPSDK_ADD_OR_UPDATE_SPOT_PARAM;

typedef struct
{
	DPSDK_CHAR	szPlateNo[DPSDK_PLATE_NUMBER_LEN];				// Plate number
	DPSDK_TIMET	tBeginDate;										// Begin time
	DPSDK_TIMET	tEndDate;										// End time
	DPSDK_INT32	iCarType;										// Car type,0-Visitor,1-Blocklist,2-Non group,3-Ordinary,4-VIP							
	DPSDK_INT32	iPlateColor;									// License plate color coding 99-Unidentified,0-Blue,1-Yellow,2-White,3-黑Color,100-Other colors
	DPSDK_INT32	iCarBrand;										// Car brand
	DPSDK_INT32	iCarColor;										// Vehicle color coding 0-White,1-Black,2-Red,3-Yellow,4-Silver gray，5-Blue,6-Green,7-Orange,8-Violet，9-Green,10-Pink,11-Brown,99-Unidentified,100-Other
	DPSDK_INT32	iSurveyType;									// Control type encoding 1-Overspeed vehicles,2-Theft of vehicles,3-Traffic accident vehicle,4-suspicion Vehicles,5-Intercepting vehicles,6-Check and check,7-Observation and tracking,8-High risk vehicles,9-Allowlist,11-Special abnormal vehicle,12-Yellow label vehicle
	DPSDK_INT32 iStatus;										// Deployment control status:1-In defense control, 2-Withdrawal control, 99-Expired
}DPSDK_SURVEY_CAR_BASE_INFO;

typedef struct
{
	DPSDK_SURVEY_CAR_BASE_INFO struSurveyCarBaseInfo;
	DPSDK_CHAR	szID[DPSDK_ID_LEN];								// Spot ID
	DPSDK_CHAR	szCarTypeName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szPlateColorName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szCarBrandName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szCarColorName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szSurveyTypeName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szUserId[DPSDK_USER_ID_LEN];					// User ID
	DPSDK_CHAR  szUserName[DPSDK_NAME_LEN_EX];					// User name
}DPSDK_SURVEY_CAR_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;									// Total count
	DPSDK_INT32	iSurveyCarNum;
	DPSDK_SURVEY_CAR_INFO* pSurveyCarList;
}DPSDK_SURVEY_CAR_PAGE_RESULT;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR	szKeyword[DPSDK_KEY_WORD_LEN];					// Keyword, Support fuzzy query, Match license plate number, optional
}DPSDK_GET_SURVEY_CAR_BY_PAGE_PARAM;

typedef struct
{
	DPSDK_CHAR	szKeyword[DPSDK_KEY_WORD_LEN];					// Keyword, Support fuzzy query, Match license plate number, only valid when exporttype = 1, optional
	DPSDK_ID_LIST struIds;
	DPSDK_INT32 iDisplayTimezoneOffset;							// Whether to display time zone: 0=no, 1=yes
}DPSDK_EXPORT_SURVEY_CARS_PARAM;

typedef struct
{
	DPSDK_CHAR	szPlateNo[DPSDK_PLATE_NUMBER_LEN];				// Plate number
	DPSDK_CHAR	szErrorMsg[DPSDK_ERROR_LEN];					// Error message
}DPSDK_IMPORT_SURVEY_CARS_FAILED_INFO;

typedef struct
{
	DPSDK_INT32 iSurverCarNum;
	DPSDK_IMPORT_SURVEY_CARS_FAILED_INFO* pSurverCarList;
}DPSDK_IMPORT_SURVEYCARS_FAILED_RESULT;

typedef struct
{
	DPSDK_INT32 iStatus;										// Deployment control status:1-In defense control, 2-Withdrawal control, 99-Expired
	DPSDK_ID_LIST struIds;
}DPSDK_SURVEY_CARS_STATUS_PARAM;

typedef struct
{
	DPSDK_INT32 iPlateNoNum;
	DPSDK_PLATE_NO* pPlateNos;
}DPSDK_SET_STATUS_FAILED_PLATENO_LIST;

typedef struct
{
	DPSDK_INT32* pVehicleIds;
	DPSDK_INT32 iVehicleIdsNum;
	DPSDK_INT32 iExportColumnType;
	DPSDK_INT32 iCustomColumnsNum;
	DPSDK_INT32* pCustomColumns;
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_INT32 iParkingLotID;
	DPSDK_INT32 iCarGroup;
	DPSDK_INT32 iCarRight;
	DPSDK_INT32 iDataType;
	DPSDK_INT32 iExportStartNo;
	DPSDK_INT32 iExportNumber;
	DPSDK_CHAR szExportType[DPSDK_TYPE_LEN];
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
	DPSDK_INT32 iDisplayTimezoneOffset;										// Display Server Timezone Offset
}DPSDK_EXPORT_CARS_PARAM;

typedef struct
{
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_INT32 iParkingLotID;
	DPSDK_INT32 iCarGroup;
	DPSDK_INT32 iCarRight;
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
}DPSDK_GET_CARS_COUNT_PARAM;

typedef struct
{
	DPSDK_INT32* pHistoryIds;
	DPSDK_INT32 iHistoryIdsNum;
	DPSDK_INT32 iExportColumnType;
	DPSDK_INT32 iCustomColumnsNum;
	DPSDK_INT32* pCustomColumns;
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iEnterChannelIdsNum;
	DPSDK_CHANNLE_ID* pEnterChannelIds;
	DPSDK_INT32 iExitChannelIdsNum;
	DPSDK_CHANNLE_ID* pExitChannelIds;
	DPSDK_INT32 iEnterChannelEmpty;
	DPSDK_INT32 iExitChannelEmpty;
	DPSDK_INT32 iCarType;
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_INT32 iDataType;
	DPSDK_INT32 iExportStartNo;
	DPSDK_INT32 iExportNumber;
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szExportType[DPSDK_TYPE_LEN];
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
	DPSDK_INT32 iDisplayTimezoneOffset;										// Display Server Timezone Offset
}DPSDK_EXPORT_ENTEREXIT_PARAM;

typedef struct
{
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iEnterChannelIdsNum;
	DPSDK_CHANNLE_ID* pEnterChannelIds;
	DPSDK_INT32 iExitChannelIdsNum;
	DPSDK_CHANNLE_ID* pExitChannelIds;
	DPSDK_INT32 iEnterChannelEmpty;
	DPSDK_INT32 iExitChannelEmpty;
	DPSDK_INT32 iCarType;
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
}DPSDK_GET_ENTEREXIT_COUNT_CPARAM;

typedef struct
{
	DPSDK_INT32* pVehicleIds;
	DPSDK_INT32 iVehicleIdsNum;
	DPSDK_INT32 iExportColumnType;
	DPSDK_INT32 iCustomColumnsNum;
	DPSDK_INT32* pCustomColumns;
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iCarType;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_CHANNLE_ID* pChannelIds;
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_INT32 iDataType;
	DPSDK_INT32 iExportStartNo;
	DPSDK_INT32 iExportNumber;
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szExportType[DPSDK_TYPE_LEN];
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
	DPSDK_INT32 iDisplayTimezoneOffset;										// Display Server Timezone Offset
}DPSDK_EXPORT_EXITING_PARAM;

typedef struct
{
	DPSDK_CHAR szCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iCarType;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_CHANNLE_ID* pChannelIds;
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN_MAX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDepartmentID[DPSDK_ORG_CODE_LEN];
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szLocal[DPSDK_LANGUAGE_LEN];
	DPSDK_INT32 iEnterModel;						// Enter model, -1:Total, 0:Pay by card,1:Automatic recognition,2:Remote gate opening,3:Password recognition,4:Fingerprint identification, 5:****
}DPSDK_GET_EXITING_COUNT_PARAM;

typedef struct
{
	DPSDK_INT32 iCarId;
}DPSDK_CAR_ID_INFO;

typedef struct
{
	DPSDK_INT32 iParkingLotId;
}DPSDK_PARKINGLOTID;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_CODE_LEN];
}DPSDK_DEVICECODE_INFOEX;

typedef struct
{
	DPSDK_INT32 iID;
	DPSDK_CHAR szCarNum[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iCarColor;
	DPSDK_INT32 iCarBrand;
	DPSDK_INT32 iParkingLotIdsNum;
	DPSDK_PARKINGLOTID* pParkingLotIds;
	DPSDK_TIMET tEffectiveStartTime;
	DPSDK_TIMET tEffectiveEndTime;
	DPSDK_INT32 iCarRight;
	DPSDK_INT32 iCarGroup;
	DPSDK_CHAR szMemo[DPSDK_MEMO_LEN];
}DPSDK_CARS_INFO;

typedef struct
{
	DPSDK_INT32 iID;
	DPSDK_INT32 iType;
	DPSDK_CHAR szArmingGroupName[DPSDK_NAME_LEN];
}DPSDK_ARMINGGROUP_INFO;

typedef struct
{
	DPSDK_INT32 iID;
	DPSDK_INT32 iType;
	DPSDK_CHAR szCarGroupName[DPSDK_NAME_LEN];
}DPSDK_CARGROUP_INFO;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
	DPSDK_INT32 iCarportAmount;
	DPSDK_CHAR szDepartmentId[DPSDK_ID_LEN];
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_INT32 iGender;
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR szMemo[DPSDK_MEMO_LEN];
}DPSDK_PERSON_INFOEX;

typedef struct
{
	DPSDK_INT32 iDeleteCarId;
}DPSDK_DELETECAR_INFO;

typedef struct
{
	DPSDK_INT32 iCarsNum;
	DPSDK_CARS_INFO* pCarsInfoList;
	DPSDK_PERSON_INFOEX struPersonInfo;
	DPSDK_INT32 iEntranceNum;
	DPSDK_DEVICECODE_INFOEX* pEntranceRight;
	DPSDK_INT32 iDeleteCarIdNum;
	DPSDK_DELETECAR_INFO* pDeleteCarInfoList;
}DPSDK_GETCARS_INFO;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szlastName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32 iCarportAmount;
	DPSDK_CHAR szDepartmentId[DPSDK_ID_LEN];
	DPSDK_CHAR szDepartmentName[DPSDK_NAME_LEN];
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_INT32 iGender;
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR szMemo[DPSDK_MEMO_LEN];
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
}DPSDK_PERSON_DATA_INFO;

typedef struct
{
	DPSDK_INT32 iCarsNum;
	DPSDK_CARS_INFO* pCarsInfoList;
	DPSDK_PERSON_DATA_INFO struPersonInfo;
	DPSDK_INT32 iEntranceNum;
	DPSDK_DEVICECODE_INFOEX* pEntranceRight;
}DPSDK_GET_CAR_RESULT;

typedef struct
{
	DPSDK_CHAR szItemCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szItemName[DPSDK_NAME_LEN];
	DPSDK_CHAR szItemType[DPSDK_TYPE_LEN];
}DPSDK_DICTIONARY_INFO;

typedef struct
{
	DPSDK_INT32 iDicNum;
	DPSDK_DICTIONARY_INFO* pDicInfoList;
}DPSDK_DICTIONARY_INFO_LIST;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szCorrectCarNum[DPSDK_ID_LEN];
	DPSDK_TIMET	tCorrectTime;
	DPSDK_INT32 iSaveRecord;
	DPSDK_INT32 iForceRecapture;
	DPSDK_INT32 iParkingSpaceStatisticsType;

}DPSDK_OPEN_SLUICE_INFO;

typedef struct
{
	DPSDK_CHAR szPointId[DPSDK_ID_LEN];
	DPSDK_CHAR szCorrectCarNum[DPSDK_ID_LEN];
	DPSDK_TIMET	tCorrectTime;
	DPSDK_INT32 iSaveRecord;
	DPSDK_INT32 iForceRecapture;
	DPSDK_INT32 iParkingSpaceStatisticsType;

}DPSDK_OPEN_SLUICE_BY_POINT_INFO;

typedef struct
{
	DPSDK_INT32 iCarID;
	DPSDK_INT32 iCarType;
	DPSDK_CHAR szEnterCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iEnterCarColor;
	DPSDK_INT32 iEnterCarBrand;
	DPSDK_INT32 iEnterCaptureRecordId;
	DPSDK_INT32 iEnterCaptureExtRecordId;
	DPSDK_CHAR szExitCarNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iExitCarColor;
	DPSDK_INT32 iExitCarBrand;
	DPSDK_INT32 iExitCaptureRecordId;
	DPSDK_INT32 iExitCaptureExtRecordId;
}DPSDK_UPDATE_ENTEREXITRECORDS_INFO;

typedef struct
{
	DPSDK_INT32 iType;
	DPSDK_INT32 iIsPull;
	DPSDK_CHAR	szDeviceCode[DPSDK_PLATE_NUMBER_LEN];
}DPSDK_SUBSCRIBE_ACTUALGPS_PARAM;

// Vehicle device message
typedef struct
{
	DPSDK_CHAR	szMsg[DPSDK_ALARM_CHANNELID_INFO_LEN];
	DPSDK_INT32 iDeviceCount;
	DPSDK_DEVICE_CODE* pDeviceList;
}DPSDK_VEHICLEMSG_INFO;

typedef struct
{
	DPSDK_INT32 iStatus;
	DPSDK_CHAR	szAlarmCode[DPSDK_ALARM_CODE_LEN];
	DPSDK_CHAR	szAlarmComment[DPSDK_ALARM_ALARMCOMMENT_LEN];
}DPSDK_CONFIRM_VEHICLEALARM_PARAM;

// Alarm event (notice)
typedef struct
{
	DPSDK_INT32						iIsHistory;
	DPSDK_CHAR						szdeviceCode[DPSDK_DEVICE_CODE_LEN];
	DPSDK_INT32						iDataSource;
	DPSDK_DOUBLE					iGPSX;
	DPSDK_DOUBLE					iGPSY;
	DPSDK_DOUBLE					iGPSZ;
	DPSDK_DOUBLE					iAngle;
	DPSDK_DOUBLE					iSpeed;
	DPSDK_INT32						iStarCount;
	DPSDK_INT32						iAntennaStatus;
	DPSDK_INT32						iOrientationStatus;
	DPSDK_CHAR						szCapTime[DPSDK_TIME_LEN];
	DPSDK_CHAR						szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR						szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR						szDriverName[DPSDK_NAME_LEN_EX];
}DPSDK_VIHICLEGPS_NOTIFY;

typedef struct
{
	DPSDK_INT32 iGpsNum;
	DPSDK_VIHICLEGPS_NOTIFY* pVehicleGps;
}DPSDK_MULTI_VIHICLEGPS_NOTIFY;

typedef struct
{
	DPSDK_CHAR				szChnlCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_INT32				iEnterNum;
	DPSDK_INT32				iExitNum;
	DPSDK_INT32				iLeftNum;
}DPSDK_HUMANTRAFFIC;

typedef struct
{
	DPSDK_CHAR			szChnlCode[DPSDK_CHANNEL_ID_LEN];
}DPSDK_VIDEOCHANNEL;

typedef struct
{
	DPSDK_CHAR			szChnlCode[DPSDK_CHANNEL_ID_LEN];
}DPSDK_RELATECHANNEL;

typedef struct
{
	DPSDK_CHAR					szRecordId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR					szSceneName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32					iVideoChnl;
	DPSDK_INT32					iRelateChnl;
	DPSDK_VIDEOCHANNEL*			lpstVideoChnl;
	DPSDK_RELATECHANNEL*		lpstRelateChnl;
}DPSDK_SCENE;

typedef struct
{
	DPSDK_CHAR				szChnlCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_UINT32			uiSceneCount;
	DPSDK_SCENE*			lpstScene;
}DPSDK_SCENECHANNEL;

typedef struct
{
	DPSDK_UINT32			uiARCount;
	DPSDK_SCENECHANNEL*		lpstSceneChnls;
}DPSDK_ARSCENELIST;


typedef struct
{
	DPSDK_CHAR				szChnlCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR				szTZTime[DPSDK_ALARM_UTC_TIME_LEN];		// "20180816T031759Z"
	DPSDK_INT32				iEnterCheck;
	DPSDK_INT32				iExitCheck;
	DPSDK_INT32				iLeftCheck;
}DPSDK_CHECKVALUE;


typedef struct
{
	DPSDK_UINT32			uiCount;
	DPSDK_VIDEOCHANNEL*		lpstVideoChnl;
}DPSDK_HUMANCHANNEL;

typedef struct
{
	DPSDK_CHAR				szSubno[DPSDK_CHANNEL_ID_LEN];			// AR channel Code
	DPSDK_CHAR				szTime[DPSDK_ALARM_UTC_TIME_LEN];		// time_t "1503709064010",
	DPSDK_INT32				iEnterToday;
	DPSDK_INT32				iEnterHour;
	DPSDK_INT32				iExitToday;
	DPSDK_INT32				iExitHour;
	DPSDK_INT32				iLeftCheck;
}DPSDK_HUMANFLOW;

//add label info
typedef struct
{
	DPSDK_CHAR					szChannelCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_AR_LABEL_BASE_INFO	stuLabelBaseInfo;
}DPSDK_AR_ADD_LABEL_PARAM;

//update label info
typedef struct
{
	DPSDK_CHAR					szChannelCode[DPSDK_CHANNEL_ID_LEN];
	int							nTitleIndex;
	DPSDK_AR_LABEL_BASE_INFO	stuLabelBaseInfo;
}DPSDK_AR_UPDATE_LABEL_PARAM;

typedef struct
{
	DPSDK_INT32					iChnlOffsetX;					//offsetX
	DPSDK_INT32					iChnlOffsetY;					//offsetY
	DPSDK_INT32					iChnlScal;						//scal
	DPSDK_INT32					iChnlSeqId;						//seqID
}DPSDK_AR_CHNL_SPLICE;
typedef struct
{
	DPSDK_INT32					iChnlIdIndex;					//the index of chnl
	DPSDK_INT32					iDeviceHeight;					//height of device height
	DPSDK_INT32					iTotalCount;					//the index of chnl
	DPSDK_AR_CHNL_SPLICE*		pSpliceList;
}DPSDK_AR_CHNL_DEVICE_PARAM_LIST;

//query watcher device param
typedef struct
{
	DPSDK_INT32								iTotalCount;				//All count
	DPSDK_AR_CHNL_DEVICE_PARAM_LIST*		pChnlParamList;				//

}DPSDK_AR_DEVICE_PARAM_LIST;
//GPS
typedef struct
{
	DPSDK_CHAR					szDeviceCode[DPSDK_CHANNEL_ID_LEN];				//device code
	DPSDK_INT32					iDataSource;										//gps source
	DPSDK_DOUBLE				fGpsLongitude;										//
	DPSDK_DOUBLE				fGpsLatitude;
	DPSDK_DOUBLE				fGpsHeight;
	DPSDK_DOUBLE				fGpsAngle;
	DPSDK_DOUBLE                fGpsSpeed;
	DPSDK_INT32					iGpsStarCount;
	DPSDK_INT32					iGpsAntennaStatus;
	DPSDK_INT32					iGpsOrientationStatus;
	DPSDK_TIMET					tGpsCapTime;										//gps report time
	DPSDK_CHAR					szExtendInfo[DPSDK_VCS_GPS_EXTENDINFO_STR_LEN];		//gps extend info		
}DPSDK_VCS_GPS_PARAM;
//event center model update
typedef struct
{
	DPSDK_CHAR						szCreateUserCode[DPSDK_NAME_LEN];				//create userCode  
	DPSDK_CHAR						szCreateTime[DPSDK_TZ_TIME_LEN];				//create time
	DPSDK_CHAR						szUpdateUserCode[DPSDK_NAME_LEN];				//update UserCode
	DPSDK_CHAR						szUpdateTime[DPSDK_TZ_TIME_LEN];				//update  Time   
	DPSDK_AR_LABEL_TEMPLATE_INFO	stuLableTemplateInfo;
}DPSDK_EVENT_CENTER_AR_MODEL;

//event center lable Update
typedef struct
{
	DPSDK_CHAR						szCreateUserCode[DPSDK_NAME_LEN];				//create userCode  
	DPSDK_CHAR						szCreateTime[DPSDK_TZ_TIME_LEN];				//create time
	DPSDK_CHAR						szUpdateUserCode[DPSDK_NAME_LEN];				//update UserCode
	DPSDK_CHAR						szUpdateTime[DPSDK_TZ_TIME_LEN];				//update  Time
	DPSDK_AR_LABEL_INFO				stuLabelInfo;
}DPSDK_EVENT_CENTER_AR_LABEL;

//event center plan Update
typedef struct
{
	DPSDK_INT32						iType;											//ar plan update type  add 1,update 2, delete 3
	DPSDK_INT32						iPlanid;										//plan id
	DPSDK_CHAR						szPlanName[DPSDK_NAME_LEN];						//plan Name
}DPSDK_EVENT_CENTER_AR_PLAN;

typedef struct
{
	DPSDK_CHAR			szRefCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR			szPrefCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR			szTypeCode[DPSDK_ORG_NAME_LEN];
	DPSDK_CHAR			szItemCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR			szItemName[DPSDK_ORG_NAME_LEN];
	DPSDK_CHAR			szItemKey[DPSDK_ORG_NAME_LEN];
	DPSDK_INT32			iSort;
	DPSDK_CHAR			szItemPar1[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR			szItemPar2[DPSDK_NAME_LEN_EX];
}DPSDK_SERVE_DICTIONARY_INFO;

typedef struct
{
	DPSDK_INT32							iSubItemCount;
	DPSDK_SERVE_DICTIONARY_INFO*		pServeDicInfo;
}DPSDK_SERVE_DICTIONARY_LIST;

// Vehicle preview config parameter
typedef struct
{
	DPSDK_UINT32 uiTotal;							// Channel number
	DPSDK_CHANNEL_ID* pChannelList;					// Channel list
}DPSDK_VEHICLE_PREVIEW_CONFIG_PARAM;

// Vehicle Alarm Event (notice)
typedef struct
{
	DPSDK_CHAR					szRecordId[DPSDK_ID_LEN];							// Record Id
	DPSDK_CHAR					szObjId[DPSDK_ID_LEN];								// Obj Id
	DPSDK_INT32					iObjType;											// Obj type
	DPSDK_DOUBLE				fCapTime;											// Capture time
	DPSDK_CHAR					szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel code
	DPSDK_INT32					iAlarmStats;										// Alarm status
	DPSDK_DOUBLE				fAlarmTime;											// Alarm time
	DPSDK_INT32					iRecordType;										// Record type
	DPSDK_CHAR					szObjRecordId[DPSDK_ID_LEN];						// Obj record id
	DPSDK_CHAR					szTagCode[DPSDK_ID_LEN];							// Tag code
	DPSDK_INT32					iScore;												// Score
	DPSDK_CHAR					szSurveyRecordId[DPSDK_ID_LEN];						// Survey record id
	DPSDK_DOUBLE				fCreateTime;										// Create time
	DPSDK_CHAR					szSaasChnlCode[DPSDK_CHANNEL_ID_LEN];				// Saas channel code
	DPSDK_CHAR					szSaasUserChnlCode[DPSDK_CHANNEL_ID_LEN];			// Saas user channel code
	DPSDK_INT32					iSurveySource;
}DPSDK_VEHICLE_ALARMEVENT_NOTIFY;

typedef struct
{
	DPSDK_CHAR				szVehRecordId[DPSDK_ID_LEN];								// Record Id
	DPSDK_CHAR				szPlateNum[DPSDK_PLATE_NUMBER_LEN];							// Plate Num
	DPSDK_CHAR				szCarNumType[DPSDK_TYPE_LEN];								// Car Num Type
	DPSDK_CHAR				szCapTime[DPSDK_TIME_STRING_LEN];							// Capture Time
	DPSDK_CHAR				szChannelCode[DPSDK_CHANNEL_ID_LEN];						// Channel code
	DPSDK_CHAR				szChannelName[DPSDK_CHANNEL_NAME_LEN];						// Channel Name
	DPSDK_CHAR				szOrgCode[DPSDK_ORG_CODE_LEN];								// Org Code
	DPSDK_CHAR				szOrgName[DPSDK_ORG_NAME_LEN];								// Org Name
	DPSDK_CHAR				szCreateTime[DPSDK_TIME_STRING_LEN];						// Create Time
	DPSDK_CHAR				szCarWayCode[DPSDK_VEHICLE_CARWAYCODE_LEN];					// Car Way
	DPSDK_INT32				iCarSpeed;													// Car Speed
	DPSDK_CHAR				szCarColor[DPSDK_COLOR_LEN];								// Car Color
	DPSDK_INT32				iCarColor;													// Car Color
	DPSDK_CHAR				szPlateNumUrl[DPSDK_URL_LEN];								// Plate Num url
	DPSDK_CHAR				szCarImgUrl[DPSDK_URL_LEN];									// Car Image url
	DPSDK_CHAR				szCarBrand[DPSDK_VEHICLE_CARBRAND_CODE_LEN];				// Car Brand
	DPSDK_CHAR				szCarBrandStr[DPSDK_VEHICLE_CARBRAND_STR_LEN];				// Car Brand str
	DPSDK_CHAR				szCarDirect[DPSDK_VEHICLE_CARDIRECT_CODE_LEN];				// Car Direct
	DPSDK_CHAR				szCarDirectStr[DPSDK_VEHICLE_CARDIRECT_STR_LEN];			// Car Direct str
}DPSDK_VEHICLE_QUERYVEHICLE_DETAIL;

//msp client subscribe   
typedef struct
{
	DPSDK_CHAR						szEvent[DPSDK_NAME_LEN];							//event
	DPSDK_CHAR						szMsgType[DPSDK_TZ_TIME_LEN];						//msg type
	DPSDK_CHAR						szSubno[DPSDK_NAME_LEN];							//subno
	DPSDK_INT32						iRange;												//range
	DPSDK_CHAR						szChannelCodes[DPSDK_CONTENT_LEN_2048];	//Channel Codes
	DPSDK_INT32						iNotificationType;									//NotificationType
	DPSDK_CHAR						szCountTimeUnit[DPSDK_TZ_TIME_LEN];					//CountTimeUnit
}DPSDK_MSP_SUBSCRIBE_INFO;

typedef struct
{
	DPSDK_INT32						iTotalCount;
	DPSDK_MSP_SUBSCRIBE_INFO*		pMspSubscribeInfoList;
}DPSDK_MSP_SUBSCRIBE_INFO_LIST;

typedef struct
{
	DPSDK_CHAR				szIP[DPSDK_IP_LEN];													// IP address
	DPSDK_UINT32			uiPort;																// server port
	DPSDK_CHAR				szToken[DPSDK_TOKEN_LEN];											// 
	DPSDK_CHAR				szUrl[DPSDK_URL_LEN];												//  url
}DPSDK_CloudDisk_DETAIL;
// Traffic junction notice
typedef struct
{
	DPSDK_INT32			iImgID;
	DPSDK_INT32			iParentImgID;
	DPSDK_CHAR			szCacheURL[DPSDK_URL_LEN];
	DPSDK_CHAR			szImgURL[DPSDK_URL_LEN];
	DPSDK_INT32			iImgSize;
	DPSDK_INT32			iImgPixel;
	DPSDK_INT32			iImgType;
	DPSDK_INT32			iObjLeft;
	DPSDK_INT32			iObjTop;
	DPSDK_INT32			iObjRight;
	DPSDK_INT32			iObjBottom;
	DPSDK_INT32			iImgWidth;
	DPSDK_INT32			iImgHeight;
	DPSDK_INT32			iRelativeObjLeft;
	DPSDK_INT32			iRelativeObjTop;
	DPSDK_INT32			iRelativeObjRight;
	DPSDK_INT32			iRelativeObjBottom;
}DPSDK_TRAFFIC_IMAGE;

// Traffic junction notice
typedef struct
{
	DPSDK_CHAR			szUid[DPSDK_ID_LEN];
	DPSDK_CHAR			szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR			szDeviceId[DPSDK_DEVICE_ID_LEN];
	DPSDK_CHAR			szChannelCode[DPSDK_CHANNEL_ID_LEN];// Channel Code
	DPSDK_CHAR			szUserChannelCode[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR			szRecordID[DPSDK_ID_LEN];			// Record ID
	DPSDK_CHAR			szSourceId[DPSDK_ID_LEN];
	DPSDK_CHAR			szPlateNum[DPSDK_PLATE_NUMBER_LEN];	// Number plate number
	DPSDK_DOUBLE		fCapTime;							// Unit ms
	DPSDK_INT32			iRecType;							// 0=Normal
	DPSDK_CHAR			szRecCode[DPSDK_ID_LEN];
	DPSDK_INT32			iTrafficLightState;					// 0=Unknow,1=Green,1=Red,2=Yellow
	DPSDK_DOUBLE		fRedLightData;						// Unit ms
	DPSDK_INT32			iMaxSpeed;
	DPSDK_INT32			iMinSpeed;
	DPSDK_INT32			iPlateColor;
	DPSDK_CHAR			szPlateType[DPSDK_TYPE_LEN];
	DPSDK_INT32			iPlateFlag;
	DPSDK_CHAR			szCarType[DPSDK_TYPE_LEN];
	DPSDK_INT32			iCarBrand;
	DPSDK_INT32			iCarSpeed;
	DPSDK_INT32			iCarColor;
	DPSDK_INT32			iCarWayCode;
	DPSDK_INT32			iCarDirect;
	DPSDK_INT32			iCarLength;
	DPSDK_INT32			iCarWidth;
	DPSDK_INT32			iCarHeight;
	DPSDK_INT32			iMainSeatBelt;
	DPSDK_INT32			iSubSeatBelt;
	DPSDK_CHAR			szCountry[DPSDK_ID_LEN_EX];
	DPSDK_INT32			iDataSource;
	DPSDK_CHAR			szNetGatewayIp[DPSDK_IP_LEN];
	DPSDK_UINT32		uiTrafficImageListSize;				// Number of traffic image info
	DPSDK_TRAFFIC_IMAGE*	pTrafficImageList;				// List of traffic image info
}DPSDK_TRAFFIC_JUNCTION_NOTIFY;

typedef struct
{
	DPSDK_INT32					iIndex;								//index
	DPSDK_INT32					iType;								//type
	DPSDK_CHAR					szName[DPSDK_NAME_LEN];				//name
	DPSDK_CHAR					szValue[DPSDK_NAME_LEN_EX];			//value
	DPSDK_CHAR					szRemark[DPSDK_USER_REMARK_LEN];	//remark
}DPSDK_CUSTOM_ATTRIBUTE_PARAM;

//query watcher device param
typedef struct
{
	DPSDK_INT32								iTotalCount;				//All count
	DPSDK_CUSTOM_ATTRIBUTE_PARAM*			pCustomAttribute;			//
}DPSDK_CUSTOM_ATTRIBUTE_LIST;

typedef struct
{
	DPSDK_CHAR szDepCode[DPSDK_ORG_CODE_LEN];				//depatment code
	DPSDK_INT32 iPersonNum;									// Person quantity
	DPSDK_PERSON_ID* pPersonIdList;							//
}DPSDK_BATCH_MOVE_INFO;

typedef enum
{
	OPERATE_LOG_RESULTTYPE_FAILED = 0,
	OPERATE_LOG_RESULTTYPE_SUCESS = 1,
	OPERATE_LOG_RESULTTYPE_EMPTY,		//升级上来的数据为空
}OPERATE_LOG_RESULTTYPE;

typedef struct
{
	DPSDK_CHAR szEventType[DPSDK_SAVE_LOG_TYPE_LEN];						// event type
	DPSDK_TIMET	tEventTime;													// event time				
	DPSDK_CHAR szEventContent[DPSDK_SAVE_LOG_DESC_LONG_LEN];				// event content
	OPERATE_LOG_RESULTTYPE eOperateResult;									// event result
}DPSDK_SAVE_OPERATE_LOG_PARAM;

// Add Capture Channel notice
typedef struct
{
	DPSDK_INT32			iChnlNum;		// Channel number
	DPSDK_CHANNEL_ID*	pChnlList;		// Channel list
	DPSDK_INT32			iTimeCell;		// Capture time cell
}DPSDK_ADD_CAPTURE_CHL_NOTIFY;

// Update Capture Channel notice
typedef struct
{
	DPSDK_INT32			iAddChnlNum;	// Add channel number
	DPSDK_CHANNEL_ID*	pAddChnlList;	// Add channel list
	DPSDK_INT32			iTimeCell;		// Capture time cell
	DPSDK_INT32			iDelteChnlNum;	// Delete channel number
	DPSDK_CHANNEL_ID*	pDeleteChnlList;// Delete channel list
}DPSDK_UPDATE_CAPTURE_CHL_NOTIFY;

// Delete Capture Channel notice
typedef struct
{
	DPSDK_INT32			iChnlNum;		// Channel number
	DPSDK_CHANNEL_ID*	pChnlList;		// Channel list
}DPSDK_DELETE_CAPTURE_CHL_NOTIFY;

// Capture Picture notice
typedef struct
{
	DPSDK_CHAR			szChannelId[DPSDK_CHANNEL_ID_LEN];		// Channel id
	DPSDK_CHAR			szPictureUrl[DPSDK_URL_LEN];			// Picture url
	DPSDK_TIMET			tCaptureDate;							// Capture Date
	DPSDK_CHAR			szChannelName[DPSDK_CHANNEL_NAME_LEN];	// Channel name
	DPSDK_INT32			iPictureSize;							// Picture Size
}DPSDK_CAPTURE_PICTURE_NOTIFY;

// Capture Channel info
typedef struct
{
	DPSDK_INT32			iChnlNum;		// Channel number
	DPSDK_CHANNEL_ID*	pCaptureChnlList;// Channel list
	DPSDK_INT32*		pTimeCell;		// Capture time cell
}DPSDK_CAPTURE_CHL_INFO;

///////////////////////////////////Face Start///////////////////////////////////////

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
}DPSDK_REPOSITORY_ID;

typedef struct
{
	DPSDK_CHAR szFaceID[DPSDK_FACE_ID_LEN];					// Face ID
}DPSDK_FACE_ID;

typedef struct
{
	DPSDK_INT32 iFaceIdNum;
	DPSDK_FACE_ID* pFaceList;
}DPSDK_FACE_ID_LIST;

typedef struct
{
	DPSDK_INT32 iFaceTypeNum;
	DPSDK_INT32* pFaceTypeIdList;
}DPSDK_FACE_TYPE_ID_LIST;

/// face notify
typedef struct
{
	DPSDK_CHAR szFaceID[DPSDK_FACE_ID_LEN];					// Face ID
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];					// Person name
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// Personnel Identification Number
	DPSDK_INT32 iGender;									// Gender: 0-unknown, 1-male, 2-female
	DPSDK_CHAR	szBirthday[DPSDK_BIRTHDAY_LEN];				// Birthday
	DPSDK_CHAR	szNationality[DPSDK_NATIONALITRY_LEN];		// Nationality
	DPSDK_CHAR  szFaceImageUrl[DPSDK_URL_LEN];				// Face image URL, eg：https://10.10.10.10:443/aaa.jpg
	DPSDK_INT32	iPersonTypeId;								// Personnel type ID
	DPSDK_CHAR	szPersonTypeName[DPSDK_NAME_LEN_EX];		// Personnel type name
	DPSDK_CHAR  szRemark[DPSDK_MEMO_LEN];					// Memo
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
}DPSDK_FACE_PERSON_INFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_INT32 iFaceIdNum;									// Face id number
	DPSDK_FACE_ID* pFaceIdList;								// Face is list
}DPSDK_FACE_DELETE_PERSON_NOTIFY;

typedef struct
{
	DPSDK_INT32	iPersonTypeId;								// Personnel type ID
	DPSDK_CHAR	szPersonTypeName[DPSDK_NAME_LEN_EX];		// Personnel type name
}DPSDK_FACE_PERSON_TYPE_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_CHAR	szRepositoryName[DPSDK_NAME_LEN_EX];		// Repository name
	DPSDK_INT32 iRepositoryColor;							// Repository color, 1-gray, 2-red, 3-orange, 4-yellow, 5-green, 6-cyan, 7-blue, 8-purple, required
	DPSDK_CHAR  szRemark[DPSDK_MEMO_LEN_LONG];					// Memo
}DPSDK_FACE_ADD_REPOSITORY_NOTIFY;

typedef struct
{
	DPSDK_INT32 iCameraType;								// Camera type, 1-gun, 2-ball, 3-hemisphere
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_CHAR	szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
}DPSDK_CONTOLR_REPOSITORY_CHANNEL_INFO;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];				// Repository ID
	DPSDK_CHAR	szRepositoryName[DPSDK_NAME_LEN_EX];		// Repository name
	DPSDK_INT32 iRepositoryColor;							// Repository color, 1-gray, 2-red, 3-orange, 4-yellow, 5-green, 6-cyan, 7-blue, 8-purple, required
	DPSDK_CHAR  szRemark[DPSDK_MEMO_LEN_LONG];				// Memo
	DPSDK_INT32 iFaceCount;									// Face number
	DPSDK_INT32 iIsFailed;									// Whether there is a person or channel that failed to control, 0-no, 1-yes
	DPSDK_INT32 iChannellNum;								// Channel number
	DPSDK_CONTOLR_REPOSITORY_CHANNEL_INFO* pChannelList;	// Channel list
}DPSDK_FACE_UPDATE_REPOSITORY_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];				// Repository ID
	DPSDK_INT32	iProcessRatio;								// Control progress, 1-100
	DPSDK_INT32 iIsFailed;									//Failed to set control, 0 = no, 1 = yes
}DPSDK_FACE_REPOSITORY_PROCESS_INFO;

typedef struct
{
	DPSDK_INT32 iRepositoryNum;								// repository process number
	DPSDK_FACE_REPOSITORY_PROCESS_INFO* pRepositoryList;	// repository process list
}DPSDK_FACE_REPOSITORY_PROCESS_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];				// Repository ID
	DPSDK_INT32 iDevNum;										// Device quantity
	DPSDK_DEVICE_CODE* pDevCodeList;							// Device code list, optional
	DPSDK_INT32 iChannelNum;									// The number of channel
	DPSDK_CHANNEL_ID* pChannelList;								// The list of channel
}DPSDK_FACEGROUP_ISSUE_PROCESS_NOTIFY;

typedef struct
{
	DPSDK_CHAR szRepositoryId[DPSDK_DB_ID_LEN];				// Repository ID
	DPSDK_CHAR szFaceID[DPSDK_FACE_ID_LEN];					// Face ID
}DPSDK_FACE_PERSON_PARAM;

typedef struct
{
	DPSDK_CHAR szFaceID[DPSDK_FACE_ID_LEN];					// Face ID
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];					// Person name
	DPSDK_CHAR szCertNo[DPSDK_CERTIFICATE_NUMBER_LEN];		// Certificate number
	DPSDK_INT32 iGender;									// Gender: 0-unknown, 1-male, 2-female
	DPSDK_CHAR	szBirthday[DPSDK_BIRTHDAY_LEN];				// Birthday
	DPSDK_CHAR	szNationality[DPSDK_NATIONALITRY_LEN];		// Nationality
	DPSDK_CHAR  szFaceImageUrl[DPSDK_URL_LEN];				// Face image URL, eg：https://10.10.10.10:443/aaa.jpg
	DPSDK_INT32 iImageDataLen;								// Image data size
	DPSDK_INT32 iPersonTypeId;								// Personnel type ID
	DPSDK_CHAR	szPersonTypeName[DPSDK_NAME_LEN_EX];		// Personnel type name
	DPSDK_CHAR  szRemark[DPSDK_MEMO_LEN];					// Memo
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_CHAR	szRepositoryName[DPSDK_NAME_LEN_EX];		// Repository name
	DPSDK_INT32 iStatus;									// Face control status
	DPSDK_INT32 iErrorCode;									// Error code;
}DPSDK_FACE_GET_PERSON_INFO;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];			// Keyword
	DPSDK_INT32 iStatus;									// Face control status, 0-abnormal control, 1-normal control, 2-all, optional
}DPSDK_GET_PERSON_BY_PAGE_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total Count
	DPSDK_INT32 iPersonNum;
	DPSDK_FACE_GET_PERSON_INFO* pPersonList;				// Person into List
}DPSDK_FACE_GET_PERSON_LIST;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];					// Person name
	DPSDK_CHAR szCertNo[DPSDK_CERTIFICATE_NUMBER_LEN];		// Certificate number
	DPSDK_INT32 iGender;									// Gender: 0-unknown, 1-male, 2-female
	DPSDK_CHAR	szBirthday[DPSDK_BIRTHDAY_LEN];				// Birthday
	DPSDK_CHAR	szNationality[DPSDK_NATIONALITRY_LEN];		// Nationality
	DPSDK_INT32 iImageDataLen;								// Image data size
	DPSDK_CHAR* pImageData;									// Face image data(base64)
	DPSDK_INT32 iPersonTypeId;								// Personnel type ID
	DPSDK_CHAR  szRemark[DPSDK_MEMO_LEN];					// Memo
	DPSDK_INT32 iIsIssuePerson;								// Wheather send face synchronously, 0 = no, 1 = yes, required
}DPSDK_FACE_PERSON_INFO;

typedef struct
{
	DPSDK_CHAR szFaceID[DPSDK_FACE_ID_LEN];					// Face ID
	DPSDK_CHAR szFaceImageUrl[DPSDK_URL_LEN_EX];			// Face image
}DPSDK_FACE_ADD_PERSON_RESULT;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_INT32 iFaceIdNum;
	DPSDK_FACE_ID* pFaceIdList;
}DPSDK_FACE_DELETE_PERSON_PARAM;

typedef struct
{
	DPSDK_INT32 iAddCount;									// Number of Adding faces
	DPSDK_INT32 iUpdateCount;								// Number of updating faces
	DPSDK_INT32 iFailedCount;								// Number of Failed faces
	DPSDK_INT32 iTotalCount;								// Total number of faces
	DPSDK_INT32 iIsCompleted;								// Import completed, 0-no, 1-yes
	DPSDK_FILE_URL struFailedDataFileUrl;					// Failed data file url, eg:https://10.10.10.10:443/upload/xxx/xxx.xls
}DPSDK_FACE_REPOSITORY_IMPORT_PROCESS;

typedef struct
{
	DPSDK_INT32	iPersonTypeId;								// Personnel type ID
	DPSDK_CHAR	szPersonTypeName[DPSDK_NAME_LEN_EX];		// Personnel type name
}DPSDK_FACE_PERSON_TYPE_INFO;

typedef struct
{
	DPSDK_INT32 iPersonTypeNum;								// Personnel type number
	DPSDK_FACE_PERSON_TYPE_INFO* pPersonTypeList;			// Personnel type list
}DPSDK_FACE_PERSON_TYPE_LIST;

typedef struct
{
	DPSDK_INT32 iRepositoryColor;							// Repository color, 1-gray, 2-red, 3-orange, 4-yellow, 5-green, 6-cyan, 7-blue, 8-purple, required
	DPSDK_CHAR	szRepositoryName[DPSDK_NAME_LEN_EX];		// Repository name
	DPSDK_CHAR  szRemark[DPSDK_MEMO_LEN_LONG];				// Memo
	DPSDK_INT32 iSurveyType;								
	DPSDK_INT32 iRolesNum;
	DPSDK_ROLEID* pRoleIdList;								// Role id list
}DPSDK_FACE_REPOSITORY_INFO;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_CHAR	szRepositoryName[DPSDK_NAME_LEN_EX];		// Repository name
	DPSDK_CHAR	szColorName[DPSDK_NAME_LEN_EX];				// Color Name
	DPSDK_INT32 iRepositoryColor;							// Repository color, 1-gray, 2-red, 3-orange, 4-yellow, 5-green, 6-cyan, 7-blue, 8-purple, required
	DPSDK_CHAR  szRemark[DPSDK_MEMO_LEN_LONG];				// Memo
	DPSDK_INT32 iRolesNum;
	DPSDK_RESROLE_DETAIL_INFO* pRoleInfo;					// Role id list
}DPSDK_GET_FACE_REPOSITORY_INFO;

typedef struct
{
	DPSDK_INT32 iDeviceNum;
	DPSDK_DEVICE_INFO* pDeviceList;							// Device list
	DPSDK_INT32 iChannelNum;								// Channel number
	DPSDK_CHANNEL_ID_AND_NAME* pChannelList;							//channel list
}DPSDK_FAILED_DEVICE_LIST;

typedef struct
{
	DPSDK_CHAR szFaceID[DPSDK_FACE_ID_LEN];					// Face ID	
	DPSDK_INT32 iAction;									// Operation, 1-issued, 2-updated, 3-deleted, required
	DPSDK_INT32 iDevCodeNum;
	DPSDK_DEVICE_CODE* pDevCodeList;						// Device code list
}DPSDK_FACE_ISSUE_PERSON_PARAM;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_INT32	iProcessRatio;								// Control progress, 1-100
}DPSDK_REPOSITORY_CONTROL_PROCESS_INFO;

typedef struct
{
	DPSDK_INT32 iRepositoryNum;
	DPSDK_REPOSITORY_CONTROL_PROCESS_INFO* pRepositoryList;	// Repository control process list 
}DPSDK_REPOSITORY_CONTROL_PROCESS_LIST;

typedef struct
{
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];		// Device code
	DPSDK_CHAR  szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];	// Device name
	DPSDK_INT32 iSuccessfulCount;							// Number of successes
	DPSDK_INT32 iFailedCount;								// Number of failures
	DPSDK_INT32	iProcessRatio;								// Control progress, 1-100
}DPSDK_DEVICE_CONTROL_PROCESS_DETAIL;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total Count
	DPSDK_INT32 iDeviceNum;
	DPSDK_DEVICE_CONTROL_PROCESS_DETAIL* pDeviceList;		// Person into List
}DPSDK_REPOSITORY_CONTROL_PROCESS_DETAIL;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];			// Keyword
}DPSDK_GET_CONTOLR_REPOSITORY_PARAM;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_CHAR  szRepositoryName[DPSDK_NAME_LEN_EX];		// Repository name
	DPSDK_INT32 iRepositoryColor;							// Repository color, 1-gray, 2-red, 3-orange, 4-yellow, 5-green, 6-cyan, 7-blue, 8-purple, required
	DPSDK_CHAR  szRepositoryColorName[DPSDK_NAME_LEN_EX];	// Repository color name
	DPSDK_CHAR  szRemark[DPSDK_MEMO_LEN_LONG];				// Memo
	DPSDK_TIMET tCreateTime;								// Create Time
	DPSDK_TIMET tUpdateTime;								// Update Time
	DPSDK_INT32 iFaceCount;									// Face number
	DPSDK_INT32 iIsFailed;									// Whether there is a person or channel that failed to control, 0-no, 1-yes
	DPSDK_INT32 iThumbnailLen;								// Thumbnail length
	DPSDK_CHAR* pThumbnailData;								// Thumbnail data
	DPSDK_INT32 iChannellNum;								// Channel number
	DPSDK_CONTOLR_REPOSITORY_CHANNEL_INFO* pChannelList;	// Channel list
}DPSDK_FACE_CONTOLR_REPOSITORY_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total Count
	DPSDK_INT32 iRepositoryNum;
	DPSDK_FACE_CONTOLR_REPOSITORY_INFO* pRepositoryList;				// Person into List
}DPSDK_FACE_CONTOLR_REPOSITORY_LIST;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];				// Keyword
	DPSDK_ID    struFaceId;									// Face ID 
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];		// Device code
	DPSDK_INT32 iStatus;									// Face control status
}DPSDK_GET_CONTOLR_PERSON_PARAM;

typedef struct
{
	DPSDK_CHAR  szFaceID[DPSDK_FACE_ID_LEN];				// Face ID
	DPSDK_CHAR  szCertNo[DPSDK_CERTIFICATE_NUMBER_LEN];		// Certificate number
	DPSDK_CHAR  szFirstName[DPSDK_NAME_LEN_EX];				// Person firstname
	DPSDK_CHAR  szLastName[DPSDK_NAME_LEN_EX];				// Person lastname
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];		// Device code
	DPSDK_CHAR  szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];	// Device name
	DPSDK_INT32 iStatus;									// Face control status, 0-failed, 1-successful
	DPSDK_INT32 iErrorCode;									// Error code;
}DPSDK_FACE_CONTOLR_PERSON_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total Count
	DPSDK_INT32 iPersonNum;
	DPSDK_FACE_CONTOLR_PERSON_INFO* pPersonList;				// Person into List
}DPSDK_FACE_CONTOLR_PERSON_LIST;

typedef struct
{
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_FLOAT	fSimilarity;								// Similarity
}DPSDK_CONTROL_CHANNEL_INFO;

typedef struct
{
	DPSDK_INT32 iOperateType;								// Operation type: 0 = control again after failure, 1-normal control, 3-incremental control, required
	DPSDK_INT32 iISIssuePerson;								// Sync issue person, 0-No, 1-Yes
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_INT32 iChannelNum;								// Channel number
	DPSDK_CONTROL_CHANNEL_INFO* pChannelList;				// Control channel list
}DPSDK_FACE_CONTROL_CHANNEL_PARAM;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];			// Keyword
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_INT32 iStatus;									// Face control status
}DPSDK_GET_CONTOLR_CHANNEL_PARAM;

typedef struct
{
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];		// Device code
	DPSDK_CHAR  szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];	// Device name
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_CHAR	szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
	DPSDK_FLOAT	fSimilarity;								// Similarity
	DPSDK_INT32 iStatus;									// Face control status, 0-failed, 1-successful
	DPSDK_INT32 iNodeDataLen;								// Node data lenght
	DPSDK_CHAR* pNodeData;									// Node data
	DPSDK_INT32 iError;										// Face control failed errorCode
}DPSDK_FACE_CONTOLR_CHANNEL_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total Count
	DPSDK_INT32 iChannelNum;
	DPSDK_FACE_CONTOLR_CHANNEL_INFO* pChannelList;				// Person into List
}DPSDK_FACE_CONTOLR_CHANNEL_LIST;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_INT32 iChnlIdNum;									// Channel id number
	DPSDK_CHANNEL_ID* PchnlIdList;							// Channel id list
}DPSDK_CANCEL_CONTROL_CHANNEL_PARAM;

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];			// session id
	DPSDK_INT32	iProcess;								// query process
	DPSDK_INT32	iCurrentCount;							// currntt searched count
}DPSDK_FACE_RECORD_QUERY_PROCESS_NOTIFY;

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];			// session id
	DPSDK_INT32	iProcess;								// query process
	DPSDK_INT32	iCurrentCount;							// currntt searched count
}DPSDK_SEARCH_HUMAN_BYPICTURE_PROCESS_NOTIFY;

typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];			// session id
	DPSDK_INT32	iProcess;								// query process
	DPSDK_INT32	iMatchCount;							// currntt searched count
}DPSDK_SEARCH_VEHICLE_BYPICTURE_PROCESS_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR	szOrgId[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];			// Keyword
}DPSDK_GET_ISSUECONTROL_PARAM;

typedef struct
{
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];		// Device code
	DPSDK_CHAR  szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];	// Device name
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_CHAR	szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
	DPSDK_CHAR  szOrgId[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR  szOrgName[DPSDK_ORG_NAME_LEN];
	DPSDK_INT32 iObjectType;								// 0 device, 1 channel
	DPSDK_INT32 iSuccessfulCount;							// Number of successes
	DPSDK_INT32 iFailedCount;								// Number of failures
	DPSDK_INT32	iProcessRatio;								// Control progress, 1-100
	DPSDK_INT32 iStatus;									// Face control status, 0-failed, 1-successful
}DPSDK_FACEGROUP_ISSUE_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total Count
	DPSDK_INT32 iObjectNum;
	DPSDK_FACEGROUP_ISSUE_INFO* pObjectList;				// object into List
}DPSDK_FACEGROUP_ISSUE_INFO_LIST;

typedef struct
{
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];		// Device code
	DPSDK_CHAR  szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];	// Device name
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_CHAR	szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
	DPSDK_CHAR  szOrgId[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR  szOrgName[DPSDK_ORG_NAME_LEN];
	DPSDK_INT32 iObjectType;								// 0 device, 1 channel
	DPSDK_FLOAT	fSimilarity;								// Similarity
	DPSDK_INT32 iStatus;									// Face control status, 0-failed, 1-successful
}DPSDK_FACEGROUP_CONTOLR_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total Count
	DPSDK_INT32 iObjectNum;
	DPSDK_FACEGROUP_CONTOLR_INFO* pObjectList;				// object into List
}DPSDK_FACEGROUP_CONTOLR_INFO_LIST;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_INT32 iOperateType;								// Operation type: 0 = unissue, 1-normal issue, 3-exception issue, required
	DPSDK_INT32 iChannelNum;								// Channel number
	DPSDK_CHANNEL_ID* pChannelList;							//channel list
	DPSDK_INT32 iDeviceNum;
	DPSDK_DEVICE_ID* pDeviceList;
}DPSDK_FACEGROUP_ISSUE_PARAM;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_INT32 iChannelNum;								// Channel number
	DPSDK_CONTROL_CHANNEL_INFO* pChannelList;				//channel list
}DPSDK_FACEGROUP_CONTROL_PARAM;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_INT32 iStatus;									// isssue status: 0=unfinished 1=finished
}DPSDK_GET_FACEGROUP_ISSUEOBJECT_PARAM;

typedef struct
{
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];		// Device code
	DPSDK_CHAR  szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];	// Device name
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_CHAR	szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
	DPSDK_INT32 iObjectType;								// 0 device, 1 channel
	DPSDK_INT32 iStatus;									// Face issue status, 0-unfinished, 1-finished
}DPSDK_FACEGROUP_ISSUEOBJECT_INFO;

typedef struct
{
	DPSDK_INT32 iObjectNum;
	DPSDK_FACEGROUP_ISSUEOBJECT_INFO* pObjectList;			// object into List
}DPSDK_FACEGROUP_ISSUEOBJECT_INFO_LIST;

typedef struct
{
	DPSDK_CHAR	szRepositoryId[DPSDK_DB_ID_LEN];			// Repository ID
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR	szKeyWord[DPSDK_KEYWORD_LEN_EX];			// Keyword
	DPSDK_ID    struFaceId;									// Face ID 
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];		// Device code
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// channel id
	DPSDK_INT32 iStatus;									// Face control status
}DPSDK_GET_FACEGROUPISSUE_PERSON_PARAM;

typedef struct
{
	DPSDK_CHAR  szFaceID[DPSDK_FACE_ID_LEN];				// Face ID
	DPSDK_CHAR  szCertNo[DPSDK_CERTIFICATE_NUMBER_LEN];		// Certificate number
	DPSDK_CHAR  szFirstName[DPSDK_NAME_LEN_EX];				// Person firstname
	DPSDK_CHAR  szLastName[DPSDK_NAME_LEN_EX];				// Person lastname
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];		// Device code
	DPSDK_CHAR  szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];	// Device name
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_CHAR	szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
	DPSDK_INT32 iObjectType;								// 0 device, 1 channel
	DPSDK_INT32 iStatus;									// Face control status, 0-failed, 1-successful
	DPSDK_INT32 iErrorCode;									// Error code;
}DPSDK_FACEGROUP_ISSUE_PERSON_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;								// Total Count
	DPSDK_INT32 iPersonNum;
	DPSDK_FACEGROUP_ISSUE_PERSON_INFO* pPersonList;				// Person into List
}DPSDK_FACEGROUP_ISSUE_PERSON_LIST;

typedef struct
{
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];		// Device code
	DPSDK_CHAR  szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];	// Device name
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel id
	DPSDK_CHAR	szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
	DPSDK_INT32 iObjectType;								// 0 device, 1 channel
	DPSDK_INT32 iError;										// Face issue failed errorCode
}DPSDK_FACEGROUP_CANCELFAILED_INFO;

typedef struct
{
	DPSDK_INT32 iFailedNum;
	DPSDK_FACEGROUP_CANCELFAILED_INFO* pFailedList;
}DPSDK_FACEGROUP_CANCELFAILED_INFO_LIST;

////////////////////////////////////Face end//////////////////////////////////////

////////////////////////////////////Dictionary Start//////////////////////////////////////

typedef struct
{
	DPSDK_CHAR szType[DPSDK_TYPE_LEN];						// Dictionary type
}DPSDK_DICTIONARY_TYPE;

typedef struct
{
	DPSDK_INT32 iTypeNum;
	DPSDK_DICTIONARY_TYPE* pTypeList;						// Dictionary type list
}DPSDK_DICTIONARY_TYPE_LIST;

typedef struct
{
	DPSDK_CHAR szItemCode[DPSDK_ORG_CODE_LEN];				// Item code
	DPSDK_CHAR szItemName[DPSDK_NAME_LEN];					// Tiem name
	DPSDK_CHAR szParamOne[DPSDK_MEMO_LEN];					// Parameter one
	DPSDK_CHAR szParamTwe[DPSDK_MEMO_LEN];					// Parameter twe
	DPSDK_INT32 iSort;										// Sort
}DPSDK_DICTIONARY_ITEM_INFO;

typedef struct
{
	DPSDK_CHAR szType[DPSDK_TYPE_LEN];						// Dictionary type
	DPSDK_CHAR szTypeName[DPSDK_NAME_LEN_EX];				// Dictionary type name
	DPSDK_INT32 iItemNum;
	DPSDK_DICTIONARY_ITEM_INFO* pItemList;
}DPSDK_DICTIONARY_DATA_INFO;

typedef struct
{
	DPSDK_INT32 iDicNum;
	DPSDK_DICTIONARY_DATA_INFO* pDicInfoList;
}DPSDK_DICTIONARY_DATA_LIST;

////////////////////////////////////Dictionary end//////////////////////////////////////

////////////////////////////////////Definition Start//////////////////////////////////////

typedef struct
{
	DPSDK_INT32 iPosition;									// Storage position: 1 = center, 3 = equipment
	DPSDK_CHAR szPositionName[DPSDK_NAME_LEN_EX];			// Storage position name
}DPSDK_STORAGE_POSITION_INFO;

typedef struct
{
	DPSDK_INT32 iPositionNum;								// Storage position number
	DPSDK_STORAGE_POSITION_INFO* pPositionList;				// Storage position list
}DPSDK_STORAGE_POSITION_LIST;

typedef struct
{
	DPSDK_INT32	iStreamType;								// Code stream type 1=Main stream, 2=Auxiliary code stream 1, 3=Auxiliary code stream 3
	DPSDK_CHAR szStreamTypeName[DPSDK_NAME_LEN_EX];			// Code stream type name
}DPSDK_STREAM_TYPE_INFO;

typedef struct
{
	DPSDK_INT32 iStreamTypeNum;								// Code stream type number
	DPSDK_STREAM_TYPE_INFO* pStreamTypeList;				// Code stream type list
}DPSDK_STREAM_TYPE_LIST;

typedef struct
{
	DPSDK_CHAR szCapabilityCode[DPSDK_ID_LEN];				// Capability code
	DPSDK_CHAR szCapabilityName[DPSDK_NAME_LEN_EX];			// Capability name
	DPSDK_CHAR szCapabilityGrpName[DPSDK_NAME_LEN_EX];		// Capability group name
	DPSDK_INT32 iMultiple;									// Multiple choice: 0-no, 1-yes
}DPSDK_CHANNEL_CAPABILITY_INFO;

typedef struct
{
	DPSDK_INT32 iCapabilityNum;								// Capability number
	DPSDK_CHANNEL_CAPABILITY_INFO* pCapabilityList;			// Capability list
}DPSDK_CHANNEL_CAPABILITY_LIST;

typedef struct
{
	DPSDK_INT32 iChannelNum;
	DPSDK_CHANNEL_ID* pChannelIdList;
	DPSDK_UINT64* pCapabilityList;
}DPSDK_BATCH_UPDATE_CHANNEL_CAPABILITY_PARAM;

typedef struct
{
	DPSDK_UINT64 uiCapability;
}DPSDK_GET_CHANNEL_CAPABILITY_OCCUPY_PARAM;

typedef struct
{
	DPSDK_CHAR		szServerIP[DPSDK_IP_LEN];				// Server IP
	DPSDK_CHAR		szServerCode[DPSDK_SERVER_CODE_LEN];	// Server code
	DPSDK_CHAR		szServerName[DPSDK_NAME_LEN];			// Server name
	DPSDK_INT32		iUsedCount;								// Used count
}DPSDK_CAPABILITY_USED_INFO;

typedef struct
{
	DPSDK_INT32						iDeviceCategory;		// Device category
	DPSDK_INT32						iUsedTotalCount;		// Used total count
	DPSDK_INT32						iUsedListNum;
	DPSDK_CAPABILITY_USED_INFO*		pUsedInfoList;
}DPSDK_GET_CHANNEL_CAPABILITY_OCCUPY_RESULT;

typedef struct
{
	DPSDK_INT32										iResultNum;
	DPSDK_GET_CHANNEL_CAPABILITY_OCCUPY_RESULT*		pResultList;
}DPSDK_GET_CHANNEL_CAPABILITY_OCCUPY_RESULT_LIST;

typedef struct
{
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];						// Device code
	DPSDK_CHAR  szDeviceName[DPSDK_ALARM_DEVICENAME_LEN];					// Device name
	DPSDK_CHAR  szOrgCode[DPSDK_ORG_CODE_LEN];								// Organization code
	DPSDK_CHAR	szOrgName[DPSDK_ORG_NAME_LEN];								// Organization name
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];							// Channel ID
	DPSDK_CHAR	szChannelName[DPSDK_CHANNEL_NAME_LEN];						// Channel name
	DPSDK_INT32	iCapability;												// Capability
	DPSDK_INT32 iAction;													// Action: 0-cancel, 1-set
	DPSDK_CHAR  szErrorMsg[DPSDK_MEMO_LEN_LONG];							// Error Msg
}DPSDK_UPDATE_CAPABILITY_FAIL_INFO;

typedef struct
{
	DPSDK_INT32 iFailedNum;										// Failed number
	DPSDK_UPDATE_CAPABILITY_FAIL_INFO* pFailInfoList;			// Capability list
}DPSDK_BATCH_UPDATE_CHANNEL_CAPABILITY_FAIL_LIST;

typedef struct
{
	DPSDK_INT32 iDeviceType;								// // Device type
	DPSDK_CHAR szDeviceTypeName[DPSDK_NAME_LEN_EX];			// Device type name
}DPSDK_DEFINITION_DEVICE_TYPE_INFO;

typedef struct
{
	DPSDK_INT32 iDeviceCategory;							// Device category
	DPSDK_CHAR szDeviceCategoryName[DPSDK_NAME_LEN];		// Device category name
	DPSDK_INT32 iDeviceTypeNum;								// Device type number
	DPSDK_DEFINITION_DEVICE_TYPE_INFO* pDeviceTypeList;			// Device type list
}DPSDK_DEFINITION_DEVICE_CATEGORY_INFO;

typedef struct
{
	DPSDK_INT32 iDeviceCategoryNum;									// Device category number
	DPSDK_DEFINITION_DEVICE_CATEGORY_INFO* pDeviceCategoryList;			// Device category list
}DPSDK_DEFINITION_DEVICE_CATEGORY_LIST;

////////////////////////////////////Definition Ded//////////////////////////////////////

////////////////////////////////////Definition Start//////////////////////////////////////

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;							// Page information
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];				// Organization code
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];				// Key word
}DPSDK_SHOP_GET_PARAM;

typedef struct
{
	DPSDK_CHAR szShapId[DPSDK_ID_LEN];						// Shop ID
	DPSDK_CHAR szShapName[DPSDK_NAME_LEN_EX];				// Shop name
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];				// Organization code
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];				// Organization name
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];				// Remark
}DPSDK_SHOP_DETAIL_INFO;

typedef struct
{
	DPSDK_INT32	iTotalCount;								// Total count;
	DPSDK_INT32 iShopNum;									// Shop  number
	DPSDK_SHOP_DETAIL_INFO* pShopList;						// Shop information list
}DPSDK_SHOP_LIST;

typedef struct
{
	DPSDK_INT32 iShopIdNum;
	DPSDK_GENERAL_ID* pShopIdList;
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];				// Organization code
}DPSDK_SHOP_MOVE_PARAM;


////////////////////////////////////Definition Ded//////////////////////////////////////


////////////////////////////////////Server Start//////////////////////////////////////

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// server code
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];						// Server name
}DPSDK_SERVER_CODE_AND_NAME;

typedef struct
{
	DPSDK_INT32 iServerNum;									//server total count
	DPSDK_SERVER_CODE_AND_NAME* pServerList;				// server list
}DPSDK_SERVER_AVAILABLE_LIST;

typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];			//server code
	DPSDK_INT32 iDevCodeCount;								//device code total count
	DPSDK_DEVICE_CODE* pDeviceCodeList;						//device code list
}DPSDK_RESOUCEALLOCATE_DEVICE;

typedef struct
{
	DPSDK_INT32 iMaxNum;								// total count
	DPSDK_RESOUCEALLOCATE_DEVICE* pServerDevList;		// server device list
}DPSDK_RESOUCEALLOCATE_DEVICE_LIST;
typedef struct
{
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];
}DPSDK_RESOUCEALLOCATE_SERVERCODE_INFO;
typedef struct
{
	DPSDK_INT32 iDevCategoriesCount;
	DPSDK_INT32* pDeviceCategoriesList;			//device categorie list
	DPSDK_INT32 iServerCodeCount;
	DPSDK_RESOUCEALLOCATE_SERVERCODE_INFO* pServerCodeList;						// server code list
}DPSDK_RESOUCEALLOCATE_AUTODEVICE_LIST;

typedef struct
{
	DPSDK_INT32 iDevCategorie;							//device categorie
	DPSDK_INT32 iOrgCount;								//org count
	DPSDK_ORG_CODE* pOrgCode;							// org code list
}DPSDK_RESOUCEALLOCATE_ORGDEVICE_LIST;

typedef struct
{
	DPSDK_INT32 iChannelType;								// Channel type set that needs to be querying see DPSDK_DEV_UNIT_TYPEDefinition
	DPSDK_INT32 iChannelCount;                              // Channel Count
}DPSDK_CHANNEL_COUNT_RESULT;


typedef struct
{
	DPSDK_INT32 iDevCategorie;							//device categorie
	DPSDK_INT32 iDevType;								//device type
	DPSDK_CHAR  szDevCode[DPSDK_SERVER_CODE_LEN];		//device code
	DPSDK_CHAR  szDevName[DPSDK_NAME_LEN];				//device name
	DPSDK_INT32 iChannelNum;
	DPSDK_CHANNEL_COUNT_RESULT* pChannelCountList;      //channel counts
}DPSDK_RESOUCEALLOCATE_ORGDEVICE_INFO;

typedef struct
{
	DPSDK_INT32 iMaxNum;								//total count
	DPSDK_RESOUCEALLOCATE_ORGDEVICE_INFO* pOrgDevList;	//org device list
}DPSDK_RESOUCEALLOCATE_ORGDEVICE_RESULT;


typedef struct
{
	DPSDK_CHAR  szServerIP[DPSDK_IP_LEN];				//server IP
	DPSDK_CHAR  szServerCode[DPSDK_SERVER_CODE_LEN];	//server code
	DPSDK_CHAR  szServerName[DPSDK_NAME_LEN];			//server name
	DPSDK_INT32 iServerType;							//server type
	DPSDK_INT32 iServerStatus;							//server status
	DPSDK_INT32 iOrgDevCount;							//org device total count
	DPSDK_RESOUCEALLOCATE_ORGDEVICE_INFO* pOrgDevList;	//org device list
}DPSDK_RESOUCEALLOCATE_SERVER_INFO;

typedef struct
{
	DPSDK_INT32 iMaxNum;								//total count
	DPSDK_RESOUCEALLOCATE_SERVER_INFO* pServerList;		//server list
}DPSDK_RESOUCEALLOCATE_SERVERS_RESULT;

typedef struct
{
	DPSDK_CHAR szServerId[DPSDK_ID_LEN];							// Server ID
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN_EX];						// Server name
	DPSDK_INT32 iServerType;										// Server type, 1-Sub server, 2 = Backup server 
	DPSDK_INT32 iBackupServerIdNum;									// Backup server ID number
	DPSDK_GENERAL_ID* pBackupServerIds;								// Backup server ID list
	DPSDK_INT32 iSubServerIdNum;									// Sub server ID number
	DPSDK_GENERAL_ID* pSubServerIds;								// Sub server ID list
}DPSDK_BRMS_UPDATE_SERVER_PARAM;

typedef struct
{
	DPSDK_CHAR szServerId[DPSDK_ID_LEN];							// Server ID
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server code
	DPSDK_IP struServerIp;											// Server IP
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN_EX];						// Server name
	DPSDK_INT32	iServerStatus;										// Server status: 1 = starting, 2 = running, 3 = idle, 4 = offline
}DPSDK_BRMS_SERVER_BASE_INFO;

typedef struct
{
	DPSDK_BRMS_SERVER_BASE_INFO struServerBaseInfo;					// Server base info
	DPSDK_CHAR szSubServerId[DPSDK_ID_LEN];						// Sub server ID
	DPSDK_CHAR szSubServerName[DPSDK_NAME_LEN_EX];				// Sub server name
}DPSDK_BRMS_BACKUP_SERVER_INFO;

typedef struct
{
	DPSDK_BRMS_SERVER_BASE_INFO struServerBaseInfo;					// Server base info
	DPSDK_CHAR szBackupServerId[DPSDK_ID_LEN];						// Backup server ID
	DPSDK_CHAR szBackupServerName[DPSDK_NAME_LEN_EX];				// Backup server name
}DPSDK_BRMS_SUB_SERVER_INFO;

typedef struct
{
	DPSDK_INT32 iBackupMode;										//backup Mode
	DPSDK_INT32 iBackupDate;										//backup Date
	DPSDK_INT32	iBackupFileNum;										//backup file num
	DPSDK_CHAR	szBackupTime[DPSDK_TIME_STRING_LEN];				//backup Time
}DPSDK_AUTO_BACKUP_PARAM;

typedef struct
{
	DPSDK_AUTO_BACKUP_PARAM struBackupCfgInfo;
	DPSDK_CHAR szFilePassword[DPSDK_PWD_LEN];
	DPSDK_CHAR szCredence[DPSDK_TOKEN_LEN];
}DPSDK_UPDATE_BACKUP_CONFIG_INFO;

typedef struct
{
	DPSDK_CHAR szBackupFile[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szFilePassword[DPSDK_PWD_LEN];
	DPSDK_CHAR szCredence[DPSDK_TOKEN_LEN];
}DPSDK_MANUAL_RESTORE_INFO;

typedef struct
{
	DPSDK_INT32 iBackupFileId;
	DPSDK_TIMET	tBackupFileTime;
	DPSDK_DOUBLE fBackupFileSize;
	DPSDK_CHAR	szBackupFileName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR  szBackupFileUrl[DPSDK_URL_LEN];
}PAGE_BACKUP_FILEDATA_INFO;

typedef struct
{
	DPSDK_INT32 iMaxNum;
	PAGE_BACKUP_FILEDATA_INFO* pPageFileInfo;
}PAGE_BACKUP_FILEDATA_LIST;

typedef struct
{
	DPSDK_BRMS_SERVER_BASE_INFO struServerBaseInfo;					// Server base info
	DPSDK_INT32 iServerType;										// Server type, 1-Sub server, 2 = Backup server , 3-Primary server
	DPSDK_INT32 iEnable;											// Enable: 1 = enable, 0 = disable
	DPSDK_INT32 iBackupServerNum;									// Backup server number
	DPSDK_BRMS_BACKUP_SERVER_INFO* pBackupServerList;				// Backup server list
	DPSDK_INT32 iSubServerNum;									// Sub server number
	DPSDK_BRMS_SUB_SERVER_INFO* pSubServerList;					// Sub server list
}DPSDK_BRMS_SERVER_DETIAL_INFO;

typedef struct
{
	DPSDK_BRMS_SERVER_BASE_INFO struServerBaseInfo;					// Server base info
	DPSDK_INT32 iServerType;										// Server type,  1-Sub server, 2 = Backup server ,3-Primary server
	DPSDK_INT32 iEnable;											// Enable: 1 = enable, 0 = disable
	DPSDK_INT32 iReason;											// Reason: 1 = unmatch
}DPSDK_BRMS_SERVER_INFO;

typedef struct
{
	// Using to Get srever list by page
	DPSDK_INT32 iTotalCount;										// Total Count

	DPSDK_INT32 iServerNum;											// Server number
	DPSDK_BRMS_SERVER_INFO* pServerInfoList;						// Server info list
}DPSDK_BRMS_SERVER_LIST;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN_EX];					// Keyword
}DPSDK_BRMS_SERVERLOG_SERVER_PARAM;

typedef struct
{
	DPSDK_CHAR szServiceCode[DPSDK_SERVER_CODE_LEN];				// Service Code
	DPSDK_CHAR szServiceName[DPSDK_NAME_LEN_EX];					// Service name
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];					// Server code
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN_EX];						// Server name
	DPSDK_IP struServerIp;											// Server IP
	DPSDK_INT32	iServiceStatus;										// Server status  0:offline 1:online
	DPSDK_INT32	iStatus;											// Enable open debug log: 0:false 1:true
}DPSDK_BRMS_SERVERLOG_SERVER_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total Count

	DPSDK_INT32 iServerNum;											// Server number
	DPSDK_BRMS_SERVERLOG_SERVER_INFO* pServerInfoList;				// Server log server list
}DPSDK_BRMS_SERVERLOG_SERVER_LIST;

typedef struct
{
	DPSDK_INT32 iSwitchtype;										// Switch type: 1-Sub server switch to backup server, 2 = Backup server switch to sub server, 3 = Backuo server switch to backuo server, required
	DPSDK_CHAR szSrcServerId[DPSDK_ID_LEN];							// Source server ID
	DPSDK_CHAR szDstServerId[DPSDK_ID_LEN];							// Target server ID
}DPSDK_BRMS_SERVER_SWITCH_PARAM;

////////////////////////////////////Server end//////////////////////////////////////

////////////////////////////////////Rester Start//////////////////////////////////////

typedef struct
{
	// For modifying and getting raster info( list)
	DPSDK_CHAR szResterMapId[DPSDK_ID_LEN];							// Rester map ID 

																	// For getting raster info( list)
	DPSDK_INT32 iIsDefault;											// Default map: 0-No, 1-Yes, display priority at the same level

																	// Public
	DPSDK_CHAR szResterMapName[DPSDK_NAME_LEN_EX];					// Rester map name
	DPSDK_INT32 iStatus;											// Enable, 0-no, 1-yes, required
	DPSDK_INT32 iType;												// Type: 0-general map, 1-Thunder ball map, required
	DPSDK_CHAR szPId[DPSDK_NODE_ID_LEN];							// parent node ID
	DPSDK_FILE_URL struThumbnailPath;								// Thumbnail path
	DPSDK_FILE_URL struSrcPicPath;									// Source picture path
	DPSDK_CHAR szGpsX[DPSDK_TZ_GPS_LEN];							// Longitude
	DPSDK_CHAR szGpsY[DPSDK_TZ_GPS_LEN];							// Latitude
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];							// Remark
}DPSDK_EMAP_RASTER_MAP_INFO;

typedef struct
{
	DPSDK_CHAR szLineLength[DPSDK_TZ_LENGTH_LEN];					// Line length
	DPSDK_INT32 iPointNum;											// Point number
	DPSDK_POINT_EX* pLinePointList;									// Point list
}DPSDK_RASTER_MAP_EXTRA_INFO;

typedef struct
{
	DPSDK_EMAP_RASTER_MAP_INFO struResterMap;						// Rester map base info
	DPSDK_RASTER_MAP_EXTRA_INFO struExtraInfo;						// Extra info
}DPSDK_EMAP_RASTER_MAP_DETAIL;

typedef struct
{
	DPSDK_CHAR szPId[DPSDK_NODE_ID_LEN];							// Parent node ID, -1-raster, 0-vector, empty means all
	DPSDK_INT32 iType;												// Type: 0-general map, 1-Thunder ball map, required
}DPSDK_GET_RASTER_MAP_LIST_PARAM;

typedef struct
{
	DPSDK_INT32 iMapNum;											// Rester map number
	DPSDK_EMAP_RASTER_MAP_INFO* pMapList;							// Rester map list
}DPSDK_EMAP_RASTER_MAP_LIST;

typedef struct
{
	// For Getting vector map
	DPSDK_CHAR szPackageName[DPSDK_NAME_LEN_EX];					// Offline map package name
	DPSDK_INT32 iPackageStatus;										// Offline map package status, 0-Processing, 1-Completed

																	// For Online map
	DPSDK_CHAR szMapUrl[DPSDK_URL_LEN];
	// Public
	DPSDK_INT32 iMapEngine;											// Map engine, 1 = Baidu, 2 = Google, 3 = Gaud, required
	DPSDK_INT32 iMapMode;											// Map mode, 0-OffLine map, 1-OnLine map, required
	DPSDK_INT32 iStatus;											// Map available, 0 = off, 1 = on, required
	DPSDK_CHAR  szGpsX[DPSDK_TZ_GPS_LEN];							// Longitude
	DPSDK_CHAR  szGpsY[DPSDK_TZ_GPS_LEN];							// Latitude
	DPSDK_INT32 iMinLevel;											// Min level, 1-21, required
	DPSDK_INT32 iMaxLevel;											// Max level, 1-21, required
	DPSDK_INT32 iStartLevel;										// Start level, 1-21, required
	DPSDK_INT32 iShowLevel;											// Show level, 1-21, required
}DPSDK_EMAP_VECTOR_MAP_INFO;

typedef struct
{
	DPSDK_INT32			iReportLen;
	DPSDK_CHAR*			pRadarReportList;
}DPSDK_EMAP_RADAR_TARGET_REPORT_LIST;

typedef struct
{
	DPSDK_CHAR			szDeviceCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_CHAR			szDeviceName[DPSDK_DEVICE_NAME_LEN];
	DPSDK_CHAR			szDeviceIp[DPSDK_IP_LEN];
	DPSDK_INT32			iDevicePort;
	DPSDK_CHAR			szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR			szOrgName[DPSDK_ORG_NAME_LEN];
}DPSDK_EMAP_RADAR_BIND_CAMERA_INFO;

typedef struct
{
	DPSDK_INT32			iCamerasNum;
	DPSDK_EMAP_RADAR_BIND_CAMERA_INFO* pCamerasList;
}DPSDK_EMAP_RADAR_BIND_CAMERAS_LIST;
////////////////////////////////////Rester Ded//////////////////////////////////////

/// BRMS
//Alarm plan

typedef struct
{
	DPSDK_CHAR	szAlarmTypeId[DPSDK_ID_LEN];						// Alarm type ID
	DPSDK_CHAR	szAlarmTypeName[DPSDK_ALARM_ALARMTYPENAME_LEN];		// Alarm type name
}DPSDK_ALARM_TYPE_INFO;

typedef struct
{
	DPSDK_CHAR szResourceId[DPSDK_CHANNEL_ID_LEN];					// Sesource ID, Device code or Channel ID. 

	DPSDK_INT32 iAlarmTypeNum;										// Alarm type number
	DPSDK_ALARM_TYPE_INFO* pAlarmTypeList;							// Alarm type list
}DPSDK_ALARM_PLAN_RESOURCE_INFO;

typedef struct
{
	DPSDK_INT32 iResourceNum;										// Alarm config status number
	DPSDK_ALARM_PLAN_RESOURCE_INFO* pResourceList;					// Alarm config status list
}DPSDK_ALARM_PLAN_RESOURCE_LIST;

// Incident
typedef struct
{
	// Using to update and get incident info
	DPSDK_CHAR  szFileId[DPSDK_ID_LEN];								// File ID

																	// Using to add and update incident info
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];					// Channel ID
	DPSDK_INT32	iRecordSource;										// Video source, see see DPSDK_SOURCE_TYPE
	DPSDK_TIMET tStartTime;											// Star time, Required
	DPSDK_TIMET tEndTime;											// End time, Required
	DPSDK_INT32	iStreamType;										// Code stream type 1=Main stream, 2=Auxiliary code stream
	DPSDK_INT32	iRecordType;										// Video type, see see DPSDK_RECORD_TYPE

																	// Using to get incident info
	DPSDK_CHAR	szUploadUserName[DPSDK_NAME_LEN_EX];				// Upload user name
	DPSDK_INT32 iFileStatus;										// File status, 0-Incomplete, 1-Completed

																	// public
	DPSDK_CHAR	szFileName[DPSDK_NAME_LEN_MAX];						// File name
	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];							// File download URL 
	DPSDK_INT32 iFileType;											// File type, 1-local recording, 2-remote recording, required
	DPSDK_TIMET tUploadTime;										// Update time, Required
	DPSDK_INT32	iFileSize;											// File Size
}DPSDK_INCIDENT_VIDEO_INFO;

typedef struct
{
	// Using to update and get incident info
	DPSDK_CHAR  szFileId[DPSDK_ID_LEN];								// File ID

																	// Using to get incident info
	DPSDK_CHAR	szUploadUserName[DPSDK_NAME_LEN_EX];				// Upload user name

																	// public
	DPSDK_CHAR	szFileName[DPSDK_NAME_LEN_MAX];						// File name
	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];							// File download URL 
	DPSDK_CHAR	szThumbnailUrl[DPSDK_URL_LEN];						// Thumbnail URL 
	DPSDK_TIMET tUploadTime;										// Update time, Required
	DPSDK_INT32	iFileSize;											// File Size
}DPSDK_INCIDENT_IMAGE_INFO;

typedef struct
{
	// Using to update or get incident info
	DPSDK_CHAR szIncidentId[DPSDK_ID_LEN];							// Incident ID, Required
	DPSDK_CHAR szIncidenTypeName[DPSDK_NAME_LEN_EX];				// Incident type ID, Required

																	// Public
	DPSDK_CHAR szIncidentName[DPSDK_NAME_LEN_EX];					// Incident name, Required
	DPSDK_CHAR szIncidenTypeId[DPSDK_TYPE_LEN];						// Incident type ID, Required
	DPSDK_INT32 iStatus;											// Incident status, 0-off, 1-on, Required
	DPSDK_TIMET tStartTime;											// Star time, Required
	DPSDK_TIMET tEndTime;											// End time, Required
	DPSDK_CHAR szLocation[DPSDK_URL_LEN];							// Location, Required
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN_LONG];						// Remark, Optional

	DPSDK_INT32 iVideoNum;											// The number of video
	DPSDK_INCIDENT_VIDEO_INFO* pVideoList;							// The list of video
	DPSDK_INT32 iImageNum;											// The number of image
	DPSDK_INCIDENT_IMAGE_INFO* pImageList;							// The list of image
}DPSDK_INVESTIGATION_INCIDENT_INFO;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];						// Incident Keyword
	DPSDK_CHAR szIncidentTypeId[DPSDK_ID_LEN];						// Incident Type ID
	DPSDK_INT32 iIncidentStatus;									// Incident Status
}DPSDK_GET_INCIDENT_BY_PAGE_PARAM;

typedef struct
{
	DPSDK_CHAR szIncidentId[DPSDK_ID_LEN];							// Incident ID, Required
	DPSDK_CHAR szIncidentName[DPSDK_NAME_LEN_EX];					// Incident name, Required
	DPSDK_CHAR szIncidenTypeId[DPSDK_ID_LEN];						// Incident type ID, Required
	DPSDK_CHAR szIncidenTypeName[DPSDK_NAME_LEN_EX];				// Incident type ID, Required
	DPSDK_INT32 iStatus;											// Incident status, 0-off, 1-on, Required
	DPSDK_TIMET tStartTime;											// Star time, Required
	DPSDK_TIMET tEndTime;											// End time, Required
	DPSDK_INT32 iEditEnable;										// Editable: 0-no, 1-yes
}DPSDK_INVESTIGATION_INCIDENT_BASE_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total Count
	DPSDK_INT32 iIncidentNum;										// Incident number
	DPSDK_INVESTIGATION_INCIDENT_BASE_INFO* pIncidentList;			// Incident list
}DPSDK_INVESTIGATION_INCIDENT_LIST;

typedef struct
{
	DPSDK_CHAR	szPlanId[DPSDK_ID_LEN];								// Plan ID
	DPSDK_CHAR  szRequestId[DPSDK_ID_LEN];							// Request ID
	DPSDK_CHAR	szFilePath[DPSDK_FILE_PATH_LEN];					// Dav video file path
	DPSDK_INT32 iFileSize;											// Dav video file size
	DPSDK_CHAR	szDownloadUrl[DPSDK_URL_LEN];						// Dav video File download URL
	DPSDK_CHAR	szMp4FilePath[DPSDK_FILE_PATH_LEN];					// Mp4 video file path
	DPSDK_INT32 iMp4FileSize;										// Mp4 video file size
	DPSDK_CHAR	szMp4DownloadUrl[DPSDK_URL_LEN];						// Mp4 video File download URL
	DPSDK_CHAR	szThumbnailPath[DPSDK_FILE_PATH_LEN];				// Thumbnail file path
	DPSDK_INT32 iResult;											// Error code
	DPSDK_CHAR	szErrorMsg[DPSDK_ERROR_LEN];						// Error message
}DPSDK_INVESTIGATION_INCIDENT_VIDEO_INFO;

typedef struct
{
	// Using to Get Incident Operate Logs By Page
	DPSDK_CHAR szLogId[DPSDK_ID_LEN];								// Log ID
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN_EX];						// User name
	DPSDK_TIMET tOperateTime;										// Operate time, Required

																	// Public
	DPSDK_CHAR szIncidentId[DPSDK_ID_LEN];							// Incident ID, Required
	DPSDK_INT32 iOperateType;										// Operation type, 1-Export, 2-Download file, Required
	DPSDK_INT32 iOperateDetailLen;									// Operate detail length
	DPSDK_CHAR* pOperateDetailData;									// Operate detail data
}DPSDK_INVESTIGATION_INCIDENT_LOG_INFO;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR szIncidentId[DPSDK_ID_LEN];							// Incident ID, Required
}DPSDK_INVESTIGATION_INCIDENT_LOG_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;										// Total Count
	DPSDK_INT32 iLogNum;											// Log number
	DPSDK_INVESTIGATION_INCIDENT_LOG_INFO* pLogList;				// Log list			
}DPSDK_INVESTIGATION_INCIDENT_LOG_LIST;

typedef struct
{
	DPSDK_INT32 iOpenIncidentCount;									// Open incident num
	DPSDK_INT32 iCloseIncidentCount;								// Close incident num
}DPSDK_INVESTIGATION_NUMBER_RESULT;

typedef struct
{
	// Using to Update or get mail template list
	DPSDK_CHAR szMailTemplateId[DPSDK_ID_LEN];						// Mail template ID
	DPSDK_INT32 iPurpose;
	DPSDK_CHAR szMailTemplateName[DPSDK_NAME_LEN_EX];				// Mail template name
	DPSDK_CHAR szMailSubject[DPSDK_ALARM_MAIL_SUBJECT_LEN];			// Email title
	DPSDK_INT32 iMailContentLen;									// Mail content length
	DPSDK_CHAR* pMailContentData;									// Mail content data
}DPSDK_MAIL_TEMPLATE_INFO;

typedef struct
{
	DPSDK_INT32 iNormalRecordQuotaStatus;							// 0 Disable, 1 Enable
	DPSDK_INT32 iNormalRecordTimeQuota;								// Unit is day
	DPSDK_INT32 iAlarmRecordQuotaStatus;							// 0 Disable, 1 Enable
	DPSDK_INT32 iAlarmRecordTimeQuota;								// Unit is day
	DPSDK_INT32 iMotionDetectRecordQuotaStatus;						// 0 Disable, 1 Enable
	DPSDK_INT32 iMotionDetectRecordTimeQuota;						// Unit is day
}DPSDK_CHANNEL_QUOTA_INFO;

typedef struct
{
	DPSDK_INT32 iMailTemplateNum;									// Mail template number
	DPSDK_MAIL_TEMPLATE_INFO* pMailTemplateList;					// Mail template list
}DPSDK_MAIL_TEMPLATE_LIST;

// License information
typedef struct
{
	DPSDK_INT32 iCode;												// Module code see DPSDK_MODULE_CODE
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];							// Module name
	DPSDK_INT32 iType;												// Module type: 0=basic, 1=value added, 2=Third party Plateform, 3=Event Plateform
	DPSDK_INT32 iCount;												// Authorized quantity (valid when module type is 0)
	DPSDK_INT32 iUsedCount;											// The Number has been used (valid when module type is 0)
	DPSDK_INT32 iStatus;											// Module status: 0=unauthorized, 1=authorized
}DPSDK_LICENSE_INFO;

// The list of license
typedef struct
{
	DPSDK_INT32 iVersion;											// Version: 0=free version, 1=official version, 2=trial version, 3=unauthorized version
	DPSDK_TIMET tExpireDate;                                        // Expiration time, timestamp (seconds)
	DPSDK_CHAR  szExpireRemainDays[DPSDK_NAME_LEN_EX];				// Expiration Remaining Days
	DPSDK_INT32 iExpired;											// Expired or not: 0=not Expired, 1=Expired
	DPSDK_TIMET tCareExpireTime;                                    // Care time, timestamp (seconds)
	DPSDK_CHAR  szCareRemainDays[DPSDK_NAME_LEN_EX];					// Care Remaining Days
	DPSDK_INT32 iHasCareInfo;										// Care or not: 0=not care, 1=care
	DPSDK_INT32 iHasKeyDetail;										// Key detail or not: 0=not care, 1=care
	DPSDK_INT32 iLicenseNum;										// The number of license
	DPSDK_LICENSE_INFO* pLicenseList;								// The list of license
}DPSDK_LICENSE_LIST;

typedef struct
{
	DPSDK_CHAR szLicenseKey[DPSDK_LICENSE_KEY_LEN];					// License key
}DPSDK_LICENSE_KEY;

typedef struct
{
	DPSDK_INT32 iLicenseKeyNum;										// License key number
	DPSDK_LICENSE_KEY* pLicenseKeyList;								// License key list
}DPSDK_LICENSE_KEY_LIST;

typedef struct
{
	DPSDK_INT32 iCode;												// Module code see DPSDK_MODULE_CODE
	DPSDK_CHAR szName[DPSDK_NAME_LEN_EX];							// Module name
	DPSDK_INT32 iType;												// Module type: 0-basic 1-value added
	DPSDK_INT32 iCount;												// Authorized quantity (valid when module type is 0)
	DPSDK_BOOL bBase;												// Whether or not base
}DPSDK_LICENSE_MODULE_INFO;

typedef struct
{
	DPSDK_CHAR szCareKey[DPSDK_NAME_LEN_EX];						// Care activation code
	DPSDK_INT32 iCareCount;											// Quantity of care resources
	DPSDK_TIMET tRenewalTime;										// care renewal time, timestamp (seconds)
	DPSDK_INT32 iCarePeriod;										// Care period (year)
}DPSDK_LICENSE_CARE_MODULE_INFO;

typedef struct
{
	DPSDK_CHAR szLicenseKey[DPSDK_LICENSE_KEY_LEN];					// License key
	DPSDK_INT32 iType;												// License key type
	DPSDK_TIMET tActiveTime;										// Active time
	DPSDK_INT32 iFree;												// Free or not, 0=not free, 1=free 
	DPSDK_INT32 iCareCount;											// care count
	DPSDK_TIMET tCareExpireTime;									// care expiration time, timestamp (seconds)
	DPSDK_INT32 iLicenseModuleNum;									// License module number
	DPSDK_LICENSE_MODULE_INFO* pLicenseList;						// The list of license 
	DPSDK_INT32 iLicenseCareNum;									// License care module number
	DPSDK_LICENSE_CARE_MODULE_INFO* pLicenseCareList;				// The list of license care
}DPSDK_LICENSE_DETAIL;

typedef struct
{
	DPSDK_INT32 iLicenseNum;										// License key number
	DPSDK_LICENSE_DETAIL* pLicenseDetailList;						// License detail list
}DPSDK_LICENSE_DETAIL_LIST;

typedef struct
{
	DPSDK_CHAR szLicenseKey[DPSDK_LICENSE_KEY_LEN];					// License key
	DPSDK_INT32 iOldLicenseKeyNum;									// Old license key number
	DPSDK_LICENSE_KEY* pOldLicenseKeyList;							// Old license key list
}DPSDK_LICENSE_UPGRADE_PARAM;

typedef struct
{
	DPSDK_CHAR szErrorDetail[DPSDK_CONTENT_LEN_2048];					// error detail
}DPSDK_LICENSE_ERROR_DESC;

typedef struct
{
	DPSDK_INT32			iCode;					    // Module code see DPSDK_MODULE_CODE
	DPSDK_CHAR			szResourceName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32			iBuyCount;
	DPSDK_INT32			iUsedCount;
}DPSDK_LICENSE_ACTIVERESULT_INFO;

typedef struct
{
	DPSDK_INT32 iResourceNum;
	DPSDK_LICENSE_ACTIVERESULT_INFO* pActiveResultInfo;
}DPSDK_LICENSE_ACTIVE_RESULT;

typedef struct
{
	DPSDK_CHAR* pLicenseModuleCodeList;
}DPSDK_GET_LICENSE_MODULE_USED_INFO_PARAM;

typedef struct
{
	DPSDK_CHAR		szAbnormalType[DPSDK_NAME_LEN];	//"双机热备异常类型：1=主机故障或者网络异常，2=主机授权异常，3=备机故障或网络异常，4=备机授权异常
	DPSDK_CHAR		szStandByRemainDays[DPSDK_NAME_LEN];	//备机授权剩余天数
}DPSDK_LICENSE_HOSTSPARE_ABNORMAL_NOTIFY;

typedef struct
{
	DPSDK_CHAR		szServerIP[DPSDK_IP_LEN];				// Server IP
	DPSDK_CHAR		szServerCode[DPSDK_SERVER_CODE_LEN];	// Server code
	DPSDK_CHAR		szServerName[DPSDK_NAME_LEN];			// Server name
	DPSDK_INT32		iUsedCount;								// Used count
}DPSDK_MODULE_USED_INFO;

typedef struct
{
	DPSDK_INT32					iCode;					    // Module code see DPSDK_MODULE_CODE
	DPSDK_CHAR					szName[DPSDK_NAME_LEN_EX];  // Module name
	DPSDK_INT32					iType;					    // Module type: 0-basic 1-value added
	DPSDK_INT32					iSingleCount;
	DPSDK_INT32					iTotalCount;
	DPSDK_INT32					iStatus;				    // Module status:0-unauthorized, 1-authorized
	DPSDK_INT32					iUsedListNum;
	DPSDK_MODULE_USED_INFO*		pUsedInfoList;
}DPSDK_LICENSE_MODULE_USED_INFO_RESULT;

typedef struct
{
	DPSDK_INT32									iResultNum;
	DPSDK_LICENSE_MODULE_USED_INFO_RESULT*		pResultList;
}DPSDK_LICENSE_MODULE_USED_INFO_RESULT_LIST;

typedef struct
{
	DPSDK_INT32					iCode;					    // Module code see DPSDK_MODULE_CODE
	DPSDK_CHAR					szName[DPSDK_NAME_LEN_EX];  // Module name
	DPSDK_INT32					iFreeCount;					// Free version count
	DPSDK_INT32					iUsedCount;					// Used count
}DPSDK_LICENSE_EXCEED_INFO;

typedef struct
{
	DPSDK_INT32									iExceedNum;
	DPSDK_LICENSE_EXCEED_INFO*					pExceedList;
}DPSDK_LICENSE_EXCEED_LIST;

/// OBMS
typedef struct
{
	DPSDK_INT32 iChannelIdNum;										// Channel ID number
	DPSDK_CHANNEL_ID* pChannelIdList;								// Channel ID list
	DPSDK_INT32 iStatus;											// State, 0 = recovery, 1 = normally closed, 2 = normally open
}DPSDK_OBMS_ACS_DOOR_CONTROL_PARAM;

//Areas Org
typedef struct
{

	DPSDK_CHAR szAreasParentCode[DPSDK_PERSON_ID_LEN];			// Area parent code
	DPSDK_CHAR szAreasOrgCode[DPSDK_PERSON_ID_LEN];				// Area org code
	DPSDK_CHAR szAreasOrgName[DPSDK_NAME_LEN];					// Area org name	
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_CHAR szAreaIcon[DPSDK_URL_LEN];						// Area icon
	DPSDK_CHAR szGlobalStatus[DPSDK_AREA_POINT_LEN];			// Global Status
	DPSDK_CHAR szParentMapId[DPSDK_PERSON_ID_LEN];			// Area parent code
	DPSDK_CHAR szMapId[DPSDK_PERSON_ID_LEN];				// Area org code
	DPSDK_CHAR szParentMapGpsX[DPSDK_NAME_LEN];					//Area X
	DPSDK_CHAR szParentMapGpsY[DPSDK_NAME_LEN];				//Area Y
	DPSDK_INT32 iRolesNum;
	DPSDK_RESROLE_DETAIL_INFO* pRolesListInfo;
}DPSDK_AREAS_ORG;

typedef struct
{
	DPSDK_CHAR szAreaId[DPSDK_USER_ID_LEN];		    // Area ID
}DPSDK_AREAS_ID;

typedef struct
{
	DPSDK_INT32 iAreaNum;						// Area quantity
	DPSDK_AREAS_ID* struAreaIdList;				// Area ID list
}DPSDK_AREAS_LIST;

typedef struct DPSDK_AREA_ORG_TREE_INFO_t
{
	DPSDK_CHAR szAreaParentCode[DPSDK_PERSON_ID_LEN];		// parent code
	DPSDK_CHAR szAreaCode[DPSDK_PERSON_ID_LEN];		// Area  code
	DPSDK_CHAR szAreaName[DPSDK_NAME_LEN];			// Area  name	
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_CHAR szAreaIcon[DPSDK_URL_LEN];		    // Area icon
	DPSDK_CHAR szAreaMapID[DPSDK_MAP_ID_LEN];
	DPSDK_CHAR szGlobalStatus[DPSDK_AREA_POINT_LEN];// Global Status
	DPSDK_INT32 iAuthority;
	DPSDK_INT32 iChildNum;							// Child organization node quantity						
	DPSDK_AREA_ORG_TREE_INFO_t* pSubAreaTreeList;	// Child organization
}DPSDK_AREA_ORG_TREE_INFO;

//Access Point List
typedef struct
{
	DPSDK_CHAR szPointId[DPSDK_USER_ID_LEN];		    // Point ID
}DPSDK_POINT_ID;

typedef struct
{
	DPSDK_INT32 iPointNum;							  // Point quantity
	DPSDK_POINT_ID* pPointIdList;					  // Point ID list
}DPSDK_POINT_ID_LIST;

typedef struct
{
	DPSDK_INT32 iRelationObjType;					 // 1=Door, 2=Lift,3=Video,4=VTO
	DPSDK_CHAR szRelationObjCode[DPSDK_ID_LEN];		// Relation Obj code
	DPSDK_CHAR szRelationObjName[DPSDK_NAME_LEN];   //Relation Obj name
}DPSDK_POINT_RELATION;

typedef struct
{
	DPSDK_CHAR szACSPointID[DPSDK_ID_LEN];		   // Access Point ID
	DPSDK_CHAR szACSPointName[DPSDK_CONTENT_LEN_EX];	   // Access Point  name
	DPSDK_CHAR szAreaCode[DPSDK_ID_LEN];	   // Access Point  name
	DPSDK_CHAR szAreaName[DPSDK_NAME_LEN];			// Area  name
	DPSDK_CHAR szAreaPath[DPSDK_URL_LEN];			// Area  Path
	DPSDK_INT32 iPointType;							// 1=Door, 2=Lift
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_CHAR szGpsX[DPSDK_TZ_GPS_LEN];
	DPSDK_CHAR szGpsY[DPSDK_TZ_GPS_LEN];
	DPSDK_CHAR szAreaMapID[DPSDK_MAP_ID_LEN];
	DPSDK_BOOL bIsBoundary;
	DPSDK_CHAR szGlobalStatus[DPSDK_AREA_POINT_LEN];
	DPSDK_INT32 iRelationNum;
	DPSDK_POINT_RELATION* pPointRelation;
}DPSDK_ACCESS_POINT;

typedef struct
{
	DPSDK_INT32 iTotalCount;					// Total Points
	DPSDK_INT32 iPointNum;						 // ACS point quantity
	DPSDK_ACCESS_POINT* pAccessPointList;
}DPSDK_AREA_POINT_LIST;

typedef struct
{
	DPSDK_UINT32 uiPage;
	DPSDK_UINT32 uiPageSize;
	DPSDK_CHAR szAreaCode[DPSDK_PERSON_ID_LEN];
	DPSDK_BOOL bContainChild;
	DPSDK_CHAR	szBoundary[DPSDK_NAME_LEN];
	DPSDK_CHAR	szPointName[DPSDK_CONTENT_LEN_2048];
	DPSDK_CHAR	szPointType[DPSDK_NAME_LEN];
}DPSDK_AREA_POINT_PARAM;

typedef struct
{
	DPSDK_CHAR szGlobalStatus[DPSDK_AREA_POINT_LEN];
	DPSDK_CHAR szAreaCode[DPSDK_PERSON_ID_LEN];			// Area  code
}DPSDK_POINT_GLOBAL_PARAM;

// Point code
typedef struct
{
	DPSDK_CHAR szPointId[DPSDK_AREA_POINT_LEN];							// Point id
}DPSDK_POINTS_ID;

typedef struct
{
	int					iPointNum;
	DPSDK_POINTS_ID*	pPointIDList;
}DPSDK_POINT_LIST_STATUS_PARAM;

//Person org
typedef struct
{
	DPSDK_CHAR szParentCode[DPSDK_PERSON_ID_LEN];		// parent code
	DPSDK_CHAR szOrgCode[DPSDK_PERSON_ID_LEN];		// Person org code
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];			// Person org name	
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_INT32 iSourceType;										// Source type：1=PlatForm, 3=Third Party
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];
	DPSDK_INT32 iRolesNum;
	DPSDK_RESROLE_DETAIL_INFO* pRolesListInfo;
}DPSDK_PERSON_ORG;

typedef struct DPSDK_PERSON_ORG_TREE_INFO_t
{
	DPSDK_CHAR szParentCode[DPSDK_PERSON_ID_LEN];		// parent code
	DPSDK_CHAR szOrgCode[DPSDK_PERSON_ID_LEN];		// Person org code
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];			// Person org name	
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_INT32 iAuthority;
	DPSDK_INT32 iSourceType;										// Source type：1=PlatForm, 3=Third Party
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];
	DPSDK_INT32 iChildNum;							// Child organization node quantity						
	DPSDK_PERSON_ORG_TREE_INFO_t* pSubPersonOrgTreeList;
}DPSDK_PERSON_ORG_TREE_INFO;

typedef struct
{
	DPSDK_CHAR szParentOrgCode[DPSDK_PERSON_ID_LEN];	// parent code
	DPSDK_CHAR szParentOrgName[DPSDK_NAME_LEN];			// parent name	
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];				// Person and Vehicleorg org name
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_INT32 iSourceType;										// Source type：1=PlatForm, 3=Third Party
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];					// 
	DPSDK_INT32 iRolesNum;
	DPSDK_RESROLE_DETAIL_INFO* pRolesListInfo;
}DPSDK_PERSON_VEHICLE_ORG_INFO;

//Person Info
typedef struct
{
	DPSDK_INT32 iImageFacePicturesDataLen;								// Image data size
	DPSDK_CHAR* pImageFacePicturesData;									// Face image data(base64)
}DPSDK_PERSON_FACE_IMAGE_INFO;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// It cannot repeat verification return error. Decide person ID and room ID according to type
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];					// First name
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN_EX];					//  Last name. Pay attention to client translation,and deefine according to European and American habit.
	DPSDK_INT32 iGender;
	DPSDK_CHAR szOrgCode[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];

	DPSDK_INT32 iImageFaceNum;
	DPSDK_PERSON_FACE_IMAGE_INFO* pImageFaceList;
	DPSDK_INT32 iSource;
}DPSDK_PERSON_BASE_INFO;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// It cannot repeat verification return error. Decide person ID and room ID according to type
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];					// First name
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN_EX];					//  Last name. Pay attention to client translation,and deefine according to European and American habit.
	DPSDK_INT32 iGender;
	DPSDK_CHAR szOrgCode[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];

	DPSDK_INT32 iOrgNum;										// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;							// Person group Info

	DPSDK_INT32 iImageFaceNum;
	DPSDK_FACEIMAGE_INFO* pImageFaceList;
	DPSDK_INT32 iSource;
}DPSDK_GET_PERSON_BASE_INFO;

typedef struct
{
	DPSDK_CHAR szNickName[DPSDK_NAME_LEN];
	DPSDK_CHAR szAddress[DPSDK_USER_REMARK_LEN];
	DPSDK_INT32 iIdType;
	DPSDK_CHAR szIdNum[DPSDK_CERTIFICATE_NUMBER_LEN_EX];				//idNo
																		//DPSDK_INT32 iMaritalStatus;
	DPSDK_CHAR szNationalityId[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR szBirthday[DPSDK_BIRTHDAY_LEN];				// Birthday
															//DPSDK_INT32 iDegree;									// Refer to DPSDK_DEGREE_TYPE
	DPSDK_CHAR  szCompanyName[DPSDK_NAME_LEN];              // CompanyName
	DPSDK_CHAR szPosition[DPSDK_NAME_LEN];					// position			
}DPSDK_PERSON_EXTENSION_INFO;

typedef struct
{
	DPSDK_INT32 iHouseHolder;
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];						//buildingId#unitId#roomId
															/*
															DPSDK_CHAR szStageId[DPSDK_TYPE_LEN];
															DPSDK_CHAR szBuildingId[DPSDK_TYPE_LEN];
															DPSDK_CHAR szUnitId[DPSDK_TYPE_LEN];
															DPSDK_CHAR szRoomId[DPSDK_ID_LEN];						// Room ID
															*/
}DPSDK_PERSON_RESIDENT_INFO;

typedef struct
{
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szCombinationPassword[DPSDK_PWD_LEN];		//Combination password (get person and add person use column)
	DPSDK_CHAR szUnlockingPassword[DPSDK_PWD_LEN];			//Supper unlocking password (get person and add person use column)

	DPSDK_BOOL bExpired;									// Is expired (get person use column)
	DPSDK_BOOL bCombinationPassword;						//haveCombinationPassword (get person use column)	combinationPasswordChanged (update person use column)
	DPSDK_BOOL bUnlockingPassword;							//haveUnlockingPassword (get person use column)		unlockingPasswordChanged (update person use column)

	DPSDK_INT32 iCardNum;									// Card quantity
	DPSDK_CARD_DATA* pCardDataList;								// Card no. category
	DPSDK_INT32 iFingerPrintsNum;							// Fingerprint quantity
	DPSDK_FINGER_PRINTS_INFO* pFingerPrintsList;			// Fingerprint info list
}DPSDK_PERSON_AUTHENTICATION_INFO;

typedef struct
{
	DPSDK_INT32	iAccessType;
	DPSDK_INT32 iGuestUseTimes;
	DPSDK_INT32 iAllowLogin;
	DPSDK_BOOL bEnableAccessGroup;
	DPSDK_INT32 iAccessGroupInfoNum;
	DPSDK_BASE_ID_NAME_INFO* pAccessGroupList;
}DPSDK_PERSON_ACCESS_INFO;

typedef struct
{
	DPSDK_BOOL bEnableLiftGroup;
	DPSDK_INT32 iLiftGroupNum;
	DPSDK_BASE_ID_NAME_INFO* pLiftGroups;				// Elevator channel list
}DPSDK_PERSON_LIFT_INFO;

typedef struct
{
	DPSDK_BOOL bEnableFaceComparisonGroup;
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_CHAR szName[DPSDK_NAME_LEN];
}DPSDK_PERSON_FACECOMPARISON_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_CHAR szPlateNo[DPSDK_CARD_NO_LEN];
	DPSDK_INT32 iVehicleColor;
	DPSDK_INT32 iVehicleBrand;
	DPSDK_CHAR	szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_INT32 iCarGroupNum;
	DPSDK_BASE_ID_NAME_INFO* pCarGroupList;	//entranceGroups		add person and update person only use entranceGroupIds
	DPSDK_INT32 iSurveyLongTerm;			//entranceLongTerm
	DPSDK_TIMET	tStartTime;					//entranceStartTime
	DPSDK_TIMET tEndTime;					//entranceEndTime
}DPSDK_PERSON_VEHICLES_INFO;

typedef struct
{
	DPSDK_INT32 iParkingSpotsEnable;	//enableParkingSpace
	DPSDK_INT32 iParkingSpotsAmount;	//parkingSpaceNum
	DPSDK_BOOL bEnableEntraceGroup;
	DPSDK_INT32 iVehiclesInfoNum;
	DPSDK_PERSON_VEHICLES_INFO* pVehiclesList;
}DPSDK_PERSON_ENTRYEXIT_INFO;	//entranceInfo

typedef struct
{
	DPSDK_INT32 iFieldId;						// Field id
	DPSDK_CHAR szFieldName[DPSDK_NAME_LEN];		// Field Name
	DPSDK_CHAR szFieldValue[DPSDK_NAME_LEN_EX]; // Field Value
}DPSDK_PERSON_USERDEFINE_INFO;

typedef struct
{
	DPSDK_INT32 iUserDefineInfoNum;
	DPSDK_PERSON_USERDEFINE_INFO* pUserDefineList;
}DPSDK_PERSON_USERDEFINE_LIST;

typedef struct
{
	DPSDK_PERSON_BASE_INFO baseInfo;
	DPSDK_PERSON_EXTENSION_INFO extensionInfo;
	DPSDK_PERSON_RESIDENT_INFO residentInfo;
	DPSDK_PERSON_AUTHENTICATION_INFO authenticationInfo;
	DPSDK_PERSON_ACCESS_INFO accessInfo;
	DPSDK_PERSON_LIFT_INFO liftInfo;
	DPSDK_PERSON_FACECOMPARISON_INFO facecomparisonInfo;
	DPSDK_PERSON_ENTRYEXIT_INFO entryexitInfo;
}DPSDK_BATCH_PERSON_INFO;

typedef struct
{
	DPSDK_GET_PERSON_BASE_INFO baseInfo;
	DPSDK_PERSON_EXTENSION_INFO extensionInfo;
	DPSDK_PERSON_USERDEFINE_LIST userDefineInfo;
	DPSDK_PERSON_RESIDENT_INFO residentInfo;
	DPSDK_PERSON_AUTHENTICATION_INFO authenticationInfo;
	DPSDK_PERSON_ACCESS_INFO accessInfo;
	DPSDK_PERSON_LIFT_INFO liftInfo;
	DPSDK_PERSON_FACECOMPARISON_INFO facecomparisonInfo;
	DPSDK_PERSON_ENTRYEXIT_INFO entryexitInfo;
}DPSDK_GET_PERSON_RESULT;

typedef struct
{
	DPSDK_CHAR szCardNum[DPSDK_CARD_NO_LEN];
}DPSDK_PERSON_CARDNO_INFO;

typedef struct
{
	DPSDK_CHAR szPlateNo[DPSDK_CARD_NO_LEN];
}DPSDK_PERSON_PLATENO_INFO;

typedef struct
{
	DPSDK_CHAR szOverstepPlateNo[DPSDK_CARD_NO_LEN];
}DPSDK_PERSON_OVER_PLATENO_INFO;

typedef struct
{
	DPSDK_INT32 iCardNoNum;
	DPSDK_PERSON_CARDNO_INFO* pCardNoList;
	DPSDK_INT32 iPlateNoNum;
	DPSDK_PERSON_PLATENO_INFO* pPlateNoList;
	DPSDK_INT32 iOverstepPlateNoNum;
	DPSDK_PERSON_OVER_PLATENO_INFO* pOverstepPlateNoList;
	DPSDK_INT32 ilimitPersonCount;
}DPSDK_ADD_PERSON_RESULT;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR szOrgCode[DPSDK_ID_LEN];
	DPSDK_INT32 iRelateSubOrg;					//containChild
	DPSDK_CHAR szKey[DPSDK_KEY_WORD_LEN];		//keyword
	DPSDK_CHAR szSipId[DPSDK_KEY_WORD_LEN];		//sipid
	DPSDK_CHAR szAccessGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR szLiftGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];		// card no keyword
	DPSDK_INT32 iFilterAuthorityOrg;			// whether to filter organization permissions: 0 No, 1 Yes, Default 1, Optional
	DPSDK_BASE_ID_NAME_INFO struPersonInfo;		// person id and person name
}DPSDK_PERSON_LIST_PARAM;

typedef struct
{
	DPSDK_CHAR szPlateNo[DPSDK_CARD_NO_LEN];
	DPSDK_INT32 iCarGroupNum;
	DPSDK_BASE_ID_NAME_INFO* pCarGroupList;  //entranceGroups		
}DPSDK_PERSON_LIST_VEHICLES_INFO;

typedef struct
{
	//baseinfo
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// It cannot repeat verification return error. Decide person ID and room ID according to type
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];					// First name
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN_EX];					//  Last name. Pay attention to client translation,and deefine according to European and American habit.
	DPSDK_CHAR szOrgCode[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];
	DPSDK_CHAR szFacePicture[DPSDK_URL_LEN_EX];
	DPSDK_INT32 iOrgNum;										// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;							// Person group Info

																//authenticationInfo
	DPSDK_INT32 iIsExpired;
	DPSDK_INT32 iCardNum;
	DPSDK_INT32 iFingerPrintNum;
	DPSDK_INT32 iPasswordNum;
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];						// card no

																//residentInfo
	DPSDK_INT32 iHouseholder;
	DPSDK_CHAR szSipId[DPSDK_MEMO_LEN];

	//accessInfos
	DPSDK_INT32 iAccessType;
	DPSDK_INT32 iGuestUseTimes;
	DPSDK_INT32 iAllowLogin;
	DPSDK_BOOL  bEnableAccessGroup;
	DPSDK_INT32 iAccessGroupInfoNum;
	DPSDK_BASE_ID_NAME_INFO* pAccessGroupList;

	//faceComparisonInfo
	DPSDK_BASE_ID_NAME_INFO struFaceComparisonInfo;

	//entranceInfo
	DPSDK_BOOL bEnableParkingSpace;
	DPSDK_INT32 iParkingSpotsAmount;	//parkingSpaceNum
	DPSDK_INT32 iVehiclesNum;
	DPSDK_PERSON_LIST_VEHICLES_INFO* pVehiclesList;
	DPSDK_INT32 iLiftControlNum;
	DPSDK_BASE_ID_NAME_INFO* pLiftControlList;
}DPSDK_PERSON_LIST_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_PERSON_LIST_INFO* pPageData;
}DPSDK_PERSON_LIST_RESULT;

typedef struct
{
	DPSDK_INT32 iPersonIdsNum;
	DPSDK_BASE_ID_INFO* pPersonIdsList;
}DPSDK_BATCH_DELPERSONS_PARAM;

typedef struct
{
	DPSDK_CHAR szOrgCode[DPSDK_ID_LEN];
	DPSDK_BOOL bContainChild;
}DPSDK_DELPERSONSBYGROUP_PARAM;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR szOrgCode[DPSDK_ID_LEN];
	DPSDK_CHAR szKey[DPSDK_KEY_WORD_LEN];					//keyword
	DPSDK_CHAR szFaceComparisonGroupId[DPSDK_ID_LEN];
	DPSDK_INT32 iFaceComparisonIssueResult;

	DPSDK_CHAR szDeviceCode[DPSDK_ID_LEN];					// The equipment code associated with personnel is used when the anti submarine module is associated with equipment
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];					// The channel code associated with personnel, which is used when the advanced function of access control filters and distributes the successful personnel 
	DPSDK_CHAR szAccessTypes[DPSDK_ID_LEN];					// Personnel Type: -1=all，0=normal，1=blocklist，2=visitor，3=patrol，4=VIP，When not all, use commas to separate multiple items" 
	DPSDK_CHAR szIsMultiCardGroupCfg[DPSDK_ID_LEN];			// Config MultiCardGroup:0=No, 1=Yes
	DPSDK_CHAR szMultiCardGroupId[DPSDK_ID_LEN];			// MultiCardGroup id
	DPSDK_INT32 iWithMainOrg;								// Whether to query by personnel main group: 0=No, 1=Yes, default 0
}DPSDK_REDUCE_PERSON_LIST_PARAM;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];				// It cannot repeat verification return error. Decide person ID and room ID according to type
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN_EX];				// First name
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN_EX];				//  Last name. Pay attention to client translation,and deefine according to European and American habit.
	DPSDK_CHAR szOrgCode[DPSDK_ID_LEN];
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];
	DPSDK_CHAR szFacePicture[DPSDK_URL_LEN];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_BOOL bEnableParkingSpace;
	DPSDK_INT32 iFaceIssueSuc;								// face result，-1=all，0=fail，1=success
	DPSDK_INT32	iParkingSpaceNum;
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];						// buildings # unit # room no，1#1#1001
	DPSDK_INT32 iAccessType;								// access type，0=normal，1=black，2=visitor，3=patrol，4=VIP，5=other；default0
	DPSDK_CHAR	szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_INT32 iOrgNum;									// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;						// Person group Info
}DPSDK_REDUCE_PERSON_BASEINFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPersonBaseInfoNum;
	DPSDK_REDUCE_PERSON_BASEINFO* pPersonBaseInfoList;
}DPSDK_REDUCE_PERSON_LIST_RESULT;

// face capture or recognition record
typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// record id

}DPSDK_FACE_DELETE_RERCORD_INFO;

typedef struct
{
	DPSDK_INT32 iRecordsNum;
	DPSDK_FACE_DELETE_RERCORD_INFO* pRecordsList;
}DPSDK_FACE_DELETE_RERCORD_PARAM;

//FaceComparisonGroup Authorize
typedef struct
{
	DPSDK_CHAR szFaceComparisonGroupId[DPSDK_ID_LEN];		// not use
	DPSDK_INT32 iPersonIdNum;
	DPSDK_BASE_ID_INFO* pPersonIdList;
	DPSDK_INT32 iPersonOrgCodeNum;
	DPSDK_BASE_ID_INFO* pPersonOrgCodeList;
}DPSDK_FACECOMPARISONGROUP_AUTHORIZE;

typedef struct
{
	DPSDK_INT32 iTotalPersonCount;
	DPSDK_INT32	iFailedPersonCount;
}DPSDK_FACECOMPARISONGROUP_AUTHORIZE_RESULT;

typedef struct
{
	DPSDK_CHAR szFaceComparisonGroupId[DPSDK_ID_LEN];
	DPSDK_INT32 iPersonIdNum;
	DPSDK_BASE_ID_INFO* pPersonIdList;
}DPSDK_FACECOMPARISONGROUP_MOVEPERSON_PARAM;


typedef struct
{
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;	// channel id 
	DPSDK_TIMET tBeginTime;					// start time,  second
	DPSDK_TIMET	tEndTime;					// end time

	DPSDK_BASE_ID_NAME_INFO struPersonInfo;	// person id and person name

	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_INT32 iCurrentPage;
	DPSDK_TIMET	tSplitTime;					// page up: the  first record time，page down: the last record time
	DPSDK_CHAR	szSplitId[DPSDK_ID_LEN];	// page up: the fitst record ID，page down: the lase record ID
	DPSDK_CHAR	szSequence[DPSDK_SEQUENCE_LEN];
}DPSDK_FACE_GET_PAGE_RECOGNITION_RECORDS_BY_FEATURE_PARAM;

typedef struct
{
	DPSDK_CHAR  szFacePicUrl[DPSDK_URL_LEN];
	DPSDK_CHAR	szPersonTypeName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szPersonTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR	szRegion[DPSDK_NAME_LEN];
	DPSDK_CHAR  szIdNo[DPSDK_ID_LEN];
	DPSDK_CHAR	szRemark[DPSDK_MEMO_LEN_LONG];
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_BASE_ID_NAME_INFO struPersonInfo;
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;
	DPSDK_TIMET tCaptureTime;
	DPSDK_CHAR szFaceImageUrl[DPSDK_URL_LEN];				// face image，example：https://10.10.10.10:443/aaa.jpg
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN];					// picture，example：https://10.10.10.10:443/bbb.jpg
	DPSDK_FLOAT	fSimilarity;								// 
	DPSDK_FLOAT	fPersonSimilarity;							// 
	DPSDK_CHAR szAge[DPSDK_NUM_LEN];						// age
	DPSDK_INT32 iGender;									// sex，0=not distinguish，1=man，2=woman
	DPSDK_BOOL bFringe;										// fringe，0=no，1=yes
	DPSDK_INT32 iEye;										// eye，1=not distinguish，2=close eye，3=open eye
	DPSDK_INT32	iMouth;										// mouth，1=not distinguish，2=close mouth，3=open mouth
	DPSDK_INT32	iMask;										// mask，0=don't know(SDK)，1=not distinguish，2=no，3=yes
	DPSDK_INT32	iBeard;										// beard，0=don't know(SDK)，1=not distinguish，2=no，3=yes
	DPSDK_INT32	iGlasses;
	DPSDK_INT32	iEmotion;
	DPSDK_INT32 iDataSource;								// Data source，1=deivce 2:platform
}DPSDK_FACE_FEATURE_BASE_INFO;

typedef struct
{

	DPSDK_BASE_ID_NAME_INFO struPersonTypeInfo;
	DPSDK_CHAR szCertNo[DPSDK_ID_LEN];
	DPSDK_CHAR szPersonFaceImageUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szPersonGender[DPSDK_NUM_LEN];
	DPSDK_CHAR szPersonBirthday[DPSDK_BIRTHDAY_LEN];
	DPSDK_CHAR szPersonNationality[DPSDK_NATIONALITRY_LEN];
	DPSDK_CHAR szMemo[DPSDK_MEMO_LEN];
	DPSDK_CHAR szRepositoryId[DPSDK_DB_ID_LEN];
	DPSDK_CHAR szRepositoryName[DPSDK_PERSONTYPE_NAME_LEN];

	DPSDK_FACE_FEATURE_BASE_INFO struFaceFeatureBaseInfo;
}DPSDK_FACE_FEATURE_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;				//

	DPSDK_INT32 iPageDataNum;
	DPSDK_FACE_FEATURE_INFO* pPageDataList;
}DPSDK_FACE_GET_PAGE_RECOGNITION_RECORDS_BY_FEATURE_RESULT;


typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
	DPSDK_TIMET	tStartTime;
	DPSDK_TIMET	tEndTime;
	DPSDK_CHAR szPlateNoMatchMode[DPSDK_ENUM_LEN];
	DPSDK_INT32 iPlateNoNum;
	DPSDK_PLATE_NO* pPlateNoList;

}DPSDK_ENTRANCE_GET_PAGE_VEHICLE_CAPTURE_RECORDS_PARAM;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// record id
}DPSDK_VEHICLE_DELETE_RERCORD_INFO;

typedef struct
{
	DPSDK_INT32 iRecordsNum;
	DPSDK_VEHICLE_DELETE_RERCORD_INFO* pRecordsList;
}DPSDK_VEHICLE_DELETE_RERCORD_PARAM;

typedef struct
{
	DPSDK_INT32 iId;
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;
	DPSDK_TIMET tCaptureTime;
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szCapturePicture[DPSDK_URL_LEN];
	DPSDK_BASE_ID_NAME_INFO struParkingLotInfo;
	DPSDK_INT32 iTravelDirect;								//Travel direct. 8=in，9=out
	DPSDK_CHAR szTravelDirectName[DPSDK_NAME_LEN];

}DPSDK_ENTRANCE_VEHICLE_CAPTURE_RECORDS_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;

	DPSDK_INT32 iPageDataNum;
	DPSDK_ENTRANCE_VEHICLE_CAPTURE_RECORDS_INFO* pPageDataList;

}DPSDK_ENTRANCE_GET_PAGE_VEHICLE_CAPTURE_RECORDS_RESULT;

typedef struct
{
	DPSDK_CHAR szEntranceGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szCompanyName[DPSDK_NAME_LEN];
	DPSDK_CHAR szOrgCode[DPSDK_ID_LEN];
	DPSDK_CHAR szSequence[DPSDK_SEQUENCE_LEN];
	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_INT32	iVehicleType;
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_BOOL bPlateNoMatchMode;								// 0 : 	Fuzzy matching, 1 :Exact matching
	DPSDK_INT32 iVehicleColor;
	DPSDK_INT32 iVehicleBrand;
	DPSDK_INT32 iVehicleModel;
	DPSDK_CHAR szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_INT32 iExportRange;							// export range：0=all，1=select record，2=custom range
	DPSDK_INT32 iDataType;								// export data type：0=record，1=record and picture
	DPSDK_CHAR szExportType[DPSDK_NAME_LEN];			// export type，zip
	DPSDK_INT32 iPlateNosNum;
	DPSDK_PLATE_NO* pPlateNosList;
	DPSDK_INT32 iSelectIdsNum;
	DPSDK_BASE_ID_INFO* pSelectIdsList;					// 
	DPSDK_INT32 iDisplayTimezoneOffset;					// display time zone：0=no，1=yes	
}DPSDK_FUSION_EXPORT_VEHICLE_CAPTURE_RECORDS_PARAM;

typedef struct
{
	DPSDK_CHAR  szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iVehicleBrand;
	DPSDK_INT32 iVehicleColor;
	DPSDK_CHAR	szRecordID[DPSDK_ID_LEN];
}DPSDK_UPDATE_ENTRANCE_VEHICLE_CAPTUR_ERECORD_PARAM;


typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_TIMET	tSplitTime;
	DPSDK_CHAR	szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32	iCurrentPage;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
	DPSDK_TIMET	tStartTime;
	DPSDK_TIMET	tEndTime;
	DPSDK_CHAR szVehicleColor[DPSDK_ENUM_LEN];
	DPSDK_CHAR szVehicleBrand[DPSDK_ENUM_LEN];
	DPSDK_CHAR szVehicleModel[DPSDK_ENUM_LEN];
	DPSDK_INT32 iPlateNoMatchMode;
	DPSDK_CHAR	szSequence[DPSDK_SEQUENCE_LEN];					// interface sequence
	DPSDK_INT32 iPlateNoNum;
	DPSDK_PLATE_NO* pPlateNoList;
	DPSDK_INT32 iInVehicleGroup;
}DPSDK_FUSION_GET_PAGE_VEHICLE_CAPTURE_RECORDS_PARAM;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;
	DPSDK_TIMET tCaptureTime;
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szCapturePicture[DPSDK_URL_LEN];
	DPSDK_INT32 iVehicleBrand;
	DPSDK_INT32 iVehicleColor;
	DPSDK_INT32 iVehicleModel;
	DPSDK_INT32 iInVehicleGroup;							// in vehicle group：0=no，1=yes
	DPSDK_CHAR szIssuePlace[DPSDK_PLATE_ISSUE_PLACE_LEN];		// Issue place
	DPSDK_INT32 iPlateNoLength;//Plate no. length : 0-none,1-short,2-medium,3-long
	DPSDK_CHAR szPlateNoAreaCode[DPSDK_PLATE_AREA_CODE_LEN]; // Plate no. area code
	DPSDK_CHAR szExtPlateNo[DPSDK_PLATE_NUMBER_LEN];//Extended plate no.
	DPSDK_INT32 iPlateType;//License plate type
	DPSDK_CHAR szPlateTypeName[DPSDK_PLATE_TYPE_NAME_LEN];//License plate type name
}DPSDK_FUSION_VEHICLE_CAPTURE_RECORDS_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;

	DPSDK_INT32 iPageDataNum;
	DPSDK_FUSION_VEHICLE_CAPTURE_RECORDS_INFO* pPageDataList;
}DPSDK_FUSION_GET_PAGE_VEHICLE_CAPTURE_RECORDS_RESULT;

//

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_INT32 iDeviceCodeNum;
	DPSDK_DEVICE_CODE* pDeviceCodeList;
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET	tEndTime;
	DPSDK_TIMET	tSplitTime;
	DPSDK_CHAR	szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32	iCurrentPage;
	DPSDK_CHAR	szSequence[DPSDK_SEQUENCE_LEN];
}DPSDK_GET_PAGE_MPT_RECORD_PARAM;

typedef struct
{
	DPSDK_CHAR	szRecordId[DPSDK_ID_LEN];
	DPSDK_CHAR	szSourceId[DPSDK_ID_LEN];
	DPSDK_CHAR	szDeviceCode[DPSDK_DEVICE_CODE_LEN];
	DPSDK_CHAR	szDeviceName[DPSDK_DEVICE_NAME_LEN];
	DPSDK_CHAR	szUserId[DPSDK_ID_LEN];
	DPSDK_CHAR  szUserName[DPSDK_NAME_LEN];
	DPSDK_CHAR  szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR  szSSId[DPSDK_ID_LEN];
	DPSDK_CHAR  szEecDeviceCode[DPSDK_DEVICE_CODE_LEN];
	DPSDK_CHAR  szOrgCode[DPSDK_ID_LEN];
	DPSDK_CHAR  szOrgName[DPSDK_NAME_LEN];
	DPSDK_INT32 iFileStatus;								//File Status 1:unrecord 1:hasrecord
	DPSDK_INT32 iFileLength;
	DPSDK_INT32 iFileType;									//0=Unknown，1=Video，2=Audio，3=Picture
	DPSDK_INT32 iFileTimeLength;
	DPSDK_TIMET	tRecordTime;
	DPSDK_INT32 iSourceType;								//Source type: 1:MPT 2:EEC设备
}DPSDK_GET_PAGE_MPT_RECORD_INFO;

typedef struct
{
	DPSDK_INT32 iTtotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_GET_PAGE_MPT_RECORD_INFO* pPageDataList;
}DPSDK_GET_PAGE_MPT_RECORDS_RESULT;

typedef struct
{
	DPSDK_INT32 iMPTPicLen;									// MPT picture length
	DPSDK_CHAR* pMPTPicData;								// MPT picture data
}DPSDK_MPT_PIC_DATA;

typedef struct
{
	DPSDK_INT32 iDeviceCodeNum;
	DPSDK_DEVICE_CODE* pDeviceCodeList;
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_INT32 iExportRange;							// export range：0=all，1=select record，2=custom range
	DPSDK_INT32 iDataType;								// export data type：0=record，1=record and picture
	DPSDK_CHAR szExportType[DPSDK_NAME_LEN];			// export type，zip
	DPSDK_CHAR szSequence[DPSDK_SEQUENCE_LEN];
	DPSDK_INT32 iSelectIdsNum;
	DPSDK_BASE_ID_INFO* pSelectIdsList;					// 
	DPSDK_INT32 iDisplayTimezoneOffset;					// display time zone：0=no，1=yes	
}DPSDK_EXPORT_MPT_RECORDS_PARAM;

//
typedef struct
{
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
	DPSDK_INT32 iFaceImageDataLen;
	DPSDK_CHAR* pFaceImageData;								// face image(base64)
	DPSDK_INT32 iSimilarity;
	DPSDK_TIMET tBeginTime;
	DPSDK_TIMET tEndTime;
}DPSDK_FACE_START_SEARCH_DETECTION_RECORDS_BY_PICTURE_PARAM;


typedef struct
{
	DPSDK_CHAR szSession[DPSDK_SESSION_LEN];

}DPSDK_FACE_STOP_SEARCH_DETECTION_RECORDS_BY_PICTURE_PARAM;

typedef struct
{
	DPSDK_INT32 iImageDataLen;
	DPSDK_CHAR* pImageData;								//image(base64)
}DPSDK_ANALYZE_IMAGET_TARGET_PARAM;

typedef struct
{
	DPSDK_INT32	iObjectType;										// object type： 1=face, 2=body, 3= vechicle
	DPSDK_INT32	iTopLeftX;											// top left x
	DPSDK_INT32	iTopLeftY;											// top left y
	DPSDK_INT32	iBottomRightX;										// bottom right x
	DPSDK_INT32	iBottomRightY;										// bottom right y
}DPSDK_IMAGE_TARGETOBJECT_INFO;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_IMAGE_TARGETOBJECT_INFO* pResultList;
}DPSDK_GET_IMAGE_TARGETOBJECT_RESULT;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_ORDER_INFO struOrderInfo;

}DPSDK_FACE_GET_PAGE_DETECTION_RECORDS_BY_SESSION_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;

	DPSDK_INT32 iPageDataNum;
	DPSDK_FACE_FEATURE_BASE_INFO* pPageDataList;
}DPSDK_FACE_GET_PAGE_DETECTION_RECORDS_BY_SESSION_RESULT;

typedef struct
{
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
	DPSDK_TIMET tBeginTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szPlateNo[DPSDK_ID_LEN];
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_INT32 iCurrentPage;
	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_TIMET tSplitTime;
	DPSDK_BOOL bPlateNoMatchMode;								// 0 : 	Fuzzy matching, 1 :Exact matching
	DPSDK_CHAR szSplitId[DPSDK_ID_LEN];
}DPSDK_UVSS_GET_PAGE_DETECTION_RECORDS_PARAM;

typedef struct
{
	DPSDK_INT32	iDirection;
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_CHAR szChannelId[DPSDK_NAME_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
	DPSDK_TIMET tCaptureTime;
	DPSDK_CHAR szPlateNo[DPSDK_ID_LEN];
	DPSDK_CHAR szPlateNoPicUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szVehicleBodyUrl[DPSDK_URL_LEN];				// face image，example：https://10.10.10.10:443/aaa.jpg
	DPSDK_CHAR szVehicleUnderBodyUrl[DPSDK_URL_LEN];				// face image，example：https://10.10.10.10:443/aaa.jpg
}DPSDK_UVSS_SCAN_INFO;

typedef struct
{

	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_BOOL bPlateNoMatchMode;								// 0 : 	Fuzzy matching, 1 :Exact matching
	DPSDK_CHAR szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_CHAR szCredence[DPSDK_TOKEN_LEN];
}DPSDK_UVSS_RECORDS_PARAM;


typedef struct
{
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
}DSPDK_EXPORT_UVSS_RECORDS_RESULT;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_UVSS_SCAN_INFO* pPageDataList;
}DPSDK_UVSS_GET_PAGE_DETECTION_RECORDS_RESULT;

typedef struct
{
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
	DPSDK_TIMET tBeginTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szBeginAge[DPSDK_NUM_LEN];
	DPSDK_CHAR szEndAge[DPSDK_NUM_LEN];
	DPSDK_INT32 iGender;									// sex，1=man，2=woman							
	DPSDK_INT32 iMask;										// mask, 1=unknown，2=no mask，3=wear mask				
	DPSDK_INT32 iBeard;										// beard, 1=unknown，2=without beard，3=with beard					
	DPSDK_INT32 iGlasses;									// glasses, 0=none，1=eye glasses，2=sunglasses	
	DPSDK_INT32 iRecordType;                                // recordType  1=capture   2=recognition
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_INT32 iCurrentPage;
	DPSDK_ORDER_INFO struOrderInfo;
	DPSDK_TIMET	tSplitTime;
	DPSDK_CHAR	szSplitId[DPSDK_ID_LEN];
	DPSDK_CHAR	szSequence[DPSDK_SEQUENCE_LEN];

}DPSDK_FACE_GET_PAGE_DETECTION_RECORDS_BY_FEATURE_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;

	DPSDK_INT32 iPageDataNum;
	DPSDK_FACE_FEATURE_BASE_INFO* pPageDataList;
}DPSDK_FACE_GET_PAGE_DETECTION_RECORDS_BY_FEATURE_RESULT;


typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_ORDER_INFO struOrder;
	DPSDK_CHAR	szEncryptPass[DPSDK_PWD_LEN];				//Export file encryption password(AES)
	DPSDK_INT32 iExportRange;								//export range：0=all，1=select record，2=custome
	DPSDK_INT32 iDataType;									//Data Type, 0:Record, 1: Record + pic
	DPSDK_CHAR  szExportType[DPSDK_TYPE_LEN];				// Export type, zip
	DPSDK_CHAR	szSequence[DPSDK_SEQUENCE_LEN];
	DPSDK_INT32 iSelectIdsNum;
	DPSDK_BASE_ID_INFO* pSelectIdsList;
	DPSDK_BOOL bDisplayTimezoneOffset;

}DSPDK_FACE_EXPORT_DETECTION_RECORDS_BY_SESSION;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];							// record id
}DSPDK_FACE_EXPORT_DETECTION_RECORDS_BY_FEATURE_SELECT_RECORDS;

typedef struct
{
	DSPDK_FACE_EXPORT_DETECTION_RECORDS_BY_SESSION struSession;

	DPSDK_INT32 iSelectRecordNum;
	DSPDK_FACE_EXPORT_DETECTION_RECORDS_BY_FEATURE_SELECT_RECORDS* pSelectRecord;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
	DPSDK_TIMET	tBeginTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR	szBeginAge[DPSDK_ENUM_LEN];
	DPSDK_CHAR	szEndAge[DPSDK_ENUM_LEN];
	DPSDK_INT32	iGender;									// sex: 1=man，2=wuman, -1= don't know"
	DPSDK_INT32	iMask;										// mask: 1=don't know，2=not wearing face mask, 3= wearing face mask"
	DPSDK_INT32	iBeard;										// beard: 1=don't know，2=without beard, 3= with beard"
	DPSDK_INT32 iGlasses;									// glasses: 0=no，1=yes，2=Sunglasses，-1= don't know
	DPSDK_INT32	iEmotion;									// emotion: 0=smile，1=anger，2=sadness，3=hate，4=fear，5=surprised，6=normal，7=laugh，8=happy，9=puzzled，10=scream，-1=don't know",		
	DPSDK_INT32 iRecordType;                                // recordType  1=capture   2=recognition
}DSPDK_FACE_EXPORT_DETECTION_RECORDS_BY_FEATURE;

typedef struct
{
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
}DSPDK_FACE_EXPORT_DETECTION_RECORDS_RESULT;

//
typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_ORDER_INFO struOrderInfo;

}DPSDK_VEHICLE_GET_PAGE_DETECTION_RECORDS_BY_SESSION_PARAM;


typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;
	DPSDK_TIMET tCaptureTime;
	DPSDK_CHAR	szPlateNo[DPSDK_ID_LEN];
	DPSDK_INT32	iInVehicleGroup;
	DPSDK_INT32 iVehicleBrand;
	DPSDK_INT32 iVehicleColor;
	DPSDK_INT32 iVehicleModel;
	DPSDK_CHAR szVehicleImageUrl[DPSDK_URL_LEN];				// vehicle image，example：https://10.10.10.10:443/aaa.jpg
	DPSDK_CHAR szCaptureUrl[DPSDK_URL_LEN];					// picture，example：https://10.10.10.10:443/bbb.jpg
	DPSDK_CHAR szPlateNoUrl[DPSDK_URL_LEN];					// picture，example：https://10.10.10.10:443/bbb.jpg
	DPSDK_FLOAT	fSimilarity;								// 
	DPSDK_INT32 iDataSource;								// Data source，1=deivce 2:platform
}DPSDK_VEHICLE_FEATURE_BASE_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;

	DPSDK_INT32 iPageDataNum;
	DPSDK_VEHICLE_FEATURE_BASE_INFO* pPageDataList;
}DPSDK_VEHICLE_GET_PAGE_DETECTION_RECORDS_BY_SESSION_RESULT;

typedef struct
{
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
	DPSDK_INT32 iVehicleImageDataLen;
	DPSDK_CHAR* pVehicleImageData;								// vechicle image(base64)
	DPSDK_INT32 iSimilarity;
	DPSDK_TIMET tBeginTime;
	DPSDK_TIMET tEndTime;
}DPSDK_VEHICLE_START_SEARCH_DETECTION_RECORDS_BY_PICTURE_PARAM;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_ORDER_INFO struOrder;
	DPSDK_CHAR	szEncryptPass[DPSDK_PWD_LEN];				//Export file encryption password(AES)
	DPSDK_INT32 iExportRange;								//export range：0=all，1=select record，2=custome
	DPSDK_INT32 iDataType;									//Data Type, 0:Record, 1: Record + pic
	DPSDK_CHAR szExportType[DPSDK_TYPE_LEN];				// Export type, zip
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
	DPSDK_CHAR szSequence[DPSDK_SEQUENCE_LEN];
	DPSDK_INT32 iSelectIdsNum;
	DPSDK_BASE_ID_INFO* pSelectIdsList;
	DPSDK_BOOL bDisplayTimezoneOffset;
}DSPDK_VEHICLE_EXPORT_DETECTION_RECORDS_BY_SESSION;

typedef struct
{
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
}DSPDK_VEHICLE_EXPORT_DETECTION_RECORDS_RESULT;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN];				// surname 
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN];				// personal name
	DPSDK_BASE_ID_NAME_INFO struDeviceInfo;				// device code and name
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;			// channel id and name
	DPSDK_INT32 iAction;								// operate type: 0=cancel，1=send，2=update,
	DPSDK_INT32 iUserErrorCode;							// user error code
	DPSDK_INT32 iFingerprintErrorCode;					// finger print error code
	DPSDK_INT32	iFaceErrorCode;							// face error code
	DPSDK_INT32	iCombinationPasswordErrorCode;			// combination password error code
	DPSDK_INT32 iUnlockingPasswordErrorCode;			// unlocking password error code

	DPSDK_INT32 iCardErrorsNum;							// the num of card error list
	DPSDK_PERSON_CARD_ERRORS* pCardErrorsList;

}DPSDK_PERSON_FAILURE_ACCESS_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_PERSON_FAILURE_ACCESS_INFO* pPageDataList;

}DPSDK_PERSON_GET_PAGE_FAILURE_ACCESS_RESULT;

// Get person failure infos
typedef struct
{
	DPSDK_INT32 iPersonIdsNum;							//  the num of person ids list
	DPSDK_BASE_ID_INFO* pPersonIdsList;
	DPSDK_INT32 iDataType;								// error type: 0=all，1=access group，2=face comparison group，3=entrance group， default 0"
}DPSDK_PERSON_GET_PERSON_FAILURE_INFOS_PARAM;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struDeviceInfo;				// device code and name
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;			// channel code and name
	DPSDK_INT32 iErrorCode;
}DPSDK_PERSON_FAILURE_FACECOMPARISON_INFO;

typedef struct
{
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];		// plate no
	DPSDK_INT32 iErrorCode;
}DPSDK_PERSON_VEHICLE_ERRORS;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struDeviceInfo;				// device code and name
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;			// channel id and name

	DPSDK_INT32 iVehicleErrorsNum;						// the num of vehicle errors list
	DPSDK_PERSON_VEHICLE_ERRORS* pVehicleErrorsList;
}DPSDK_PERSON_FAILURE_ENTRANCE_INFOS;

typedef struct
{
	DPSDK_CHAR szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN];				// surname 
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN];				// personal name
	DPSDK_INT32 iAccessInfosNum;
	DPSDK_PERSON_FAILURE_ACCESS_INFO* pAccessInfosList;

	DPSDK_INT32 iliftInfosNum;
	DPSDK_PERSON_FAILURE_LIFT_INFO* pLiftInfosList;

	DPSDK_INT32 iFaceComparisonInfosNum;
	DPSDK_PERSON_FAILURE_FACECOMPARISON_INFO* pFaceComparisonInfosList;

	DPSDK_INT32 iEntranceInfosNum;
	DPSDK_PERSON_FAILURE_ENTRANCE_INFOS* pEntranceInfosList;

}DPSDK_PERSON_GET_PERSON_FAILURE_INFOS;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_PERSON_GET_PERSON_FAILURE_INFOS* pResultList;
}DPSDK_PERSON_GET_PERSON_FAILURE_INFOS_RESULT;


/*******************************************	Alarm begin		******************************************************/
typedef struct
{
	DPSDK_CHAR szSourceId[DPSDK_ID_LEN];
	DPSDK_CHAR szSourceCode[DPSDK_ID_LEN];
	DPSDK_CHAR szSourceName[DPSDK_NAME_LEN];
}DPSDK_ALARM_SOURCE_BASE_INFO;

typedef struct
{
	DPSDK_CHAR szPlanId[DPSDK_ID_LEN];
	DPSDK_CHAR szPlanName[DPSDK_NAME_LEN];
	DPSDK_BOOL bStatus;
	DPSDK_CHAR szAlarmTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR szTimeTemplateId[DPSDK_ID_LEN];
	DPSDK_INT32 iLevel;
	DPSDK_BOOL bEnableIgnoreTime;
	DPSDK_TIMET	tIgnoreTime;
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN_EX];
	DPSDK_INT32 iSourceNum;
	DPSDK_ALARM_SOURCE_BASE_INFO* pSourceList;
	DPSDK_CHAR szProtocolTemplateId[DPSDK_ID_LEN];
	DPSDK_CHAR szVacationTemplateId[DPSDK_ID_LEN];
	DPSDK_BOOL bUpdateMode;			//"更新模式：0=普通模式，1=强制模式；普通模式下平台会计算预录带宽，如果超限则进行警告，不更新；强制模式则直接更新；默认为强制模式",	
}DPSDK_ALARM_PLAN_BASE_INFOEX;

//typedef struct
//{
//	DPSDK_CHAR szPlanName[DPSDK_NAME_LEN];	
//	DPSDK_BOOL bStatus;	
//	DPSDK_CHAR szAlarmTypeId[DPSDK_ID_LEN];
//	DPSDK_CHAR szTimeTemplateId[DPSDK_ID_LEN];
//	DPSDK_INT32 iLevel;
//	DPSDK_BOOL bEnableIgnoreTime;		
//	DPSDK_TIMET	tIgnoreTime;
//	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];
//	DPSDK_CHAR szVacationTemplateId[DPSDK_ID_LEN];
//	
//	DPSDK_INT32 iSourceCodeNum;
//	DPSDK_BASE_ID_INFO* pSourceCodeList;
//	DPSDK_CHAR szProtocolTemplateId[DPSDK_ID_LEN];
//	DPSDK_BOOL bUpdateMode;			//"更新模式：0=普通模式，1=强制模式；普通模式下平台会计算预录带宽，如果超限则进行警告，不更新；强制模式则直接更新；默认为强制模式",	
//}DPSDK_ALARM_ADD_PLAN_BASE_INFOEX;

typedef struct
{
	DPSDK_BOOL bStatus;
	DPSDK_INT32 iModel;
	DPSDK_BOOL bEnableRecord;
	DPSDK_INT32 iStreamType;
	DPSDK_TIMET tRecordTime;
	DPSDK_TIMET tPrerecordTime;
	DPSDK_BOOL	bEnableVideo;
	DPSDK_INT32 iVideoStreamType;

	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
}DPSDK_ALARM_LINK_RECORD_INFOEX;

typedef struct
{
	DPSDK_INT32  iDuration;
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];
}DPSDK_ALARM_LINK_DURATION_IDS_INFO;

typedef struct
{
	DPSDK_BOOL bStatus;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_ALARM_LINK_DURATION_IDS_INFO* pChannelIdsList;
}DPSDK_ALARM_LINK_AUDIOLIGHT_INFOEX;

typedef struct
{
	DPSDK_INT32  iMethod;				//0=GET，1=POST，2=PUT，3=DELETE
	DPSDK_CHAR szRequstUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szSeq[DPSDK_SEQUENCE_LEN];
}DPSDK_ALARM_LINK_HTTPURLS_INFO;

typedef struct
{
	DPSDK_CHAR szQuickCommandName[DPSDK_NAME_LEN];
	DPSDK_BOOL bEnableShortcutKeys;
	DPSDK_CHAR szShortcutKeys[DPSDK_NAME_LEN];
	DPSDK_INT32 iExecuteMode;
	DPSDK_CHAR szRemark[DPSDK_USER_REMARK_LEN];
	DPSDK_INT32 iHttpUrlsNum;
	DPSDK_ALARM_LINK_HTTPURLS_INFO* pHttpUrlsList;
}DPSDK_ALARM_LINK_QUICKCOMMANDS_INFO;

typedef struct
{
	DPSDK_BOOL bStatus;
	DPSDK_INT32 iQuickCommandsNum;
	DPSDK_ALARM_LINK_QUICKCOMMANDS_INFO* pQuickCommandsList;
}DPSDK_ALARM_LINK_HTTPURL_INFOEX;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];				//0=GET，1=POST，2=PUT，3=DELETE
	DPSDK_CHAR szFileId[DPSDK_ID_LEN];
}DPSDK_ALARM_LINK_IPSPEAKER_INFO;

typedef struct
{
	DPSDK_BOOL bStatus;
	DPSDK_INT32 iIPSpeakerChannelNum;
	DPSDK_ALARM_LINK_IPSPEAKER_INFO* pIPSpeakerAudioChannelList;
}DPSDK_ALARM_LINK_IPSPEAKER_INFOEX;

typedef struct
{
	DPSDK_BOOL bStatus;
	DPSDK_CHAR szContent[DPSDK_CONTENT_LEN];
}DPSDK_ALARM_LINK_VOICEPROMPT_INFOEX;

typedef struct
{
	DPSDK_BOOL bStatus;

	DPSDK_INT32 iModel;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
}DPSDK_ALARM_LINK_SNAPSHOT_INFO;

typedef struct
{
	DPSDK_INT32 iModel;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
}DPSDK_ALARM_LINK_MODEL_IDS_INFO;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];
	DPSDK_INT32 iAction;
	DPSDK_CHAR szTarget[DPSDK_NAME_LEN];
}DPSDK_ALARM_CHANNELS;

typedef struct
{
	DPSDK_BOOL bStatus;

	DPSDK_INT32 iChannelsNum;
	DPSDK_ALARM_CHANNELS *pChannelsList;
}DPSDK_ALARM_LINK_PTZ_INFOEX;

typedef struct
{
	DPSDK_BOOL bStatus;
	DPSDK_TIMET tDuration;
	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
}DPSDK_ALARM_LINK_OUTPUT_INFOEX;

typedef struct
{
	DPSDK_CHAR szUserId[DPSDK_ID_LEN];
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN];
	DPSDK_CHAR szEmailAddress[DPSDK_ALARM_EMAILRECEIVER_LEN];
}DPSDK_ALARM_LINK_MAIL_RECIPIENTS_INFO;

typedef struct
{
	DPSDK_BOOL bStatus;
	DPSDK_BOOL bSendSnapshot;
	DPSDK_CHAR szMailTemplateId[DPSDK_ID_LEN];

	DPSDK_INT32 iRecipientsNum;
	DPSDK_ALARM_LINK_MAIL_RECIPIENTS_INFO* pRecipientsList;
}DPSDK_ALARM_LINK_MAIL_INFOEX;

typedef struct
{
	DPSDK_BOOL bStatus;
	DPSDK_INT32 iModel;
	DPSDK_CHAR szWallId[DPSDK_ID_LEN];
	DPSDK_BOOL bCustomWindow;

	DPSDK_INT32 iChannelsNum;
	DPSDK_ALARM_LINK_WALL_CHNL_INFO* pChannelsList;
}DPSDK_ALARM_LINK_WALL_INFOEX;

typedef struct
{
	DPSDK_CHAR szAction[DPSDK_ID_LEN];
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];
}DPSDK_ALARM_LINK_ACTION_IDS_INFO;

typedef struct
{
	DPSDK_BOOL bStatus;
	DPSDK_INT32 iModel;
	DPSDK_CHAR szAction[DPSDK_ID_LEN];

	DPSDK_INT32 iChannelsNum;
	DPSDK_ALARM_LINK_ACTION_IDS_INFO* pChannelsList;
}DPSDK_ALARM_LINK_ACCESS_INFO;

typedef struct
{
	DPSDK_INT32 iUserNum;
	DPSDK_BASE_ID_INFO* pUserList;
}DPSDK_ALARM_LINK_ADD_USER_INFOEX;

typedef struct
{
	DPSDK_INT32 iUserNum;
	DPSDK_BASE_ID_NAME_INFO* pUserList;
	DPSDK_INT32 iGroupNum;
	DPSDK_BASE_ID_NAME_INFO* pGroupList;
}DPSDK_ALARM_LINK_USER_INFOEX;

//typedef struct  
//{
//	DPSDK_ALARM_ADD_PLAN_BASE_INFOEX struBaseInfo;
//	DPSDK_ALARM_LINK_RECORD_INFOEX struLinkRecordInfo;
//	DPSDK_ALARM_LINK_AUDIOLIGHT_INFOEX struLinkAudioLightInfo;
//	DPSDK_ALARM_LINK_SNAPSHOT_INFO struLinkSnapshotInfo;
//	DPSDK_ALARM_LINK_PTZ_INFOEX struLinkPtzInfo;
//	DPSDK_ALARM_LINK_OUTPUT_INFOEX struLinkOutputInfo;
//	DPSDK_ALARM_LINK_MAIL_INFOEX struLinkMailInfo;
//	DPSDK_ALARM_LINK_WALL_INFOEX struLinkWallInfo;
//	DPSDK_ALARM_LINK_ACCESS_INFO struLinkAccessInfo;
//	DPSDK_ALARM_LINK_USER_INFOEX struLinkUserInfo;
//	DPSDK_ALARM_LINK_HTTPURL_INFOEX struLinkHTTPUrlInfo;
//	DPSDK_ALARM_LINK_IPSPEAKER_INFOEX struLinkIPSpeakerInfo;
//}DPSDK_ALARM_ADD_PLAN_INFO;

typedef struct
{
	DPSDK_ALARM_PLAN_BASE_INFOEX struBaseInfo;
	DPSDK_ALARM_LINK_RECORD_INFOEX struLinkRecordInfo;
	DPSDK_ALARM_LINK_AUDIOLIGHT_INFOEX struLinkAudioLightInfo;
	DPSDK_ALARM_LINK_SNAPSHOT_INFO struLinkSnapshotInfo;
	DPSDK_ALARM_LINK_PTZ_INFOEX struLinkPtzInfo;
	DPSDK_ALARM_LINK_OUTPUT_INFOEX struLinkOutputInfo;
	DPSDK_ALARM_LINK_MAIL_INFOEX struLinkMailInfo;
	DPSDK_ALARM_LINK_WALL_INFOEX struLinkWallInfo;
	DPSDK_ALARM_LINK_ACCESS_INFO struLinkAccessInfo;
	DPSDK_ALARM_LINK_USER_INFOEX struLinkUserInfo;
	DPSDK_ALARM_LINK_HTTPURL_INFOEX struLinkHTTPUrlInfo;
	DPSDK_ALARM_LINK_IPSPEAKER_INFOEX struLinkIPSpeakerInfo;
	DPSDK_ALARM_LINK_VOICEPROMPT_INFOEX struLinkVoicePromptInfo;
}DPSDK_ALARM_PLAN_INFO;

typedef struct
{
	DPSDK_CHAR szTemplateId[DPSDK_ID_LEN];								// Alarm Protocol template ID
	DPSDK_CHAR szTemplateName[DPSDK_NAME_LEN_EX];						// Alarm Protocol template name
	DPSDK_INT32 iTemplateContentLen;									// Alarm Protocol template content length
	DPSDK_CHAR* pTemplateContentData;									// Alarm Protocol template content data
}DPSDK_ALARM_PROTOCOL_TEMPLATE_INFO;

typedef struct
{
	DPSDK_INT32 iProtocolTemplateNum;
	DPSDK_ALARM_PROTOCOL_TEMPLATE_INFO* pProtocolTemplates;
}DPSDK_ALARM_PROTOCOL_TEMPLATE_LIST;

typedef struct
{
	DPSDK_INT32 iCurEmailTemplatesCount;
	DPSDK_INT32 iMaxEmailTemplatesCount;
}DPSDK_EMAIL_TEMPLATE_COUNT;

typedef struct
{
	DPSDK_CHAR szStartTime[DPSDK_PTZ_TIME_LEN];			// Start time, Format HH:mm:SS, required
	DPSDK_CHAR szEndTime[DPSDK_PTZ_TIME_LEN];			// End time, Format HH:mm:SS, required
}DPSDK_ALARM_VACATION_TIME_INTERVAL;

typedef struct
{
	DPSDK_CHAR szStartDate[DPSDK_PTZ_TIME_LEN];			// Start date, Format MM-DD, required
	DPSDK_CHAR szEndDate[DPSDK_PTZ_TIME_LEN];			// End date, Format MM-DD, required
	DPSDK_INT32 iTimeIntervalCount;						// Alarm vacation time interval count
	DPSDK_ALARM_VACATION_TIME_INTERVAL *pTiemIntervals;	// Alarm vacation time interval list
}DPSDK_ALARM_VACATION_DATE_INTERVAL;

typedef struct
{
	DPSDK_CHAR szTemplateId[DPSDK_ID_LEN];								// Alarm vacation template ID
	DPSDK_CHAR szTemplateName[DPSDK_NAME_LEN_EX];						// Alarm vacation template name

	DPSDK_INT32 iDateIntervalCount;										// Alarm vacation date interval count
	DPSDK_ALARM_VACATION_DATE_INTERVAL *pDateIntervals;					// Alarm vacation date interval list
}DPSDK_ALARM_VACATION_TEMPLATE_INFO;

typedef struct
{
	DPSDK_INT32 iVacationTemplateCount;
	DPSDK_ALARM_VACATION_TEMPLATE_INFO* pVacationTemplates;				// Alarm vacation template list
}DPSDK_ALARM_VACATION_TEMPLATE_LIST;

typedef struct
{
	DPSDK_CHAR szAlarmPlanName[DPSDK_NAME_LEN_EX];
}DPSDK_ALARM_PLAN_NAME;

typedef struct
{
	DPSDK_INT32 iAlarmPlanCount;
	DPSDK_ALARM_PLAN_NAME* pAlarmPlans;
}DPSDK_DELETE_VACATION_TEMPLATE_FAILED_INFO;

typedef struct
{
	DPSDK_CHAR szAlarmTypeId[DPSDK_ID_LEN];							// Alarm Type ID
	DPSDK_CHAR szSourceCode[DPSDK_ID_LEN];							// Alarm Source Code
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];							// Remark
}DPSDK_GENERATE_SOFT_TRIGGER_ALARM_TYPE_INFO;

typedef struct
{
	DPSDK_CHAR szAlarmTypeId[DPSDK_ID_LEN];							// Alarm Type ID
	DPSDK_CHAR szAlarmTypeName[DPSDK_NAME_LEN];						// Alarm Type name
	DPSDK_CHAR szAlarmTypeIcon[DPSDK_NAME_LEN];						// Alarm Type icon
}DPSDK_SOFT_TRIGGER_ALARM_TYPE_INFO;

typedef struct
{
	DPSDK_CHAR szAlarmType[DPSDK_ID_LEN];							// Alarm Type 1 = 设备，2 = 视频点位
	DPSDK_CHAR szAlarmTypeId[DPSDK_ID_LEN];							// Alarm Type ID
	DPSDK_CHAR szAlarmTypeCode[DPSDK_ID_LEN];						// Alarm Source Code
}DPSDK_GENERATE_CUSTOM_ALARM_CODE_TYPE_INFO;

typedef struct
{
	DPSDK_CHAR szAlarmType[DPSDK_ID_LEN];							// Alarm Type 1 = 设备，2 = 视频点位
	DPSDK_CHAR szAlarmTypeId[DPSDK_ID_LEN];							// Alarm Type ID
	DPSDK_CHAR szAlarmTypeCode[DPSDK_NAME_LEN];						// Alarm Source Code
	DPSDK_CHAR szAlarmTypeName[DPSDK_NAME_LEN];						// Alarm Type name
	DPSDK_BOOL bSubscribePicture;									// Subscribe Picture 0 = 不订阅，1 = 订阅
	DPSDK_INT32 iSiaSupportMode;									// Sia Support Mode 0=不支持，1=CID，2=DCS，3=DCS+CID，必填
	DPSDK_INT32 iAlarmStatus;										// 报警状态：0=消失，1=产生，默认产生
}DPSDK_CUSTOM_ALARM_CODE_TYPE_INFO;

typedef struct
{
	DPSDK_CHAR szMinAmount[DPSDK_NAME_LEN];
	DPSDK_CHAR szMaxAmount[DPSDK_NAME_LEN];
}DPSDK_POS_ALARM_TYPE_PRICEZ_PERIODS_INFO;

typedef struct
{
	DPSDK_CHAR szAlarmTypeId[DPSDK_ID_LEN];							// Alarm Type ID											// Alarm Type
	DPSDK_CHAR szAlarmTypeName[DPSDK_NAME_LEN];						// Alarm Type name

	DPSDK_INT32 iPricePeriodsNum;
	DPSDK_POS_ALARM_TYPE_PRICEZ_PERIODS_INFO* pPricePeriodsList;
}DPSDK_POS_ALARM_TYPE_INFO;

typedef struct
{
	DPSDK_INT32 iSoftAlarmTypeNum;
	DPSDK_SOFT_TRIGGER_ALARM_TYPE_INFO* pSoftAlarmTypes;
}DPSDK_SOFT_TRIGGER_ALARM_TYPE_LIST;

typedef struct
{
	DPSDK_INT32 iCustomAlarmTypeNum;
	DPSDK_CUSTOM_ALARM_CODE_TYPE_INFO* pCustomAlarmTypes;
}DPSDK_CUSTOM_ALARM_CODE_TYPE_LIST;

typedef struct
{
	DPSDK_CHAR szResourceId[DPSDK_ID_LEN];
}DPSDK_MAP_RESOURCE_CONFIG_ID;

typedef struct
{
	DPSDK_INT32 iResourceIdNum;
	DPSDK_MAP_RESOURCE_CONFIG_ID* pResourceIdList;
}DPSDK_MAP_RESOURCE_CONFIG_ID_LIST;

typedef struct
{
	DPSDK_CHAR szResourceId[DPSDK_ID_LEN];
	DPSDK_CHAR szMapId[DPSDK_ID_LEN];
	DPSDK_CHAR szGpsX[DPSDK_GPS_LEN];							// Longitude
	DPSDK_CHAR szGpsY[DPSDK_GPS_LEN];							// Latitude
}DPSDK_MAP_RESOURCE_CONFIG_STATUS;

typedef struct
{
	DPSDK_INT32 iResourceStatuseNum;
	DPSDK_MAP_RESOURCE_CONFIG_STATUS* pResourceStatuseList;
}DPSDK_MAP_RESOURCE_CONFIG_STATUS_LIST;

typedef struct
{
	DPSDK_INT32 iPlanIdsNum;
	DPSDK_BASE_ID_INFO* pPlanIdsList;
}DPSDK_ALARM_BATCH_DELETE_PARAM;

typedef struct
{
	DPSDK_INT32 iSourceNum;
	DPSDK_BASE_ID_INFO* pSourceIdList;
}DPSDK_ALARM_BATCH_DELETE_BY_SOURCE_PARAM;

typedef struct
{
	DPSDK_BOOL bStatus;
	DPSDK_INT32 iPlanIdsNum;
	DPSDK_BASE_ID_INFO* pPlanIdsList;
	DPSDK_BOOL bUpdateMode;			//"更新模式：0=普通模式，1=强制模式；普通模式下平台会计算预录带宽，如果超限则进行警告，不更新；强制模式则直接更新；默认为强制模式",	
}DPSDK_ALARM_BATCH_UPDATE_STATUS_PARAM;

typedef struct
{
	DPSDK_CHAR szEmailAddresses[DPSDK_ALARM_EMAILRECEIVER_LEN];
}DPSDK_ALARM_EMAIL_INFO;

typedef struct
{
	//linkRecordInfo
	DPSDK_ALARM_LINK_MODEL_IDS_INFO struLinkRecordInfo;

	//linkSnapshotInfo
	DPSDK_ALARM_LINK_MODEL_IDS_INFO struLinkSnapshotInfo;

	//linkPtzInfo
	DPSDK_INT32 iLinkPtzInfoNum;
	DPSDK_BASE_ID_INFO* pLinkPtzInfoList;

	//linkOutputInfo
	DPSDK_INT32 iLinkOutputInfoNum;
	DPSDK_BASE_ID_INFO* pLinkOutputInfoList;

	//linkMailInfo
	DPSDK_INT32 iLinkMailInfoNum;
	DPSDK_ALARM_EMAIL_INFO* pLinkMailInfoList;

	//linkWallInfo
	DPSDK_ALARM_LINK_MODEL_IDS_INFO struLinkWallInfo;

	//linkAccessInfo
	DPSDK_ALARM_LINK_MODEL_IDS_INFO struLinkAccessInfo;

	//linkUserInfo
	DPSDK_INT32 iLinkUserInfoNum;
	DPSDK_BASE_NAME_INFO* pLinkUserInfoList;

	//linkAudioLightInfo
	DPSDK_INT32 iLinkAudioLightInfoNum;
	DPSDK_BASE_NAME_INFO* pLinkAudioLightInfoList;

	//linkAHttpUrlInfo
	DPSDK_INT32 iHttpUrlInfoNum;
	DPSDK_BASE_URL_INFO* pHttpUrlInfoList;

	//linkIPSpeakerInfo
	DPSDK_INT32 iIPSpeakerAudioInfoNum;
	DPSDK_BASE_ID_INFO* pIPSpeakerInfoList;
}DPSDK_ALARM_GET_PLAN_LINK_INFO_RESULT;

typedef struct
{
	DPSDK_CHAR szAlarmTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR szAlarmTypeName[DPSDK_NAME_LEN];
	DPSDK_CHAR szAlarmTypeIcon[DPSDK_NAME_LEN];
	DPSDK_BOOL bAllowDelete;						// 0:fase 1:true	
	DPSDK_INT32 iAlarmType;
	DPSDK_INT32 iSiaSupportMode;					// Sia Support Mode 0=不支持，1=CID，2=DCS，3=DCS+CID，必填
	DPSDK_CHAR szMinAmount[DPSDK_NAME_LEN];
	DPSDK_CHAR szMaxAmount[DPSDK_NAME_LEN];
}DPSDK_BASE_ALARM_TYPE_INFO;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];

	DPSDK_INT32 iAlarmTypesNum;
	DPSDK_BASE_ALARM_TYPE_INFO* pAlarmTypesList;
}DPSDK_ALARM_TYPE_GROUP_INFO;

typedef struct
{
	DPSDK_CHAR szSourceTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR szSourceTypeName[DPSDK_NAME_LEN];

	DPSDK_INT32 iGroupsNum;
	DPSDK_ALARM_TYPE_GROUP_INFO* pGroupsList;
}DPSDK_ALARM_GET_TYPE_RESULT_INFO;

typedef struct
{
	DPSDK_CHAR szSourceTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR szSourceTypeName[DPSDK_NAME_LEN];
	DPSDK_CHAR szSourceDisplayName[DPSDK_NAME_LEN];
	DPSDK_INT32 iItemTypes;
	DPSDK_INT32 iItemStatus;
}DPSDK_POS_ALARM_ITEMS_GET_TYPE_RESULT_INFO;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_ALARM_GET_TYPE_RESULT_INFO* pResultList;
}DPSDK_ALARM_GET_TYPE_RESULT;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_POS_ALARM_ITEMS_GET_TYPE_RESULT_INFO* pResultList;
}DPSDK_POS_ALARM_ITEMS_GET_TYPE_RESULT;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR szPlanName[DPSDK_NAME_LEN];

	DPSDK_INT32 iOrgCodesNum;
	DPSDK_BASE_ID_INFO* pOrgCodesList;

	DPSDK_INT32 iSourceCodesNum;
	DPSDK_BASE_ID_INFO* pSourceCodesList;

	DPSDK_INT32 iAlarmTypeIdsNum;
	DPSDK_BASE_ID_INFO* pAlarmTypeIdsList;
}DPSDK_ALARM_GET_PAGE_PLANS_PARAM;

typedef struct
{
	DPSDK_ALARM_PLAN_BASE_INFOEX struBaseInfo;		//bEnableIgnoreTime not use this column

													//linkages	
	DPSDK_BOOL bLinkedRecord;
	DPSDK_BOOL bLinkedSnapshot;
	DPSDK_BOOL bLinkedPtz;
	DPSDK_BOOL bLinkedOutput;
	DPSDK_BOOL bLinkedMail;
	DPSDK_BOOL bLinkedWall;
	DPSDK_BOOL bLinkedAccess;
	DPSDK_BOOL bLinkedUser;
	DPSDK_BOOL bLinkedAudioLight;
	DPSDK_BOOL bLinkedHttpUrl;
	DPSDK_BOOL bLinkedAudio;
	DPSDK_BOOL bLinkedVoicePrompt;
}DPSDK_ALARM_GET_PAGE_PLANS_DATA;

typedef struct
{
	DPSDK_INT32 iTotalCount;

	DPSDK_INT32 iPageDataNum;
	DPSDK_ALARM_GET_PAGE_PLANS_DATA* pPageData;
}DPSDK_ALARM_GET_PAGE_PLANS_RESULT;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_BASE_ID_INFO* pResultList;
}DPSDK_ALARM_GET_TYPE_CONFIGED_SOURCES_RESULT;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_ALARM_PLAN_INFO* pResultList;
}DPSDK_ALARM_GET_SOURCE_PLANS_RESULT;

typedef struct
{
	DPSDK_INT32 iMode;						//statistics mode: 1=day，2=week，3=month
	DPSDK_CHAR szOrgCode[DPSDK_ID_LEN];		//
	DPSDK_TIMET	tStartTime;					//
	DPSDK_TIMET	tEndTime;					//
}DPSDK_ALARM_OVERVIEW_GET_SUMMARY_PARAM;

typedef struct
{
	DPSDK_INT32 iHigh;						//high alarm total num
	DPSDK_INT32	iMedium;					//medium alarm total num
	DPSDK_INT32	iLow;						//low alarm total num
}DPSDK_ALARM_OVERVIEW_GET_SUMMARY_ALARM_NUM;

typedef struct
{
	DPSDK_INT32 iTotal;						//total alarm num
	DPSDK_INT32	iPending;					//pending alarm num
	DPSDK_INT32	iProcessed;					//processed alarm num
	DPSDK_INT32	iUntreated;					//untreated alarm num

											//level
	DPSDK_ALARM_OVERVIEW_GET_SUMMARY_ALARM_NUM struTotal;
	DPSDK_ALARM_OVERVIEW_GET_SUMMARY_ALARM_NUM struPending;
	DPSDK_ALARM_OVERVIEW_GET_SUMMARY_ALARM_NUM struProcessed;
	DPSDK_ALARM_OVERVIEW_GET_SUMMARY_ALARM_NUM struUntreated;
}DPSDK_ALARM_OVERVIEW_GET_SUMMARY_INFO;

typedef struct
{
	DPSDK_CHAR szAlarmCode[DPSDK_ALARM_ALARMCODE_LEN];				// Alarm code
	DPSDK_INT32 iAlarmType;											// Alarm type
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iVehicleType;				// 1=visitor，2=allowed list，4=blocklist，5=temporary
	DPSDK_INT32 iRecordType;				// 1=Entrance Capture，2=Plate，3=SpaceStatistics 
	DPSDK_BASE_ID_NAME_LIST struEntranceGroup;
	DPSDK_CHAR szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR szParkingOrgId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingOrgName[DPSDK_NAME_LEN];
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szParentParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParentParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPositionId[DPSDK_ID_LEN];
	DPSDK_CHAR szPositionName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPointId[DPSDK_ID_LEN];
	DPSDK_CHAR szPointName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPlateNoPicture[DPSDK_URL_LEN];
	DPSDK_CHAR szVehiclePicture[DPSDK_URL_LEN];
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szLayerPictureUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szCarColor[DPSDK_ID_LEN];
	DPSDK_CHAR szCarBrand[DPSDK_ID_LEN];
	DPSDK_CHAR szSpaceId[DPSDK_ID_LEN];
	DPSDK_CHAR szSpaceName[DPSDK_NAME_LEN];
	DPSDK_INT32	iUnrecordedTime;
	DPSDK_INT32	iUnrecordedStandardTime;
	DPSDK_TIMET tParkingTime;
	DPSDK_TIMET tParkingStandardTime;
	DPSDK_TIMET tEnterTime;
	DPSDK_DOUBLE fLocationX;
	DPSDK_DOUBLE fLocationY;
	DPSDK_DOUBLE fWidth;
	DPSDK_DOUBLE fHeight;
	DPSDK_DOUBLE fAngle;
}DPSDK_ALARM_GET_ENTRANCE_INFO;

typedef struct
{
	DPSDK_INT32 iMinTime;
	DPSDK_INT32 iMaxTime;
	DPSDK_BOOL	bHappened;
}DPSDK_ALARM_COMBINATION_CONFIG;

typedef struct
{
	DPSDK_CHAR	szRuleId[DPSDK_ID_LEN];
	DPSDK_CHAR  szRuleName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szRuleRemark[DPSDK_MEMO_LEN];
	DPSDK_INT32 iRuleType;
	DPSDK_INT32 iAlarmCount;
	DPSDK_ALARM_COMBINATION_CONFIG *pAlarmConfigs;
}DPSDK_ALARM_COMBINATION_RULE;

typedef struct
{
	DPSDK_INT32 iRuleCount;
	DPSDK_ALARM_COMBINATION_RULE *pCombinRules;
}DPSDK_ALARM_COMBINATION_RULE_LIST;

typedef struct
{
	DPSDK_UINT32 uiPage;
	DPSDK_UINT32 uiPageSize;
	DPSDK_CHAR	 szRuleId[DPSDK_ID_LEN];
	DPSDK_CHAR   szKeyword[DPSDK_KEYWORD_LEN_EX];
}DPSDK_ALARM_COMBINATION_SOURCE_PARAM;

typedef struct
{
	DPSDK_CHAR	szSourceId[DPSDK_ID_LEN];
	DPSDK_CHAR  szSourceName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szAlarmTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR	szAlarmTypeName[DPSDK_ALARM_ALARMTYPENAME_LEN];			// Alarm type name
}DPSDK_ALARM_COMBINATION_TARDET;

typedef struct
{
	DPSDK_CHAR	szSourceId[DPSDK_ID_LEN];
	DPSDK_CHAR  szSourceName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szRemark[DPSDK_MEMO_LEN];
	DPSDK_CHAR	szRuleId[DPSDK_ID_LEN];
	DPSDK_CHAR  szRuleName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szRuleRemark[DPSDK_MEMO_LEN];
	DPSDK_INT32 iTargetCount;
	DPSDK_ALARM_COMBINATION_TARDET* pTarget;
}DPSDK_ALARM_COMBINATION_SOURCE;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iSourceCount;
	DPSDK_ALARM_COMBINATION_SOURCE *pCombinSources;
}DPSDK_ALARM_COMBINATION_SOURCE_LIST;

/**************************************************	Alarm end	********************************************************/

/**************************************************	entrance group begin	********************************************/

typedef struct
{
	DPSDK_CHAR szEntryPositionId[DPSDK_ID_LEN];
	DPSDK_CHAR szTimeTemplateId[DPSDK_ID_LEN];
}DPSDK_ENTRANCE_GROUP_ADD_GROUP_ENTRY_POSITIONS;

typedef struct
{
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];
	DPSDK_INT32 iGroupColor;
	DPSDK_CHAR	szRemark[DPSDK_MEMO_LEN];

	DPSDK_INT32 iEntryPositionsNum;
	DPSDK_ENTRANCE_GROUP_ADD_GROUP_ENTRY_POSITIONS* pEntryPositionsList;
}DPSDK_ENTRANCE_GROUP_ADD_GROUP;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struParkingLot;
	DPSDK_BASE_ID_NAME_INFO struEntryPosition;
	DPSDK_BASE_ID_NAME_INFO struTimeTemplate;
}DPSDK_ENTRANCE_GROUP_GET_GROUP_ENTRY_POSITIONS;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struParkingLot;
	DPSDK_BASE_ID_NAME_INFO struPassRule;
}DPSDK_ENTRANCE_GROUP_GET_GROUP_EXIT_POSITIONS;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struGroupInfo;							// group id and group name
	DPSDK_INT32 iGroupColor;
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
	DPSDK_BOOL bDefaultGroup;										//0=no，1=yes"

	DPSDK_INT32 iEntryPositionsNum;
	DPSDK_ENTRANCE_GROUP_GET_GROUP_ENTRY_POSITIONS* pEntryPositionsList;

	DPSDK_INT32 iExitPostionsNum;
	DPSDK_ENTRANCE_GROUP_GET_GROUP_EXIT_POSITIONS* pExitPositionsList;

}DPSDK_ENTRANCE_GROUP_GET_GROUP;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO	struGroupInfo;
	DPSDK_INT32 iGroupColor;
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
	DPSDK_BOOL bDefaultGroup;										//0=no，1=yes"
}DPSDK_ENTRANCE_GROUP_GET_GROUPS;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_ENTRANCE_GROUP_GET_GROUPS* pResultList;
}DPSDK_ENTRANCE_GROUP_GET_GROUPS_RESULT;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR szKeyword[DPSDK_KEYWORD_LEN_EX];						//keyword: group name、plate no，Support fuzzy search"
}DPSDK_ENTRANCE_GROUP_GET_PAGE_GROUPS_PARAM;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO	struGroupInfo;
	DPSDK_INT32 iGroupColor;
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
	DPSDK_BOOL bDefaultGroup;										//0=no，1=yes"
	DPSDK_INT32 iVehicleCount;
}DPSDK_ENTRANCE_GROUP_GET_PAGE_GROUPS;

typedef struct
{
	DPSDK_INT32 iTotalCount;

	DPSDK_INT32 iPageDataNum;
	DPSDK_ENTRANCE_GROUP_GET_PAGE_GROUPS* pPageDataList;
}DPSDK_ENTRANCE_GROUP_GET_PAGE_GROUPS_RESULT;

// get page failure vehicles
typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_INT32 iListType;										//list type: 0=all，1=allow list，2=blocklist",
	DPSDK_CHAR	szParkinglotId[DPSDK_ID_LEN];
	DPSDK_CHAR	szGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR	szPersonId[DPSDK_ID_LEN];
	DPSDK_INT32 iAction;										//action：0=all，1=delete，2=add，3=update"
}DPSDK_ENTRANCE_GET_PAGE_FAILURE_VEHICLES_PARAM;

typedef struct
{
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_BASE_ID_NAME_INFO struDeviceInfo;						// device code and device name
	DPSDK_INT32 iListType;										//list type: 0=all，1=allow list，2=blocklist",
	DPSDK_BASE_ID_NAME_INFO struPositionInfo;					// position id and position name	
	DPSDK_BASE_ID_NAME_INFO struPointInfo;						// point id and point name	
	DPSDK_INT32 iAction;										//action：0=all，1=delete，2=add，3=update"
	DPSDK_INT32 iErrorCode;
	DPSDK_TIMET tIssueTime;
}DPSDK_ENTRANCE_GET_PAGE_FAILURE_VEHICLES_INFO;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_ENTRANCE_GET_PAGE_FAILURE_VEHICLES_INFO* pPageDataList;
}DPSDK_ENTRANCE_GET_PAGE_FAILURE_VEHICLES_RESULT;

//IssueVehicles
typedef struct
{
	DPSDK_INT32 iParkingLotIdsNum;
	DPSDK_BASE_ID_INFO* pParkingLotIdsList;

	DPSDK_INT32 iGroupIdsNum;
	DPSDK_BASE_ID_INFO* pGroupIdsList;

	DPSDK_INT32 iPersonIdsNum;
	DPSDK_BASE_ID_INFO* pPersonIdsList;

	DPSDK_INT32 iPlateNosNum;
	DPSDK_PLATE_NO* pPlateNosList;
}DSPDK_ENTRANCE_ISSUE_VEHICLES_INFO;

// add parking lot

// point info
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];
	DPSDK_INT32	iChannelType;										//channel type：1=ITC main camera ，2=ITC secondary camera
}DPSDK_PARKING_LOT_ADD_PARKING_LOT_POSITION_POINT_BINDING_ITC_CHANNEL;

typedef struct
{
	DPSDK_INT32	iSort;												// show sort start from 0
	DPSDK_INT32 iContent;											// content：1=plate no，2=entry time
	DPSDK_BOOL bUserDefined;										// 1=yes，0=no，default:0

}DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_BINDING_COMMON_LED_CHANNEL_DISPLAY_CONTENT;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];							// LED channel id
	DPSDK_INT32	iColor;												// show text color：1=red，2=green，3=yellow
	DPSDK_INT32 iDisplayRows;
	DPSDK_INT32	iScreenHeight;
	DPSDK_INT32	iScreenWidth;
	DPSDK_INT32 iRollType;											// roll type：1=roll，2=cut screen
	DPSDK_INT32	iRollSpeed;											// roll speed range：1-100
	DPSDK_INT32 iLedIdleContentType;								// led idle content type：1=null，2=idle num，3=customize
	DPSDK_CHAR szLedIdleUserDefinedContent[DPSDK_CONTENT_LEN];		// led idle user defined content

	DPSDK_INT32 iDisplayContentsNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_BINDING_COMMON_LED_CHANNEL_DISPLAY_CONTENT* pDisplayContentsList;
}DPSDK_PARKING_LOT_ADD_PARKING_LOT_POSITION_POINT_BINDING_COMMON_LED_CHANNEL;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struPointInfo;							// point id and name(in add point interface the id is position id)
	DPSDK_BOOL bMultipleCameras;									// multiple cameras: 0=single camera，1= dual camera
	DPSDK_TIMET tCoordinateTime;									// dual camera coordinate time
	DPSDK_INT32 iDirection;											// direction ：8=entry，9=exit
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];

	DPSDK_INT32 iBindingItcChannelsNum;
	DPSDK_PARKING_LOT_ADD_PARKING_LOT_POSITION_POINT_BINDING_ITC_CHANNEL* pBindingItcChannelsList;

	DPSDK_INT32 iBindingVtoChannelsNum;
	DPSDK_BASE_ID_INFO* pBindingVtoChannelsList;

	DPSDK_INT32 iBindingCommonLedChannelsNum;
	DPSDK_PARKING_LOT_ADD_PARKING_LOT_POSITION_POINT_BINDING_COMMON_LED_CHANNEL* pBindingCommonLedChannelsList;
}DPSDK_PARKING_LOT_ADD_PARKING_LOT_POSITION_POINT_INFO;

// point channel info
typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;						// channel id and channel name
	DPSDK_BOOL bStatus;												// status：1=online，0=offline
	DPSDK_BASE_ID_NAME_INFO struOrgInfo;							// org code and org name
	DPSDK_BASE_ID_NAME_INFO struDeviceInfo;							// device code and device name
	DPSDK_CHAR szDeviceIp[DPSDK_IP_LEN];
	DPSDK_INT32	iDevicePort;
	DPSDK_CHAR szDeviceManufacturer[DPSDK_NAME_LEN];
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;										// Device type	
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];
	DPSDK_CHAR szServerIp[DPSDK_IP_LEN];							// IP address server IP;
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];

	DPSDK_INT32	iChannelType;										//channel type：1=ITC main camera ，2=ITC secondary camera(itc channel use)
}DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_CHANNEL_INFO;

typedef struct
{
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_CHANNEL_INFO struChannelInfo;

	DPSDK_INT32	iColor;												// show text color：1=red，2=green，3=yellow
	DPSDK_INT32 iDisplayRows;
	DPSDK_INT32	iScreenHeight;
	DPSDK_INT32	iScreenWidth;
	DPSDK_INT32 iRollType;											// roll type：1=roll，2=cut screen
	DPSDK_INT32	iRollSpeed;											// roll speed range：1-100
	DPSDK_INT32 iLedIdleContentType;								// led idle content type：1=null，2=idle num，3=customize
	DPSDK_CHAR szLedIdleUserDefinedContent[DPSDK_CONTENT_LEN];							// led idle user defined content

	DPSDK_INT32 iDisplayContentsNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_BINDING_COMMON_LED_CHANNEL_DISPLAY_CONTENT* pDisplayContentsList;
}DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_COMMON_LED_CHANNEL_INFO;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struPointInfo;							// point id and name(in add point interface the id is position id)
	DPSDK_BOOL bMultipleCameras;									// multiple cameras: 0=single camera，1= dual camera
	DPSDK_TIMET tCoordinateTime;									// dual camera coordinate time
	DPSDK_INT32 iDirection;											// direction ：8=entry，9=exit
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];

	DPSDK_INT32 iBindingItcChannelsNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_CHANNEL_INFO* pBindingItcChannelsList;

	DPSDK_INT32 iBindingVtoChannelsNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_CHANNEL_INFO* pBindingVtoChannelsList;

	DPSDK_INT32 iBindingCommonLedChannelsNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_COMMON_LED_CHANNEL_INFO* pBindingCommonLedChannelsList;
}DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_INFO;

// position info
typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struGroupInfo;							// entrance group id not in blocklist
	DPSDK_INT32 iTimeTemplateId;
	DPSDK_CHAR szTimeTemplateName[DPSDK_NAME_LEN];
	DPSDK_INT32	iDirection;											// derection：1=entry，2=exit
	DPSDK_BOOL bEnableEmptyParkingSpaceEnterRule;					// enable empty parking space enter rule :1=yes，0=no
}DPSDK_PARKING_LOT_PARKING_LOT_POSITION_PASS_RULE;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struPositionInfo;						// position id and positon name (in the add point interface the id is parking lot id)	
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];

	DPSDK_INT32 iPointsNum;
	DPSDK_PARKING_LOT_ADD_PARKING_LOT_POSITION_POINT_INFO* pPointsList;
}DPSDK_PARKING_LOT_ADD_PARKING_LOT_POSITION_INFO;

typedef struct
{
	DPSDK_CHAR	szGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR	szGroupName[DPSDK_NAME_LEN];
	DPSDK_INT32 iDirection;
}DPSDK_PARKING_LOT_ISSUEVEHICLE_RULE;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struPositionInfo;						// position id and positon name (in the add point interface the id is parking lot id)	
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];

	DPSDK_INT32 iIssueVehicleRuleNum;
	DPSDK_PARKING_LOT_ISSUEVEHICLE_RULE* pIssueVehicleRuleList;

	DPSDK_INT32 iPassRulesNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_PASS_RULE* pPassRulesList;

	DPSDK_INT32 iPointsNum;
	DPSDK_PARKING_LOT_ADD_PARKING_LOT_POSITION_POINT_INFO* pPointsList;
}DPSDK_PARKING_LOT_ADD_PARKING_LOT_POSITION_INFO_EX;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struPositionInfo;						// position id and positon name (in the add point interface the id is parking lot id)	
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];

	DPSDK_INT32 iIssueVehicleRuleNum;
	DPSDK_PARKING_LOT_ISSUEVEHICLE_RULE* pIssueVehicleRuleList;

	DPSDK_INT32 iPassRulesNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_PASS_RULE* pPassRulesList;

	DPSDK_INT32 iPointsNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_INFO* pPointsList;
}DPSDK_PARKING_LOT_PARKING_LOT_POSITION_INFO;

// remain led channel
typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];							// LED channel id
	DPSDK_INT32	iColor;												// show text color：1=red，2=green，3=yellow
	DPSDK_CHAR szEmptyParkingSpaceContent[DPSDK_MEMO_LEN];			// enpty parking space content :0000，FULL
}DPSDK_PARKING_LOT_ADD_PARKING_LOT_BINDING_REMAINLED_CHANNEL;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];
	DPSDK_BOOL bStatisticsFlag;
}DPSDK_PARKING_LOG_STATISTICS_RULE;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struSpaceInfo;
	DPSDK_BASE_ID_NAME_INFO struDevInfo;
	DPSDK_BASE_ID_NAME_INFO struOrgInfo;
}DPSDK_PARKING_LOG_SPACE_INFO;

typedef struct
{
	DPSDK_CHAR szScreenId[DPSDK_ID_LEN];
	DPSDK_CHAR szLedDeviceCode[DPSDK_ID_LEN];
	DPSDK_INT32 iDataSourceType;
	DPSDK_BOOL	bBindingAllDetectors;
	DPSDK_INT32	iSpaceNum;
	DPSDK_PARKING_LOG_SPACE_INFO* pSpaceList;
}DPSDK_PARKING_LOG_LEDPARTITION_INFO;

typedef struct
{
	DPSDK_CHAR szScreenId[DPSDK_ID_LEN];
	DPSDK_INT32 iDataSourceType;
	DPSDK_BOOL	bBindingAllDetectors;
	DPSDK_GENERAL_ID_LIST struSpaceIdList;
}DPSDK_PARKING_ADD_LEDPARTITION_INFO;
// parking lot
typedef struct
{
	DPSDK_INT32	iUpdateMode;										// update model 1=normal ，2=force
	DPSDK_BASE_ID_NAME_INFO struParkingLotInfo;						// parking lot id and parking lot name
	DPSDK_BOOL	bEnableParkingSpaceStatistics;
	DPSDK_INT32	iParkingSpaceStatisticsType;						// Statistics Type
	DPSDK_INT32	iTotalParkingSpaceCount;							// total parking space count, max num is 10000
	DPSDK_INT32	iIdleParkingSpaceCount;								// idle parking space count
	DPSDK_BOOL	bEnableFuzzyMatch;
	DPSDK_BOOL  bEnableFirstPlaceOneMore;
	DPSDK_BOOL	bEnableFirstPlaceOneLess;
	DPSDK_BOOL  bEnableLastPlaceOneMore;
	DPSDK_BOOL	bEnableLastPlaceOneLess;
	DPSDK_INT32  iFuzzyMatchBitCount;
	DPSDK_BOOL bEnableOverrideEnterRepeatVehicle;					// enable override enter repeat vehicle：1=yes，0=no，default 0
	DPSDK_BOOL bIssueVehicles;
	DPSDK_INT32 iEneterRuleType;
	DPSDK_BOOL bEnableEnterAutoPassUnRegisterVehicle;					// enable enter auto pass unregister vehicle：1=yes，0=no
	DPSDK_INT32	iEnterTimeTemplateId;									// auto enter pass time template ID
	DPSDK_BOOL  bEnableEnterAutoPassBlockVehicle;
	DPSDK_BOOL	bEnableEmptyParkingSpaceEnterRule;
	DPSDK_BOOL  bEnableEnterAutoPassUnlicensedVehicle;
	DPSDK_BOOL  bEnableEnterCheckAuth;
	DPSDK_BOOL	bEnableEnterCheckAuthByCard;
	DPSDK_BOOL  bEnableEnterCardAuth;
	DPSDK_INT32 iExitRuleType;										// exit rule type：1=register vehicle，2=all vehicle，3=customize
	DPSDK_BOOL bEnableExitAutoPassUnRegisterVehicle;					// enable exit auto pass unregister vehicle：1=yes，0=no
	DPSDK_INT32	iExitTimeTemplateId;									// auto exit pass time template ID
	DPSDK_BOOL	bEnableExitAutoPassBlockVehicle;
	DPSDK_BOOL  bEnableExitAutoPassUnlicensedVehicle;
	DPSDK_BOOL  bEnableExitCheckAuth;
	DPSDK_BOOL	bEnableExitCheckAuthByCard;
	DPSDK_BOOL  bEnableExitCardAuth;
	DPSDK_INT32	iParkingSpaceStatisticsRuleType;

	DPSDK_GENERAL_ID_LIST  struDetectorList;
	DPSDK_GENERAL_ID_LIST  struLedList;

	DPSDK_INT32	  iStatisticsNum;
	DPSDK_PARKING_LOG_STATISTICS_RULE* pStatisticsRuleList;

	DPSDK_INT32	  iLedPartitionNum;
	DPSDK_PARKING_ADD_LEDPARTITION_INFO* pLedPartitionList;

	DPSDK_INT32 iBindingRemainLedChannelsNum;
	DPSDK_PARKING_LOT_ADD_PARKING_LOT_BINDING_REMAINLED_CHANNEL* pBindingRemainLedChannelsList;

	DPSDK_INT32 iPositionsNum;
	DPSDK_PARKING_LOT_ADD_PARKING_LOT_POSITION_INFO_EX*	pPositionsList;
}DPSDK_PARKING_LOT_ADD_PARKING_LOT_INFO;

typedef struct
{
	DPSDK_INT32 iReturnCode;
}DPSDK_PARKING_LOT_UPDATE_RESULT;

typedef struct
{
	DPSDK_INT32 iUpdateMode;
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_INT32 iIdleParkingSpaceCount;
}DPSDK_PARKING_LOT_UPDATE_SPACECOUNT;

// remain led channel detail info
typedef struct
{
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_CHANNEL_INFO struChannelInfo;

	DPSDK_INT32	iColor;												// show text color：1=red，2=green，3=yellow
	DPSDK_CHAR szEmptyParkingSpaceContent[DPSDK_MEMO_LEN];			// enpty parking space content :0000，FULL
}DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_REMAIN_LED_CHANNEL_INFO;
typedef struct
{
	DPSDK_BOOL bStatus;												// status：1=online，0=offline
	DPSDK_BASE_ID_NAME_INFO struOrgInfo;							// org code and org name
	DPSDK_BASE_ID_NAME_INFO struDeviceInfo;							// device code and device name
	DPSDK_CHAR szDeviceIp[DPSDK_IP_LEN];
	DPSDK_INT32	iDevicePort;
	DPSDK_CHAR szDeviceManufacturer[DPSDK_NAME_LEN];
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;										// Device type	
	DPSDK_CHAR szServerCode[DPSDK_SERVER_CODE_LEN];
	DPSDK_CHAR szServerIp[DPSDK_IP_LEN];							// IP address server IP;
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];
}DPSDK_PARKING_LOT_BASE_BINDING_DEVIFNO;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struSpaceInfo;
	DPSDK_BASE_ID_NAME_INFO struOrgInfo;							// org code and org name
	DPSDK_BASE_ID_NAME_INFO struDeviceInfo;
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;
}DPSDK_PARKING_LOT_SPACE_INFO;

typedef struct
{
	int iSpaceNum;
	DPSDK_PARKING_LOT_SPACE_INFO* pSpaceInfoList;
}DPSDK_PARKING_LOT_SPACE_LIST;

typedef struct
{
	DPSDK_CHAR				szParkingLotId[DPSDK_ID_LEN];
	DPSDK_GENERAL_ID_LIST	struId;
}DPSDK_PARKING_LOT_SPACE_PARAM;

typedef struct
{
	DPSDK_CHAR szParkingSpaceId[DPSDK_ID_LEN];
	DPSDK_CHAR szSpaceName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32 iDetectorType;
}DPSDK_PARKING_LOT_DETECTOR_SPACEINFO;

typedef struct
{
	DPSDK_PARKING_LOT_BASE_BINDING_DEVIFNO struBaseInfo;
	DPSDK_INT32				iParkingSpaceCount;
	DPSDK_INT32				iParkingSpaceNum;
	DPSDK_PARKING_LOT_DETECTOR_SPACEINFO* pParkingSpaceInfo;
	DPSDK_INT32				iDetectorTypeNum;
	DPSDK_INT32*			pDetectorType;
}DPSDK_PARKING_LOT_BASE_BINDING_DETECTOR;

typedef struct
{
	DPSDK_PARKING_LOT_BASE_BINDING_DEVIFNO struBaseInfo;
	DPSDK_INT32		iLedPartitionCount;

}DPSDK_PARKING_LOT_BASE_BINDING_LED;

typedef struct
{
	DPSDK_INT32 iLedNum;
	DPSDK_PARKING_LOT_BASE_BINDING_LED* pBindingLedList;
}DPSDK_PARKING_LOT_BINDING_LED_LIST;
typedef struct
{
	DPSDK_INT32 iDetectorNum;
	DPSDK_PARKING_LOT_BASE_BINDING_DETECTOR* pBindingDectorList;
}DPSDK_PARKING_LOT_BINDING_DETECTOR_LIST;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struParkingLotInfo;						// parking lot id and parking lot name
	DPSDK_BOOL	bEnableParkingSpaceStatistics;
	DPSDK_INT32	iParkingSpaceStatisticsType;						// Statistics Type
	DPSDK_INT32	iTotalParkingSpaceCount;							// total parking space count, max num is 10000
	DPSDK_INT32	iIdleParkingSpaceCount;								// idle parking space count
	DPSDK_BOOL	bEnableFuzzyMatch;
	DPSDK_BOOL  bEnableFirstPlaceOneMore;
	DPSDK_BOOL	bEnableFirstPlaceOneLess;
	DPSDK_BOOL  bEnableLastPlaceOneMore;
	DPSDK_BOOL	bEnableLastPlaceOneLess;
	DPSDK_INT32  iFuzzyMatchBitCount;
	DPSDK_BOOL bEnableOverrideEnterRepeatVehicle;					// enable override enter repeat vehicle：1=yes，0=no，default 0
	DPSDK_BOOL bIssueVehicles;
	DPSDK_INT32 iEneterRuleType;
	DPSDK_BOOL bEnableEnterAutoPassUnRegisterVehicle;					// enable enter auto pass unregister vehicle：1=yes，0=no
	DPSDK_INT32	iEnterTimeTemplateId;									// auto enter pass time template ID
	DPSDK_BOOL  bEnableEnterAutoPassBlockVehicle;
	DPSDK_BOOL  bEnableEnterAutoPassUnlicensedVehicle;
	DPSDK_BOOL	bEnableEmptyParkingSpaceEnterRule;
	DPSDK_BOOL  bEnableEnterCheckAuth;
	DPSDK_BOOL	bEnableEnterCheckAuthByCard;
	DPSDK_BOOL  bEnableEnterCardAuth;
	DPSDK_INT32 iExitRuleType;										// exit rule type：1=register vehicle，2=all vehicle，3=customize
	DPSDK_BOOL bEnableExitAutoPassUnRegisterVehicle;					// enable exit auto pass unregister vehicle：1=yes，0=no
	DPSDK_INT32	iExitTimeTemplateId;									// auto exit pass time template ID
	DPSDK_BOOL	bEnableExitAutoPassBlockVehicle;
	DPSDK_BOOL	bEnableExitAutoPassUnlicensedVehicle;
	DPSDK_BOOL  bEnableExitCheckAuth;
	DPSDK_BOOL	bEnableExitCheckAuthByCard;
	DPSDK_BOOL  bEnableExitCardAuth;
	DPSDK_INT32 iIssueStatus;										// issue status：1= being issue，2=issue success or no issue task，3=park or all issue fail
	DPSDK_INT32 iParkingSpaceStatisticsRuleType;

	DPSDK_INT32 iStatisticsRuleNum;
	DPSDK_PARKING_LOG_STATISTICS_RULE* pStatisticsRuleList;

	DPSDK_INT32 iDetectorNum;
	DPSDK_PARKING_LOT_BASE_BINDING_DETECTOR* pDetectorList;

	DPSDK_INT32 iLedNum;
	DPSDK_PARKING_LOT_BASE_BINDING_LED* pLedList;

	DPSDK_INT32	  iLedPartitionNum;
	DPSDK_PARKING_LOG_LEDPARTITION_INFO* pLedPartitionList;

	DPSDK_INT32 iBindingRemainLedChannelsNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_REMAIN_LED_CHANNEL_INFO* pBindingRemainLedChannelsList;

	DPSDK_INT32 iPositionsNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_INFO*	pPositionsList;
}DPSDK_PARKING_LOT_PARKING_LOT_INFO;

// get parking lots info
typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;						// channel id and channel name
	DPSDK_BASE_ID_NAME_INFO struDeviceInfo;							// device code and device name
	DPSDK_INT32 iChannelType;										// channel type：1=ITC main camera，2=ITC secondary camera，3=VTO，4=LED
	DPSDK_BOOL bStatus;												// status：1=online，0=offline
}DPSDK_PARKING_LOT_GET_PARKING_LOT_POSITION_POINT_CHANNEL_INFO;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struPointInfo;							// point id and point name
	DPSDK_BOOL bMultipleCameras;									// multiple cameras: 0=single camera，1= dual camera
	DPSDK_TIMET tCoordinateTime;									// dual camera coordinate time
	DPSDK_INT32 iDirection;											// direction ：8=entry，9=exit
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];

	DPSDK_INT32 iBindingChannelsNum;
	DPSDK_PARKING_LOT_GET_PARKING_LOT_POSITION_POINT_CHANNEL_INFO* pBindingChannelsList;
}DPSDK_PARKING_LOT_GET_PARKING_LOT_POSITION_POINT_INFO;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struPositinInfo;						// position id and position name
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
	DPSDK_INT32 iEnterPointCount;
	DPSDK_INT32 iExitPointCount;

	DPSDK_INT32 iPointsNum;
	DPSDK_PARKING_LOT_GET_PARKING_LOT_POSITION_POINT_INFO* pPointsList;
}DPSDK_PARKING_LOT_GET_PARKING_LOT_POSITION_INFO;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struParkingLotInfo;						// parking lot id and parking lot name
	DPSDK_BOOL	bEnableParkingSpaceStatistics;
	DPSDK_INT32 iParkingSpaceStatisticsType;
	DPSDK_INT32	iEnterPointCount;
	DPSDK_INT32	iExitPointCount;
	DPSDK_INT32	iBindingRemainLedCount;
	DPSDK_INT32	iBindingDetectorCount;
	DPSDK_INT32	iBindingLedCount;
	DPSDK_INT32	iTotalParkingSpaceCount;							// total parking space count, max num is 10000
	DPSDK_INT32	iIdleParkingSpaceCount;
	DPSDK_BOOL bIssueVehicles;										// issue vehicles：1=yes，0=no
	DPSDK_INT32 iIssueStatus;										// issue status：1= being issue，2=issue success or no issue task，3=park or all issue fail

	DPSDK_INT32 iPositionsNum;
	DPSDK_PARKING_LOT_GET_PARKING_LOT_POSITION_INFO* pPositionsList;
}DPSDK_PARKING_LOT_GET_PARKING_LOT_INFO;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_PARKING_LOT_GET_PARKING_LOT_INFO* pResultList;
}DPSDK_PARKING_LOT_GET_PARKING_LOTS_RESULT;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_INT32 iChannelType;                                    //1=ITC Main，2=ITC Sub，3=VTO
}DPSDK_PARKINGLOT_TREE_CHANNELINFO;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struPointInfo;							// point id and point name
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
	DPSDK_INT32 iGateMode;										// Gate mode 1 = have 2= none
	DPSDK_INT32 iDirection;											// direction ：8=entry，9=exit
	DPSDK_BASE_ID_NAME_INFO struRePointInfo;                          // Repoint id and Repoint name
	DPSDK_INT32 iChannelNum;
	DPSDK_INT32 iRefChannelNum;
	DPSDK_PARKINGLOT_TREE_CHANNELINFO* pChannelInfo;
	DPSDK_PARKINGLOT_TREE_CHANNELINFO* pRefChannelInfo;
}DPSDK_PARKINGLOT_TREE_POINT_NODE;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struPositionInfo;						// position id and position name
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
	DPSDK_INT32 iPointsNum;
	DPSDK_PARKINGLOT_TREE_POINT_NODE* pPointsList;
}DPSDK_PARKINGLOT_TREE_POSITION_NODE;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struNameIdInfo;
	DPSDK_INT32 iParkingLotMode;                     // 1=Entrance and exit mode，2=No entrance/exit mode
	DPSDK_BOOL bEnableParkingSpaceStatistics;        //1= Yes  0= No
	DPSDK_INT32 iParkingSpaceStatisticsType;         //1= Space mode 2=Detect mode
	DPSDK_BOOL bIssueVehicles;                       //1= Yes  0= No
	DPSDK_INT32 iIssueStatus;                        //1= Issuing  2 = Successfully or no tasks 3 = Partial or complete distribution failure
	DPSDK_INT32 iTotalParkingSpaceCount;
	DPSDK_INT32 iDleParkingSpaceCount;
}DPSDK_PARKINGLOT_BASE_INFO;

typedef struct
{
	DPSDK_PARKINGLOT_BASE_INFO struParkingLotInfo;						// parking lot id and parking lot name
	DPSDK_INT32 iPositionsNum;
	DPSDK_PARKINGLOT_TREE_POSITION_NODE* pPositionsList;
}DPSDK_PARKINGLOT_TREE_CHILDREN_NODE;

typedef struct
{
	DPSDK_PARKINGLOT_BASE_INFO struParkingLotInfo;						// parking lot id and parking lot name
	DPSDK_INT32 iPositionsNum;
	DPSDK_PARKINGLOT_TREE_POSITION_NODE* pPositionsList;
	DPSDK_INT32 iChildrenNum;
	DPSDK_PARKINGLOT_TREE_CHILDREN_NODE* pChildrenParkingLotList;
}DPSDK_PARKINGLOT_TREE_PARKINGLOT_NODE;

typedef struct
{
	DPSDK_INT32 iParkingLotNum;
	DPSDK_PARKINGLOT_TREE_PARKINGLOT_NODE* pParkingLotList;
}DPSDK_PARKINGLOT_TREE;


// get position info
typedef struct
{
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_INT32 iDirection;											// direction：0=all，8=entry，9=exit"
}DPSDK_PARKING_LOT_GET_PARKING_LOT_POSITION_PARAM;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO struParkingLotInfo;

	DPSDK_INT32 iEntryPositionsNum;
	DPSDK_BASE_ID_NAME_INFO* pEntryPositionsList;
}DPSDK_PARKING_LOT_GET_ENTRY_POSITIONS;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_PARKING_LOT_GET_ENTRY_POSITIONS* pResultList;
}DPSDK_PARKING_LOT_GET_ENTRY_POSITIONS_RESULT;


// GetUnBindingCommonLedChannels
typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_COMMON_LED_CHANNEL_INFO* pResultList;

}DPSDK_PARKING_LOT_GET_UNBINDING_COMMON_LED_CHANNELS_RESULT;

// GetUnBindingItcChannels
typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_CHANNEL_INFO* pResultList;
}DPSDK_PARKING_LOT_GET_UNBINDING_ITC_CHANNELS_RESULT;

// GetUnBindingRemainLedChannels
typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_REMAIN_LED_CHANNEL_INFO* pResultList;
}DPSDK_PARKING_LOT_GET_UNBINDING_REMAIN_LED_CHANNELS_RESULT;

// GetUnBindingVtoChannels
typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_PARKING_LOT_PARKING_LOT_POSITION_POINT_CHANNEL_INFO* pResultList;
}DPSDK_PARKING_LOT_GET_UNBINDING_VTO_CHANNELS_RESULT;

// GetVtoBindingItcChannels

typedef struct
{
	DPSDK_CHAR szVtoDeviceCode[DPSDK_CODE_LEN];
	DPSDK_CHAR szItcChannelId[DPSDK_ID_LEN];
}DPSDK_PARKING_LOT_GET_VTO_BINDING_ITC_CHANNEL_INFO;

typedef struct
{
	DPSDK_INT32 iResultNum;
	DPSDK_PARKING_LOT_GET_VTO_BINDING_ITC_CHANNEL_INFO* pResultList;
}DPSDK_PARKING_LOT_GET_VTO_BINDING_ITC_CHANNELS_RESULT;

typedef struct
{
	DPSDK_INT32	iType;
	DPSDK_CHAR	szTextContent[DPSDK_CONTENT_LEN];
	DPSDK_CHAR	szIconContent[DPSDK_CONTENT_LEN];
	DPSDK_INT32	iArrowDirection;
}DPSDK_LED_CELL_DETAIL_INFO;

typedef struct
{
	DPSDK_CHAR					szLedPartitionSeq[DPSDK_ID_LEN];
	DPSDK_CHAR					szLedPartitionId[DPSDK_ID_LEN];
	DPSDK_CHAR					szLedPartitionName[DPSDK_NAME_LEN];
	DPSDK_INT32					iArrowDirection;
	DPSDK_INT32					iCellCount;
	DPSDK_INT32					iLedColor;
	DPSDK_INT32					iCellDetailInfoNum;
	DPSDK_LED_CELL_DETAIL_INFO* pCellDetailInfo;
	DPSDK_INT32					iFullSpaceLedColor;
	DPSDK_INT32					iFullSpaceCellDetailInfoNum;
	DPSDK_LED_CELL_DETAIL_INFO* pFullSpaceCellDetailInfo;
}DPSDK_LED_DISPLAY_PARTITION;

typedef struct
{
	DPSDK_CHAR						szDevId[DPSDK_ID_LEN];
	DPSDK_CHAR					    szName[DPSDK_NAME_LEN];
	DPSDK_INT32						iDeviceCategory;							// Device category
	DPSDK_INT32						iDeviceType;								// Device type see DPSDK_DEV_TYPE;
	DPSDK_CHAR						szDeviceModel[DPSDK_DEVICE_MODEL_LEN];		// Device model
	DPSDK_INT32						iLedColor;
	DPSDK_INT32						iFullSpaceLedColor;
	DPSDK_INT32						iFullSpaceContent;
	DPSDK_INT32						iArrowLocation;
	// display
	DPSDK_INT32						iDisplayPartitionNum;
	DPSDK_LED_DISPLAY_PARTITION*	pDisplayPartitionList;

}DPSDK_LED_CONFIGURATION_INFO;
/**************************************************	entrance group end		********************************************/

// get access record info
typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_TIMET	tAlarmTime;
	DPSDK_BASE_ID_NAME_INFO	struDeviceInfo;							// device code and device name
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;						// channel code and channel name	
	DPSDK_BASE_ID_NAME_INFO struAlarmTypeInfo;						// alarm type id and alarm type name
	DPSDK_CHAR szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN];
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN];
	DPSDK_CHAR szCaptureImageUrl[DPSDK_URL_LEN];					// example: https://10.35.94.180:9901/604cae90-56e4-11eb-a76e-02004c4f4f50/20210114/2/dsf_1fb9c7e9-5700-11eb-9a39-02004c4f4f50_842760_921850.jpg
	DPSDK_CHAR szFacePicture[DPSDK_URL_LEN];						// example: https://10.10.10.11:443/upload/person/xxx.jpg",
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];								// 
	DPSDK_INT32	iGender;											// gender:0=woman 1=man 2=unknow
	DPSDK_INT32	iIdType;											// id type: 0=id card，1=**** ID, 2=Student ID, 3=Driver's license, 4=Passport, 5=Tax number, 6=Others; default 6
	DPSDK_CHAR szIdNo[DPSDK_ID_LEN];
	DPSDK_BASE_ID_NAME_INFO	struOrgInfo;							// org code and org name
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR szCardNo[DPSDK_ID_LEN];
	DPSDK_INT32 iOrgNum;											// Person group number
	DPSDK_ORG_INFO_NOTIFY* pOrgInfo;								// Person group Info
	DPSDK_INT32 iOperateType;										// Operate Type:0=Other, 1=User, 2=Room, 3=Manager
	DPSDK_CHAR szOperateInfo[DPSDK_NAME_LEN_MAX];					// Operate Info
}DPSDK_ACCESS_RECORD_INFO;

// get access records
typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;

	DPSDK_INT32 iChannelIdsNum;
	DPSDK_BASE_ID_INFO* pChannelIdsList;
	DPSDK_CHAR szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR szSequence[DPSDK_SEQUENCE_LEN];
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET	tEndTime;
	DPSDK_TIMET	        tSplitTime;
	DPSDK_CHAR	        szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32	        iCurrentPage;
}DPSDK_GET_PAGE_ACCESS_RECORD_PARAM;

typedef struct
{
	DPSDK_CHAR szRecordID[DPSDK_ID_LEN];
	DPSDK_CHAR szAlarmCode[DPSDK_CODE_LEN];
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];
	DPSDK_CHAR szFacePicUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szVideoUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32 iGender;
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];
	DPSDK_CHAR szOrgCode[DPSDK_ID_LEN];
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR szIdNo[DPSDK_ID_LEN];
	DPSDK_TIMET	tAlarmTime;
	DPSDK_BASE_ID_NAME_INFO	struDeviceInfo;							// device code and device name
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;						// channel code and channel name	
	DPSDK_BASE_ID_NAME_INFO struAlarmTypeInfo;						// alarm type id and alarm type name
	DPSDK_CHAR szFirstName[DPSDK_NAME_LEN];
	DPSDK_CHAR szLastName[DPSDK_NAME_LEN];
	DPSDK_CHAR szCaptureImageUrl[DPSDK_URL_LEN];					// example: https://10.35.94.180:9901/604cae90-56e4-11eb-a76e-02004c4f4f50/20210114/2/dsf_1fb9c7e9-5700-11eb-9a39-02004c4f4f50_842760_921850.jpg
}DPSDK_GET_PAGE_ACCESS_RECORD_INFO;

typedef struct
{
	DPSDK_INT32 iTtotalCount;
	DPSDK_INT32 iPageDataNum;
	DPSDK_GET_PAGE_ACCESS_RECORD_INFO* pPageDataList;
}DPSDK_GET_PAGE_ACCESS_RECORDS_RESULT;

typedef struct
{
	DPSDK_INT32 iChannelNum;
	DPSDK_CHANNEL_ID* pChannelIdList;
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR	szEncryptPass[DPSDK_PWD_LEN];				//Export file encryption password(AES)
	DPSDK_INT32 iExportRange;								//export range 0=all,1=selected
	DPSDK_INT32 iDataType;									//Data Type, 0:Record, 1: Record + pic
	DPSDK_CHAR szExportType[DPSDK_TYPE_LEN];				// Export type, zip
	DPSDK_CHAR szSequence[DPSDK_SEQUENCE_LEN];
	DPSDK_INT32 iSelectIdsNum;
	DPSDK_BASE_ID_INFO* pSelectIdsList;
	DPSDK_BOOL bDisplayTimezoneOffset;
}DPSDK_EXPORT_ACCESS_RECORDS_PARAM;

typedef struct
{
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
}DSPDK_EXPORT_ACCESS_RECORDS_RESULT;

typedef struct
{
	DPSDK_PAGE_INFO								struPageInfo;
	DPSDK_INT32									iChannelIdsNum;
	DPSDK_BASE_ID_INFO*							pChannelIdsList;
	DPSDK_TIMET									tStartTime;
	DPSDK_TIMET									tEndTime;
	DPSDK_CHAR									szKeyword[DPSDK_KEYWORD_LEN];
	DPSDK_CHAR									szReceiptId[DPSDK_CODE_LEN];
	DPSDK_CHAR									szMinTotalPrice[DPSDK_NAME_LEN];
	DPSDK_CHAR									szMaxTotalPrice[DPSDK_NAME_LEN];
	DPSDK_CHAR									szMinDiscount[DPSDK_NAME_LEN];
	DPSDK_CHAR									szMaxDiscount[DPSDK_NAME_LEN];
	DPSDK_CHAR									szMinRefund[DPSDK_NAME_LEN];
	DPSDK_CHAR									szMaxRefund[DPSDK_NAME_LEN];
	DPSDK_CHAR									szOperatorName[DPSDK_NAME_LEN];
	DPSDK_CHAR									szOther[DPSDK_NAME_LEN];
	DPSDK_TIMET									tSplitTime;
	DPSDK_CHAR									szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32									iCurrentPage;
}DPSDK_GET_PAGE_POS_RECORD_PARAM;

typedef struct
{
	DPSDK_CHAR									szRecordId[DPSDK_ID_LEN];
	DPSDK_CHAR									szSourceId[DPSDK_ID_LEN];
	DPSDK_INT32									iVideoUrlNum;
	DPSDK_FILE_URL*								pVideoUrlList;
	DPSDK_CHAR									szReceiptId[DPSDK_CODE_LEN];
	DPSDK_CHAR									szPosId[DPSDK_CODE_LEN];
	DPSDK_CHAR									szOperatorName[DPSDK_NAME_LEN];
	DPSDK_BASE_ID_NAME_INFO						struChannelInfo;
	DPSDK_CHAR									szReceiptInventory[DPSDK_CONTENT_LEN_2048];
	DPSDK_CHAR									szTotalPrice[DPSDK_NAME_LEN];
	DPSDK_CHAR									szDiscount[DPSDK_NAME_LEN];
	DPSDK_CHAR									szRefund[DPSDK_NAME_LEN];
	DPSDK_TIMET									tReceiptTime;
	DPSDK_CHAR									szOther[DPSDK_NAME_LEN];

}DPSDK_GET_PAGE_POS_RECORD_INFO;

typedef struct
{
	DPSDK_INT32 iTtotalCount;
	DPSDK_INT32 iRecordNum;
	DPSDK_GET_PAGE_POS_RECORD_INFO* pPageDataList;
}DPSDK_GET_PAGE_POS_RECORDS_RESULT;

typedef struct
{
	DPSDK_INT32 iChannelNum;
	DPSDK_CHANNEL_ID* pChannelIdList;
	DPSDK_TIMET tStartTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR	szEncryptPass[DPSDK_PWD_LEN];				//Export file encryption password(AES)
	DPSDK_INT32 iExportRange;								//export range 0=all,1=selected
	DPSDK_INT32 iDataType;									//Data Type, 0:Record, 1: Record + pic
	DPSDK_CHAR szExportType[DPSDK_TYPE_LEN];				// Export type, zip
	DPSDK_INT32 iSelectIdsNum;
	DPSDK_BASE_ID_INFO* pSelectIdsList;
	DPSDK_BOOL bDisplayTimezoneOffset;
	DPSDK_CHAR									szKeyword[DPSDK_KEYWORD_LEN];
	DPSDK_CHAR									szReceiptId[DPSDK_CODE_LEN];
	DPSDK_CHAR									szMinTotalPrice[DPSDK_CODE_LEN];
	DPSDK_CHAR									szMaxTotalPrice[DPSDK_CODE_LEN];
	DPSDK_CHAR									szMinDiscount[DPSDK_CODE_LEN];
	DPSDK_CHAR									szMaxDiscount[DPSDK_CODE_LEN];
	DPSDK_CHAR									szMinRefund[DPSDK_CODE_LEN];
	DPSDK_CHAR									szMaxRefund[DPSDK_CODE_LEN];
	DPSDK_CHAR									szOperatorName[DPSDK_NAME_LEN];
	DPSDK_CHAR									szOther[DPSDK_NAME_LEN];
}DPSDK_EXPORT_POS_RECORDS_PARAM;

typedef struct
{
	DPSDK_CHAR szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szSession[DPSDK_ID_LEN];
}DSPDK_EXPORT_POS_RECORDS_RESULT;

/*******************************************************	entrance record begin	*********************************************************/
typedef struct
{
	DPSDK_PAGE_INFO					struPageInfo;
	DPSDK_GENERAL_ID_LIST			struSpaceId;
	DPSDK_INT32						iSpaceStatus;
	DPSDK_TIMET						tStartTime;
	DPSDK_TIMET						tEndTime;
	DPSDK_INT32						iVehicleType;
	DPSDK_CHAR						szEntranceGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR						szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_BOOL						bPlateNoMatchMode;								// 0 : 	Fuzzy matching, 1 :Exact matching
	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCompany[DPSDK_NAME_LEN];
	DPSDK_CHAR						szOrgCode[DPSDK_ID_LEN];
	DPSDK_INT32						iVehicleColor;									// O: all
	DPSDK_INT32						iVehicleBrand;									// 0: all
	DPSDK_CHAR						szSequence[DPSDK_SEQUENCE_LEN];					// interface sequence
	DPSDK_TIMET						tSplitTime;
	DPSDK_CHAR						szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32						iCurrentPage;
}DPSDK_GET_PAGE_PARKING_RECORD_PARAM;

typedef struct
{
	DPSDK_PAGE_INFO					struPageInfo;
	DPSDK_GENERAL_ID_LIST			struPositionId;
	DPSDK_TIMET						tStartTime;
	DPSDK_TIMET						tEndTime;
	DPSDK_INT32						iVehicleType;
	DPSDK_CHAR						szEntranceGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR						szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_BOOL						bPlateNoMatchMode;								// 0 : 	Fuzzy matching, 1 :Exact matching
	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCompany[DPSDK_NAME_LEN];
	DPSDK_CHAR						szOrgCode[DPSDK_ID_LEN];
	DPSDK_CHAR						szCardPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCardPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCardNo[DPSDK_ID_LEN_EX];
	int								iVehicleColor;									// O: all
	int								iVehicleBrand;									// 0: all
	int								iVehicleModel;									// 0: all
	DPSDK_CHAR						szSequence[DPSDK_SEQUENCE_LEN];					// interface sequence
	DPSDK_TIMET						tSplitTime;
	DPSDK_CHAR						szSplitId[DPSDK_ID_LEN];
	DPSDK_INT32						iCurrentPage;
}DPSDK_GET_PAGE_VEHICLE_RECORD_PARAM;

typedef struct
{
	DPSDK_GET_PAGE_VEHICLE_RECORD_PARAM		struParam;
	int										iStatus;										// O=all, 1=already exit，2=not exit
}DPSDK_GET_PAGE_VEHICLE_ENTER_RECORD_PARAM;

typedef struct
{
	DPSDK_CHAR						szId[DPSDK_ID_LEN];
	DPSDK_CHAR						szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32						iVehicleType;
	DPSDK_INT32						iPlateNoPictureNum;
	DPSDK_FILE_URL*					pPlateNoPictureList;
	DPSDK_BASE_ID_NAME_INFO			struSpaceInfo;
	DPSDK_BASE_ID_NAME_INFO			struParkingLotInfo;
	DPSDK_BASE_ID_NAME_INFO			struPositionInfo;
	DPSDK_BASE_ID_NAME_INFO			struPointInfo;
	DPSDK_TIMET						tDriveInTime;
	DPSDK_TIMET						tDriveOutTime;
	DPSDK_INT32						iParkingTime;

	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCompany[DPSDK_NAME_LEN];
	DPSDK_BASE_ID_NAME_INFO			struOrgInfo;
	DPSDK_INT32						iVehicleBrand;
	DPSDK_INT32						iVehicleColor;
	DPSDK_INT32						iSpaceStatus;
	DPSDK_INT32						iEntranceGroupNum;
	DPSDK_BASE_ID_NAME_INFO*		pEntranceGroupList;
	DPSDK_INT32 					iOrgInfoNum;
	DPSDK_ORG_SIMPLE_INFO* 			pOrgInfos;
}DPSDK_GET_PAGE_PARKING_RECORD_INFO;

typedef struct
{
	DPSDK_INT32									iTotalCount;
	DPSDK_INT32									iPageDataNum;
	DPSDK_GET_PAGE_PARKING_RECORD_INFO*			pPageDataList;
}DPSDK_GET_PAGE_PARKING_RECORD_RESULT;

typedef struct
{
	DPSDK_CHAR						szId[DPSDK_ID_LEN];
	DPSDK_CHAR						szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR						szOrgPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32						iCapturePictureNum;
	DPSDK_FILE_URL*					pCapturePictureList;
	DPSDK_INT32						iPlateNoPictureNum;
	DPSDK_FILE_URL*					pPlateNoPictureList;
	DPSDK_INT32						iMatchFlag;
	DPSDK_INT32						iVehicleType;
	DPSDK_CHAR						szCardPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCardPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCardNo[DPSDK_ID_LEN_EX];
	DPSDK_BOOL						bFuzzyMatched;
	DPSDK_TIMET						tEnterTime;
	DPSDK_BASE_ID_NAME_INFO			struParkingLotInfo;
	DPSDK_BASE_ID_NAME_INFO			struPositionInfo;
	DPSDK_BASE_ID_NAME_INFO			struPointInfo;
	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCompany[DPSDK_NAME_LEN];
	DPSDK_BASE_ID_NAME_INFO			struOrgInfo;
	DPSDK_INT32						iVehicleBrand;
	DPSDK_INT32						iVehicleColor;
	DPSDK_INT32						iVehicleModel;
	DPSDK_INT32						iAccessAuthority;
	DPSDK_INT32						iStatus;		//exit status：1=already exit，2=not exit
	DPSDK_INT32						iEntranceGroupNum;
	DPSDK_BASE_ID_NAME_INFO*		pEntranceGroupList;
	DPSDK_INT32 					iOrgInfoNum;
	DPSDK_ORG_SIMPLE_INFO* 			pOrgInfos;
	DPSDK_CHAR						szIssuePlace[DPSDK_PLATE_ISSUE_PLACE_LEN];		// Issue place
	DPSDK_INT32						iPlateNoLength;//Plate no. length : 0-none,1-short,2-medium,3-long
	DPSDK_CHAR						szPlateNoAreaCode[DPSDK_PLATE_AREA_CODE_LEN]; // Plate no. area code
	DPSDK_CHAR						szExtPlateNo[DPSDK_PLATE_NUMBER_LEN];//Extended plate no.
	DPSDK_INT32						iPlateType;//License plate type
	DPSDK_CHAR						szPlateTypeName[DPSDK_PLATE_TYPE_NAME_LEN];//License plate type name
}DPSDK_GET_PAGE_VEHICLE_ENTER_RECORD_INFO;

typedef struct
{
	DPSDK_INT32									iTotalCount;
	DPSDK_INT32									iPageDataNum;
	DPSDK_GET_PAGE_VEHICLE_ENTER_RECORD_INFO*	pPageDataList;
}DPSDK_GET_PAGE_VEHICLE_ENTER_RECORD_RESULT;

typedef struct
{
	DPSDK_CHAR						szId[DPSDK_ID_LEN];
	DPSDK_CHAR						szExitPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR						szOrgExitPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32						iExitCapturePictureNum;
	DPSDK_FILE_URL*					pExitCapturePictureList;
	DPSDK_INT32						iExitPlateNoPictureNum;
	DPSDK_FILE_URL*					pExitPlateNoPictureList;
	DPSDK_INT32						iEnterPlateNoPictureNum;
	DPSDK_FILE_URL*					pEnterPlateNoPictureList;
	DPSDK_INT32						iExitMatchFlag;
	DPSDK_INT32						iEnterMatchFlag;
	DPSDK_BOOL						bFuzzyMatched;
	DPSDK_TIMET						tExitTime;
	DPSDK_BASE_ID_NAME_INFO			struExitParkingLotInfo;
	DPSDK_BASE_ID_NAME_INFO			struExitPositionInfo;
	DPSDK_BASE_ID_NAME_INFO			struExitPointInfo;
	DPSDK_TIMET						tParkingTime;									// parking time: second
	DPSDK_CHAR						szEnterPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR						szEnterOrgPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32						iEnterCapturePictureNum;
	DPSDK_FILE_URL*					pEnterCapturePictureList;
	DPSDK_TIMET						tEnterTime;
	DPSDK_BASE_ID_NAME_INFO			struEnterParkingLotInfo;
	DPSDK_BASE_ID_NAME_INFO			struEnterPositionInfo;
	DPSDK_BASE_ID_NAME_INFO			struEnterPointInfo;
	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCompany[DPSDK_NAME_LEN];
	DPSDK_BASE_ID_NAME_INFO			struOrgInfo;
	DPSDK_INT32						iVehicleBrand;
	DPSDK_INT32						iVehicleColor;
	DPSDK_INT32						iVehicleModel;
	DPSDK_INT32						iAccessAuthority;
	DPSDK_INT32						iVehicleType;
	DPSDK_CHAR						szCardPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCardPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCardNo[DPSDK_ID_LEN_EX];
	DPSDK_INT32						iEntranceGroupNum;
	DPSDK_BASE_ID_NAME_INFO*		pEntranceGroupList;
	DPSDK_INT32 					iOrgInfoNum;
	DPSDK_ORG_SIMPLE_INFO* 			pOrgInfos;
	DPSDK_CHAR						szIssuePlace[DPSDK_PLATE_ISSUE_PLACE_LEN];		// Issue place
	DPSDK_INT32						iPlateNoLength;//Plate no. length : 0-none,1-short,2-medium,3-long
	DPSDK_CHAR						szPlateNoAreaCode[DPSDK_PLATE_AREA_CODE_LEN]; // Plate no. area code
	DPSDK_CHAR						szExtPlateNo[DPSDK_PLATE_NUMBER_LEN];//Extended plate no.
	DPSDK_INT32						iPlateType;//License plate type
	DPSDK_CHAR						szPlateTypeName[DPSDK_PLATE_TYPE_NAME_LEN];//License plate type name
	DPSDK_CHAR						szEnterExtPlateNo[DPSDK_PLATE_NUMBER_LEN];//Enter extended plate no.
}DPSDK_GET_PAGE_VEHICLE_EXIT_RECORD_INFO;

typedef struct
{
	DPSDK_INT32									iTotalCount;
	DPSDK_INT32									iPageDataNum;
	DPSDK_GET_PAGE_VEHICLE_EXIT_RECORD_INFO*	pPageDataList;
}DPSDK_GET_PAGE_VEHICLE_EXIT_RECORD_RESULT;

typedef struct
{
	DPSDK_CHAR						szId[DPSDK_ID_LEN];
	DPSDK_CHAR						szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR						szOrgPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32						iCapturePictureNum;
	DPSDK_FILE_URL*					pCapturePictureList;
	DPSDK_INT32						iPlateNoPictureNum;
	DPSDK_FILE_URL*					pPlateNoPictureList;
	DPSDK_BOOL						bFuzzyMatched;
	DPSDK_TIMET						tEnterTime;
	DPSDK_BASE_ID_NAME_INFO			struParkingLotInfo;
	DPSDK_BASE_ID_NAME_INFO			struPositionInfo;
	DPSDK_BASE_ID_NAME_INFO			struPointInfo;
	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCompany[DPSDK_NAME_LEN];
	DPSDK_BASE_ID_NAME_INFO			struOrgInfo;
	DPSDK_INT32						iVehicleBrand;
	DPSDK_INT32						iVehicleColor;
	DPSDK_INT32						iVehicleModel;
	DPSDK_BOOL						bEnableRecover;
	DPSDK_INT32						iAccessAuthority;
	DPSDK_INT32						iVehicleType;
	DPSDK_INT32						iMatchFlag;
	DPSDK_CHAR						szCardPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCardPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCardNo[DPSDK_ID_LEN_EX];
	DPSDK_INT32						iEntranceGroupNum;
	DPSDK_BASE_ID_NAME_INFO*		pEntranceGroupList;
	DPSDK_INT32 					iOrgInfoNum;
	DPSDK_ORG_SIMPLE_INFO* 			pOrgInfos;
	DPSDK_CHAR						szIssuePlace[DPSDK_PLATE_ISSUE_PLACE_LEN];		// Issue place
	DPSDK_INT32						iPlateNoLength;//Plate no. length : 0-none,1-short,2-medium,3-long
	DPSDK_CHAR						szPlateNoAreaCode[DPSDK_PLATE_AREA_CODE_LEN]; // Plate no. area code
	DPSDK_CHAR						szExtPlateNo[DPSDK_PLATE_NUMBER_LEN];//Extended plate no.
	DPSDK_INT32						iPlateType;//License plate type
	DPSDK_CHAR						szPlateTypeName[DPSDK_PLATE_TYPE_NAME_LEN];//License plate type name
}DPSDK_GET_PAGE_VEHICLE_FORCE_EXIT_RECORD_INFO;

typedef struct
{
	DPSDK_INT32										iTotalCount;
	DPSDK_INT32										iPageDataNum;
	DPSDK_GET_PAGE_VEHICLE_FORCE_EXIT_RECORD_INFO*	pPageDataList;
}DPSDK_GET_PAGE_VEHICLE_FORCE_EXIT_RECORD_RESULT;

typedef struct
{
	DPSDK_CHAR						szId[DPSDK_ID_LEN];
	DPSDK_CHAR						szLayerName[DPSDK_NAME_LEN];
	DPSDK_FLOAT						fX;
	DPSDK_FLOAT						fY;
	DPSDK_FLOAT						fHeight;
	DPSDK_FLOAT						fWidth;
	DPSDK_FLOAT						fAngle;
	DPSDK_BASE_ID_NAME_INFO			struInfo;
	DPSDK_CHAR						szPictureUrl[DPSDK_URL_LEN_EX];
}DPSDK_GET_VEHICLE_RECORD_LAYER_INFO;

typedef struct
{
	DPSDK_CHAR						szId[DPSDK_ID_LEN];
	DPSDK_CHAR						szEnterId[DPSDK_ID_LEN];
	DPSDK_CHAR						szExitId[DPSDK_ID_LEN];
	DPSDK_CHAR						szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR						szInPlateNoPic[DPSDK_URL_LEN_EX];
	DPSDK_CHAR						szOutPlateNoPic[DPSDK_URL_LEN_EX];
	DPSDK_CHAR						szInPictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR						szOutPictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_BASE_ID_NAME_INFO			struParkingSpaceInfo;
	DPSDK_BASE_ID_NAME_INFO			struDevnfo;
	DPSDK_BASE_ID_NAME_INFO			struChannelInfo;
	DPSDK_TIMET						tInTime;
	DPSDK_TIMET						tOutTime;
	DPSDK_INT32						iParkingTime;
	DPSDK_BASE_ID_NAME_INFO			struParkingLotInfo;
	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCompany[DPSDK_NAME_LEN];
	DPSDK_BASE_ID_NAME_INFO			struOrgInfo;
	DPSDK_INT32						iVehicleBrand;
	DPSDK_INT32						iVehicleColor;
	DPSDK_INT32						iInputVehicleBrand;
	DPSDK_INT32						iInputVehicleColor;
	DPSDK_GET_VEHICLE_RECORD_LAYER_INFO struLayerInfo;
	DPSDK_INT32						iVehicleType;
	DPSDK_INT32						iEntranceGroupNum;
	DPSDK_BASE_ID_NAME_INFO*		pEntranceGroupList;
	DPSDK_INT32 				    iOrgInfoNum;
	DPSDK_ORG_SIMPLE_INFO* 			pOrgInfos;
}DPSDK_GET_PARKING_RECORD_INFO;

typedef struct
{
	DPSDK_INT32 iNum;
	DPSDK_GET_PARKING_RECORD_INFO* pParkingRecordList;
}DPSDK_GET_PARKING_RECORD_LIST;

typedef struct
{
	DPSDK_CHAR						szId[DPSDK_ID_LEN];
	DPSDK_INT32						iStatus;										//exit status：1=already exit，2=not exit
	DPSDK_CHAR						szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR						szOrgPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_BASE_ID_NAME_INFO			struParkingLotInfo;
	DPSDK_BASE_ID_NAME_INFO			struPositionInfo;
	DPSDK_BASE_ID_NAME_INFO			struPointInfo;
	DPSDK_TIMET						tTime;
	DPSDK_INT32						iFuzzyMatched;
	DPSDK_INT32						iAccessAuthority;

	DPSDK_INT32						iChannelNum;
	DPSDK_BASE_ID_NAME_INFO*		pChannelList;

	DPSDK_GET_VEHICLE_RECORD_LAYER_INFO struLayerInfo;
	DPSDK_INT32						iCapturePictureNum;
	DPSDK_FILE_URL*					pCapturePictureList;
	DPSDK_INT32						iPlateNoPictureNum;
	DPSDK_FILE_URL*					pPlateNoPictureList;
	DPSDK_INT32						iParkingTime;
	DPSDK_INT32						iMatchFlag;
	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCompany[DPSDK_NAME_LEN];
	DPSDK_BASE_ID_NAME_INFO			struOrgInfo;
	DPSDK_INT32						iVehicleBrand;
	DPSDK_INT32						iVehicleColor;
	DPSDK_INT32						iVehicleModel;
	DPSDK_INT32						iInputVehicleBrand;
	DPSDK_INT32						iInputVehicleColor;
	DPSDK_INT32						iVehicleType;
	DPSDK_CHAR						szCardPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCardPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCardNo[DPSDK_ID_LEN_EX];

	DPSDK_INT32						iEntranceGroupNum;
	DPSDK_BASE_ID_NAME_INFO*		pEntranceGroupList;
	DPSDK_INT32 				    iOrgInfoNum;
	DPSDK_ORG_SIMPLE_INFO* 			pOrgInfos;
	DPSDK_CHAR						szIssuePlace[DPSDK_PLATE_ISSUE_PLACE_LEN];		// Issue place
	DPSDK_INT32						iPlateNoLength;//Plate no. length : 0-none,1-short,2-medium,3-long
	DPSDK_CHAR						szPlateNoAreaCode[DPSDK_PLATE_AREA_CODE_LEN]; // Plate no. area code
	DPSDK_CHAR						szExtPlateNo[DPSDK_PLATE_NUMBER_LEN];//Extended plate no.
	DPSDK_INT32						iPlateType;//License plate type
	DPSDK_CHAR						szPlateTypeName[DPSDK_PLATE_TYPE_NAME_LEN];//License plate type name
}DPSDK_GET_VEHICLE_RECORD_INFO;

typedef struct
{
	DPSDK_GET_VEHICLE_RECORD_INFO	struEnterInfo;
	DPSDK_GET_VEHICLE_RECORD_INFO	struExitInfo;

	DPSDK_GENERAL_ID_LIST			struParkingId;
}DPSDK_GET_VEHICLE_ENTER_EXIT_RECORD_INFO;

typedef struct
{
	DPSDK_GET_VEHICLE_RECORD_INFO	struForceExitInfo;

	DPSDK_GENERAL_ID_LIST			struParkingId;
}DPSDK_GET_VEHICLE_FORCE_EXIT_RECORD_INFO;

typedef struct
{
	DPSDK_CHAR						szId[DPSDK_ID_LEN];
	DPSDK_INT32						iRecordType;
	DPSDK_CHAR						szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32						iVehicleBrand;
	DPSDK_INT32						iVehicleColor;
}DPSDK_UPDATE_VEHICLE_RECORD_INFO;

typedef struct
{
	DPSDK_UPDATE_VEHICLE_RECORD_INFO struEnterInfo;
	DPSDK_UPDATE_VEHICLE_RECORD_INFO struExitInfo;
}DPSDK_UPDATE_VEHICLE_ENTER_EXIT_RECORD_INFO;
typedef struct
{
	DPSDK_GENERAL_ID_LIST			struSpaceId;
	DPSDK_INT32						iSpaceStatus;
	DPSDK_TIMET						tStartTime;
	DPSDK_TIMET						tEndTime;
	DPSDK_INT32						iVehicleType;
	DPSDK_CHAR						szEntranceGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR						szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_BOOL						bPlateNoMatchMode;								// 0 : 	Fuzzy matching, 1 :Exact matching
	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCompany[DPSDK_NAME_LEN];
	DPSDK_CHAR						szOrgCode[DPSDK_ID_LEN];
	DPSDK_CHAR						szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_INT32						iVehicleColor;									// O: all
	DPSDK_INT32						iVehicleBrand;									// 0: all
	DPSDK_INT32						iExportRange;							// export range：0=all，1=select record，2=custom range
	DPSDK_INT32						iDataType;								// export data type：0=record，1=record and picture
	DPSDK_INT32						iExportType;							// export type，zip
	DPSDK_GENERAL_ID_LIST			struSelectId;
	DPSDK_BOOL						bDisplayTimezoneOffset;					// display time zone：0=no，1=yes							
}DPSDK_EXPORT_PARKING_RECORD_PARAM;

typedef struct
{
	DPSDK_GENERAL_ID_LIST			struPositionId;
	DPSDK_TIMET						tStartTime;
	DPSDK_TIMET						tEndTime;
	DPSDK_INT32						iVehicleType;
	DPSDK_CHAR						szEntranceGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR						szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_BOOL						bPlateNoMatchMode;								// 0 : 	Fuzzy matching, 1 :Exact matching
	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCompany[DPSDK_NAME_LEN];
	DPSDK_CHAR						szOrgCode[DPSDK_ID_LEN];
	DPSDK_CHAR						szCardPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCardPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCardNo[DPSDK_ID_LEN_EX];
	DPSDK_INT32						iVehicleColor;
	DPSDK_INT32						iVehicleBrand;
	DPSDK_INT32						iVehicleModel;
	DPSDK_CHAR						szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_INT32						iExportRange;							// export range：0=all，1=select record，2=custom range
	DPSDK_INT32						iDataType;								// export data type：0=record，1=record and picture
	DPSDK_INT32						iExportType;							// export type，zip
	DPSDK_GENERAL_ID_LIST			struSelectId;
	DPSDK_BOOL						bDisplayTimezoneOffset;					// display time zone：0=no，1=yes							
}DPSDK_EXPORT_VEHICLE_RECORD_PARAM;

typedef struct
{
	DPSDK_EXPORT_VEHICLE_RECORD_PARAM	struParam;
	DPSDK_INT32							iStatus;							// O=all, 1=already exit，2=not exit
}DPSDK_EXPORT_VEHICLE_ENTER_RECORD_PARAM;

typedef struct
{
	DPSDK_CHAR						szFileUrl[DPSDK_URL_LEN];
	DPSDK_CHAR						szSession[DPSDK_SESSION_LEN];
}DPSDK_EXPORT_VEHICLE_RECORD_RESULT;
/*******************************************************	entrance record end	*********************************************************/

/************************************************************	case  begin		*********************************************************/

typedef struct
{
	DPSDK_INT32						iRecordType;//face record type 0=face capture，1=face recogintion，default 0
	DPSDK_CHAR						szRecordId[DPSDK_ID_LEN];
	DPSDK_CHAR						szSession[DPSDK_ID_LEN];
}DPSDK_CASE_RECORD_INFO;

typedef struct
{
	DPSDK_INT32						iRecordNum;
	DPSDK_CASE_RECORD_INFO*			pRecordList;
}DPSDK_CASE_RECORD_LIST;

typedef struct
{
	DPSDK_CHAR						szFileName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szFileUrl[DPSDK_URL_LEN];
	DPSDK_INT32						iFileSize;
	DPSDK_INT32						iFileType;								// 0=picture，1=vedio
}DPSDK_CASE_FILE_INFO;

typedef struct
{
	DPSDK_CHAR						szCaseId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCaseName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCaseTypeId[DPSDK_ID_LEN];
	DPSDK_INT32						iStatus;								// 0=close，1=open
	DPSDK_TIMET						tStartTime;
	DPSDK_TIMET						tEndTime;
	DPSDK_CHAR						szLocation[DPSDK_TZ_ADDRESS_LEN];
	DPSDK_CHAR						szRemark[DPSDK_MEMO_LEN_LONG];
	DPSDK_CHAR						szLogoUrl[DPSDK_URL_LEN];

	//addResourceInfo
	DPSDK_CASE_RECORD_LIST			struNonVehicleRecords;
	DPSDK_CASE_RECORD_LIST			struHumanRecords;
	DPSDK_CASE_RECORD_LIST			struVehicleCaptureRecords;
	DPSDK_CASE_RECORD_LIST			struAccessRecords;
	DPSDK_CASE_RECORD_LIST			struFaceRecords;
	DPSDK_CASE_RECORD_LIST			struPosRecords;
	DPSDK_CASE_RECORD_LIST			struMPTRecords;

	DPSDK_INT32						iAttachmentsNum;
	DPSDK_CASE_FILE_INFO*			pAttachmentsList;
}DPSDK_CASE_INFO;


typedef struct
{
	DPSDK_CASE_INFO					struAddCaseInfo;
	//delResourceInfo
	DPSDK_INT32						iNonVehicleRecordNum;
	DPSDK_CHANNEL_ID*				pNonVehicleRecordId;
	DPSDK_INT32						iHumanRecordNum;
	DPSDK_CHANNEL_ID*				pHumanRecordId;
	DPSDK_INT32						iVehicleRecordNum;
	DPSDK_CHANNEL_ID*				pVehicleRecordId;
	DPSDK_INT32						iAccessRecordNum;
	DPSDK_CHANNEL_ID*				pAccessRecordId;
	DPSDK_INT32						iFaceRecordNum;
	DPSDK_CHANNEL_ID*				pFaceRecordId;
	DPSDK_INT32						iPOSRecordNum;
	DPSDK_CHANNEL_ID*				pPOSRecordId;
	DPSDK_INT32						iMPTRecordNum;
	DPSDK_CHANNEL_ID*				pMPTRecordId;
	DPSDK_INT32						iAttachmentRecordNum;
	DPSDK_CHANNEL_ID*				pAttachmentRecordId;
}DPSDK_MODIFY_CASE_INFO;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
}DPSDK_UPDATECASE_FAIL_ID;

typedef struct
{
	DPSDK_INT32 iOverStepNum;
	DPSDK_UPDATECASE_FAIL_ID* pOverStepList;
	DPSDK_INT32 iRepeatNum;
	DPSDK_UPDATECASE_FAIL_ID* pRepeatList;
}DPSDK_UPDATECASE_FAIL_LIST;

typedef struct
{
	DPSDK_CHAR						szCaseId[DPSDK_ID_LEN];								// Case ID, Required
	DPSDK_INT32						iOperateType;										// Operation type, 1-Export, 2-Download file, Required
	DPSDK_INT32						iOperateDetailLen;									// Operate detail length
	DPSDK_CHAR*						pOperateDetailData;									// Operate detail data
}DPSDK_ADD_OPERATE_LOG_PARAM;

typedef struct
{
	DPSDK_CHAR						szLogId[DPSDK_ID_LEN];								// Log ID
	DPSDK_CHAR						szCaseId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCaseNo[DPSDK_ID_LEN];
	DPSDK_CHAR						szUserName[DPSDK_NAME_LEN_EX];						// User name
	DPSDK_INT32						iOperateType;										// Operation type, 1-Export, 2-Download file, Required
	DPSDK_INT32						iOperateDetailLen;									// Operate detail length
	DPSDK_CHAR*						pOperateDetailData;									// Operate detail data
	DPSDK_TIMET						tOperateTime;										// Operate time, Required		
}DPSDK_CASE_OPERATE_LOG_INFO;

typedef struct
{
	DPSDK_INT32						iLogNum;
	DPSDK_CASE_OPERATE_LOG_INFO*	pLogList;
}DPSDK_CASE_OPERATE_LOG_LIST;

typedef struct
{
	DPSDK_PAGE_INFO					struPageInfo;
	DPSDK_ORDER_INFO				struOrderInfo;									// orderType: 0=case id，1=begin time, 2= end time, default 0; orderDirection: 0=Descending，1=Ascending，default 0
	DPSDK_INT32						iStatus;										// 0=close，1=open
	DPSDK_CHAR						szCaseTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR						szKeyword[DPSDK_KEYWORD_LEN_EX];
}DPSDK_GET_PAGE_CASE_PARAM;

typedef struct
{
	DPSDK_CHAR						szCaseId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCaseNo[DPSDK_ID_LEN];
	DPSDK_CHAR						szCaseName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCaseTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCaseTypeName[DPSDK_NAME_LEN];
	DPSDK_INT32						iStatus;										// 0=close，1=open
	DPSDK_TIMET						tStartTime;
	DPSDK_TIMET						tEndTime;
	DPSDK_BOOL						bEnableEdit;									// 0=no, 1=yes	
}DPSDK_PAGE_CASE_INFO;

typedef struct
{
	DPSDK_INT32						iTotalCount;
	DPSDK_INT32						iCaseNum;
	DPSDK_PAGE_CASE_INFO*			pCaseList;
}DPSDK_GET_PAGE_CASE_RESULT;

typedef struct
{
	DPSDK_INT32						iTotalCount;
	DPSDK_INT32						iOpenCount;
	DPSDK_INT32						iCloseCount;
}DPSDK_CASE_STATISTICS;

typedef struct
{
	DPSDK_CHAR						szCaseId[DPSDK_ID_LEN];
}DPSDK_CASE_PARAM;

typedef struct
{
	DPSDK_CHAR  szAttachmentId[DPSDK_ID_LEN];						// Attachmeny ID
	DPSDK_CHAR	szUploadUserName[DPSDK_NAME_LEN_EX];				// Upload user name
	DPSDK_CHAR	szFileName[DPSDK_NAME_LEN_MAX];						// File name
	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];							// File download URL 
	DPSDK_INT32 iFileType;											// File type, 0:image 1:video
	DPSDK_TIMET tUploadTime;										// Update time, Required
	DPSDK_INT32	iFileSize;											// File Size
}DPSDK_CASE_ATTACHMENT_INFO;

typedef struct
{
	DPSDK_CHAR szRecordId[DPSDK_ID_LEN];
	DPSDK_CHAR szSourceId[DPSDK_ID_LEN];
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szVehicleImageUrl[DPSDK_URL_LEN_EX];

	DPSDK_INT32 iVideoUrlNum;
	DPSDK_FILE_URL* pVideoUrlList;

	DPSDK_INT32 iVehicleType;
	DPSDK_INT32 iVehicleColor;
	DPSDK_TIMET tCaptureTime;
	DPSDK_INT32 iRiderNum;
	DPSDK_INT32 iFaceInfoNum;
	DPSDK_NOVEHICLE_FACE_INFO* pFaceInfoList;
}DPSDK_CASE_NONVEHICLE_INFO;

typedef struct
{
	DPSDK_CHAR	szRecordId[DPSDK_ID_LEN];
	DPSDK_CHAR  szSourceId[DPSDK_ID_LEN];
	DPSDK_TIMET tCaptureTime;								// Capture time
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];			// Channel ID
	DPSDK_CHAR  szChannelName[DPSDK_CHANNEL_NAME_LEN];		// Channel name
	DPSDK_CHAR  szFaceImageUrl[DPSDK_URL_LEN];				// Face image url
	DPSDK_CHAR  szPictureUrl[DPSDK_URL_LEN];				// Scene picture url
	DPSDK_CHAR  szHumanImageUrl[DPSDK_URL_LEN];				// Human picture url

	DPSDK_INT32 iVideoUrlNum;
	DPSDK_FILE_URL* pVideoUrlList;

	DPSDK_INT32	iHat;										// Whether or not wearing a hat: 0-unknown, 1-yes, 2-no
	DPSDK_INT32	iGender;
	DPSDK_INT32	iBag;										// Whether or not carrying a bag: 0-unknown, 1-yes, 2-no
	DPSDK_INT32	iAge;
	DPSDK_INT32	iMask;
	DPSDK_INT32	iGlasses;
	DPSDK_INT32	iBeard;
	DPSDK_INT32	iEmotion;
	DPSDK_INT32	iCoat;										// Coat style: 0-unknown, 1-long sleeve, 2-short sleeve
	DPSDK_INT32	iCoatColor;
	DPSDK_INT32	iTrousers;									// Trousers style:  0-unknown, 1-long trousers, 2-short trousers/breeches
	DPSDK_INT32 iTrousersColor;
}DPSDK_CASE_HUMAN_INFO;

typedef struct
{
	DPSDK_CHAR szRecordID[DPSDK_ID_LEN];
	DPSDK_CHAR szSourceId[DPSDK_ID_LEN];
	DPSDK_TIMET tCaptureTime;
	DPSDK_CHAR szChannelId[DPSDK_CHANNEL_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_CHANNEL_NAME_LEN];
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szExtPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szCapturePicture[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szPlateNoPicture[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szVehiclePicture[DPSDK_URL_LEN_EX];
	DPSDK_CHAR szMergePicture[DPSDK_URL_LEN_EX];

	DPSDK_INT32 iVideoUrlNum;
	DPSDK_FILE_URL* pVideoUrlList;

	DPSDK_INT32 iEntranceGroupNameNum;
	DPSDK_GROUP_NAME* pEntranceGroupNameNum;

	DPSDK_INT32 iSurveyGroupNameNum;
	DPSDK_GROUP_NAME* pSurveyGroupNameNum;

	DPSDK_INT32 iSourceRecordType;		//0:feature 1:image
	DPSDK_INT32 iVehicleBrand;
	DPSDK_INT32 iVehicleColor;
	DPSDK_INT32 iVehicleModel;
	DPSDK_CHAR szPersonId[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szEmail[DPSDK_ALARM_EMAILRECEIVER_LEN];
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN_LONG];
	DPSDK_CHAR szIssuePlace[DPSDK_PLATE_ISSUE_PLACE_LEN];		// Issue place
}DPSDK_CASE_VEHICLE_INFO;

typedef struct
{
	DPSDK_CHAR szRecordID[DPSDK_ID_LEN];
	DPSDK_CHAR szSourceId[DPSDK_ID_LEN];
	DPSDK_TIMET tRecordTime;
	DPSDK_CHAR szAlarmCode[DPSDK_CODE_LEN];
	DPSDK_CHAR szCardNo[DPSDK_CARD_NO_LEN];
	DPSDK_CHAR szFacePicUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szCaptureImageUrl[DPSDK_URL_LEN];

	DPSDK_INT32 iVideoUrlNum;
	DPSDK_FILE_URL* pVideoUrlList;

	DPSDK_CHAR szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN_EX];
	DPSDK_BASE_ID_NAME_INFO	struDeviceInfo;							// device code and device name
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;						// channel code and channel name	
	DPSDK_BASE_ID_NAME_INFO struAlarmTypeInfo;						// alarm type id and alarm type name
	DPSDK_INT32 iGender;
	DPSDK_CHAR szSipId[DPSDK_ID_LEN];
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN];
	DPSDK_CHAR szOrgCode[DPSDK_ID_LEN];
	DPSDK_CHAR szTel[DPSDK_PHONE_LEN];
	DPSDK_CHAR szIdNo[DPSDK_ID_LEN];
}DPSDK_CASE_ACCESS_INFO;

typedef struct
{
	DPSDK_CHAR  szRecordId[DPSDK_ID_LEN];
	DPSDK_CHAR  szSourceId[DPSDK_ID_LEN];
	DPSDK_CHAR  szPictureUrl[DPSDK_URL_LEN];
	DPSDK_CHAR  szFacePictureUrl[DPSDK_URL_LEN];
	DPSDK_CHAR  szFaceImageUrl[DPSDK_URL_LEN];

	DPSDK_INT32 iVideoUrlNum;
	DPSDK_FILE_URL* pVideoUrlList;

	DPSDK_CHAR	szPersonTypeName[DPSDK_NAME_LEN];
	DPSDK_CHAR	szPersonTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR	szRegion[DPSDK_NAME_LEN];
	DPSDK_CHAR  szIdNo[DPSDK_ID_LEN];
	DPSDK_CHAR	szRemark[DPSDK_MEMO_LEN_LONG];
	DPSDK_BASE_ID_NAME_INFO struPersonInfo;
	DPSDK_BASE_ID_NAME_INFO struChannelInfo;
	DPSDK_TIMET tCaptureTime;
	DPSDK_FLOAT	fSimilarity;								// 
	DPSDK_CHAR szAge[DPSDK_NUM_LEN];						// age
	DPSDK_INT32 iGender;									// sex，0=not distinguish，1=man，2=woman
	DPSDK_BOOL bFringe;										// fringe，0=no，1=yes
	DPSDK_INT32 iEye;										// eye，1=not distinguish，2=close eye，3=open eye
	DPSDK_INT32	iMouth;										// mouth，1=not distinguish，2=close mouth，3=open mouth
	DPSDK_INT32	iMask;										// mask，0=don't know(SDK)，1=not distinguish，2=no，3=yes
	DPSDK_INT32	iBeard;										// beard，0=don't know(SDK)，1=not distinguish，2=no，3=yes
	DPSDK_INT32	iGlasses;
	DPSDK_INT32	iEmotion;
}DPSDK_CASE_FACE_INFO;

typedef struct
{
	DPSDK_CHAR						szCaseId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCaseNo[DPSDK_ID_LEN];
	DPSDK_CHAR						szCaseName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szCaseTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR						szCaseTypeName[DPSDK_NAME_LEN];
	DPSDK_INT32						iStatus;
	DPSDK_TIMET						tStartTime;
	DPSDK_TIMET						tEndTime;
	DPSDK_CHAR                      szLocation[DPSDK_URL_LEN];
	DPSDK_CHAR                      szRemark[DPSDK_MEMO_LEN_LONG];
	DPSDK_CHAR						szLogoUrl[DPSDK_URL_LEN];
	DPSDK_BOOL						bEnableEdit;

	DPSDK_INT32 iNonVehicleNum;
	DPSDK_CASE_NONVEHICLE_INFO* pNonVehicleList;

	DPSDK_INT32 iHumanNum;
	DPSDK_CASE_HUMAN_INFO *pHumanList;

	DPSDK_INT32 iVehicleCaptureNum;
	DPSDK_CASE_VEHICLE_INFO* pVehicleCaptureList;

	DPSDK_INT32 iAccessNum;
	DPSDK_CASE_ACCESS_INFO* pAccessList;

	DPSDK_INT32 iFaceNum;
	DPSDK_CASE_FACE_INFO* pFaceList;

	DPSDK_INT32 iPosNum;
	DPSDK_GET_PAGE_POS_RECORD_INFO* pPosList;

	DPSDK_INT32 iAttachmentsNum;
	DPSDK_CASE_ATTACHMENT_INFO* pAttachmentsList;

	DPSDK_INT32 iMPTNum;
	DPSDK_GET_PAGE_MPT_RECORD_INFO* pMPTList;

}DPSDK_CASE_RESULT;

typedef struct
{
	DPSDK_INT32	iId;
	DPSDK_CHAR	szFileUrl[DPSDK_URL_LEN];							// File download URL
}DPSDK_CASE_LOGO_INFO;

typedef struct
{
	DPSDK_INT32 iUrlNum;
	DPSDK_CASE_LOGO_INFO* pUrlList;
}DPSDK_CASE_LOGO_RESULT;

typedef struct
{
	DPSDK_INT32 iCaseCount;
	DPSDK_INT32 iDiskStatus;
	DPSDK_INT32 iDiskCapacityStatus;
}DPSDK_CASE_CHECK_ADD_PREREQUISITE_RESULT;
/***********************************************************	case end		*********************************************************/

/***********************************************************	device begin	*********************************************************/

typedef struct
{
	DPSDK_PAGE_INFO							struPageInfo;
	DPSDK_CHAR								szKeyword[DPSDK_KEYWORD_LEN_EX];
	DPSDK_INT32 							iDeviceCategory;			// Device category
	DPSDK_INT32								iDeviceType;				// Device type see DPSDK_DEV_TYPE;
}DPSDK_GET_UNAUTHORIZED_DEVICES_PARAM;

typedef struct
{
	DPSDK_CHAR								szId[DPSDK_ID_LEN];
	DPSDK_CHAR								szDeviceName[DPSDK_NAME_LEN];
	DPSDK_CHAR								szDeviceIp[DPSDK_IP_LEN];
	DPSDK_CHAR								szDeviceModel[DPSDK_TYPE_LEN];
	DPSDK_INT32 							iDeviceCategory;			// Device category
	DPSDK_CHAR								szDeviceCategoryName[DPSDK_NAME_LEN];
	DPSDK_INT32								iDeviceType;				// Device type see DPSDK_DEV_TYPE;
	DPSDK_CHAR								szDeviceTypeName[DPSDK_NAME_LEN];;
	DPSDK_CHAR								szUnauthorizedReason[DPSDK_MEMO_LEN_LONG];
}DPSDK_GET_UNAUTHORIZED_DEVICES_INFO;

typedef struct
{
	DPSDK_INT32								iTotalCount;
	DPSDK_INT32								iPageNum;
	DPSDK_GET_UNAUTHORIZED_DEVICES_INFO*	pPageList;
}DPSDK_GET_UNAUTHORIZED_DEVICES_RESULT;

typedef struct
{
	DPSDK_ORDER_INFO						struOrderInfo;
	DPSDK_CHAR								szKeyword[DPSDK_KEYWORD_LEN_EX];
	DPSDK_CHAR								szOrgCode[DPSDK_ID_LEN];
	DPSDK_INT32								iDeviceCategory;
	DPSDK_INT32								iDeviceType;
	DPSDK_INT32								iStatus;							// 0=offline，1=online，-1=all
	DPSDK_INT32								iDomain;							// include domain devices：0=no，1=yes，-1=all
	DPSDK_INT32								iExportRange;						// 0=all，1=selected
	DPSDK_INT32								iExportType;						// zip, value in DPSDK_EXPORT_LOG_TYPE 
	DPSDK_INT32								iDisplayDevPwd;						// 0=no，1=yes
	DPSDK_CHAR								szEncryptPass[DPSDK_PWD_LEN];
	DPSDK_GENERAL_ID_LIST					struSelectIds;
	DPSDK_CHAR								szCredence[DPSDK_TOKEN_LEN];
}DPSDK_EXPORT_DEVICE_PARAM;

/***********************************************************	device end		*********************************************************/

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO					struParkingLotInfo;
	DPSDK_BASE_ID_NAME_INFO					struParentParkingLotInfo;
	DPSDK_BASE_ID_NAME_INFO					struPositionInfo;
	DPSDK_BASE_ID_NAME_INFO					struPointInfo;
	DPSDK_BASE_ID_NAME_INFO					struChannelInfo;
	DPSDK_GENERAL_ID_LIST                   struPointIdList;
	DPSDK_BOOL								bOpenSluiceResult;					// 0=faise，1=success
	int										iOpenSluiceMode;					// 0=system,1=remote,2=card face
	DPSDK_CHAR								szOpenSluiceUserId[DPSDK_USER_ID_LEN];
}DPSDK_ENTRANCE_OPENSLUICE_NOTIFY;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO					struParkingLotInfo;
	DPSDK_BASE_ID_NAME_INFO					struPositionInfo;
	DPSDK_BASE_ID_NAME_INFO					struPointInfo;
	DPSDK_BASE_ID_NAME_INFO					struChannelInfo;
	DPSDK_BASE_ID_NAME_INFO					struPersonInfo;
	DPSDK_CHAR								szCardNo[DPSDK_ID_LEN];
	int										iFailureReason;			// "失败原因：1=未启用刷卡功能，2=卡号不存在，3=车辆所属人员不一致，4=个人车位不足"

}DPSDK_ENTRANCE_SWIPECARD_PASS_FAILURE_NOTIFY;

typedef struct
{
	DPSDK_INT32                              iAction;
}DPSDK_VEHICLE_ISSUE_COMPLETE_NOTIFY;

typedef struct
{
	DPSDK_INT32	            iAction;	   //1:增加   2:删除
	DPSDK_CHAR				szOrgCode[DPSDK_ID_LEN];
}DPSDK_PARKING_ORG_AUTHORITY_CHANGE_NOTIFY;

typedef struct
{
	DPSDK_CHAR				szId[DPSDK_ID_LEN];
	DPSDK_CHAR				szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR				szOrgCode[DPSDK_ID_LEN];
	DPSDK_INT32	            iIdleParkingSpaceCount;
	DPSDK_INT32	            iTotalParkingSpaceCount;
}DPSDK_BASE_PARKING_LOT_NOTIFY;

typedef struct
{
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
}DPSDK_PARKING_LOT_ID;

typedef struct
{
	DPSDK_INT32 iParkingLotNum;
	DPSDK_PARKING_LOT_ID* struParkingLotIdList;
}DPSDK_PARKING_LOT_LIST;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO					struGroupInfo;
	DPSDK_INT32								iGroupColor;
	DPSDK_INT32								iDefaultGroup;
}DPSDK_CAPTURE_ENTRANCE_GROUP_INFO;

typedef struct
{
	DPSDK_BASE_ID_NAME_INFO					struParkingLotInfo;
	DPSDK_BASE_ID_NAME_INFO                 struParentParkingLotInfo;
	DPSDK_BASE_ID_NAME_INFO					struPositionInfo;
	DPSDK_BASE_ID_NAME_INFO					struPointInfo;
	DPSDK_BASE_ID_NAME_INFO					struChannelInfo;
	DPSDK_TIMET								tCaptureTime;
	DPSDK_GENERAL_ID_LIST					struBindingChannelIds;
	DPSDK_CHAR								szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR								szOriginalPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR								szExtPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32								iFuzzyMatched;
	DPSDK_INT32								iVehicleBrand;
	DPSDK_INT32								iVehicleColor;
	DPSDK_INT32								iVehicleModel;
	DPSDK_INT32								iInputVehicleBrand;
	DPSDK_INT32								iInputVehicleColor;
	DPSDK_CHAR								szCapturePicture[DPSDK_URL_LEN];
	DPSDK_CHAR								szCapturePlatePicture[DPSDK_URL_LEN];
	DPSDK_INT32								iDirect;							// 8=enter，9=exit
	DPSDK_CHAR								szLastEnterRecordId[DPSDK_ID_LEN];
	DPSDK_CHAR								szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR								szFirstName[DPSDK_NAME_LEN];
	DPSDK_CHAR								szLastName[DPSDK_NAME_LEN];
	DPSDK_CHAR								szCompanyName[DPSDK_NAME_LEN];
	DPSDK_BASE_ID_NAME_INFO					struOrgInfo;
	DPSDK_CHAR								szFacePicture[DPSDK_URL_LEN];		// https://10.10.10.11:443/upload/person/xxx.jpg
	DPSDK_INT32								iPassModel;							// 1=Released, 2=Not Released
	DPSDK_INT32								iVehicleType;						// 1=visitor，2=allow list，4=block list，5=Temporary car
	DPSDK_INT32								iAccessAuthority;
	DPSDK_INT32								iParkingTime;
	DPSDK_INT32								iEntranceGroupsNum;
	DPSDK_CAPTURE_ENTRANCE_GROUP_INFO*		pEntranceGroupsList;
	DPSDK_INT32                             iOrgInfoNum;
	DPSDK_ORG_INFO_NOTIFY*                  pOrgInfos;
	DPSDK_ORG_INFO_NOTIFY                   struParkingOrgInfos;
}DPSDK_ENTRANCE_VEHICLE_CAPTURE_INFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR								szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32								iInputVehicleBrand;
	DPSDK_INT32								iInputVehicleColor;
	DPSDK_CHAR								szLastEnterRecordId[DPSDK_ID_LEN];
	DPSDK_CHAR								szPersonId[DPSDK_ID_LEN];
	DPSDK_CHAR								szFirstName[DPSDK_NAME_LEN];
	DPSDK_CHAR								szLastName[DPSDK_NAME_LEN];
	DPSDK_CHAR								szCompanyName[DPSDK_NAME_LEN];
	DPSDK_BASE_ID_NAME_INFO					struOrgInfo;
	DPSDK_CHAR								szFacePicture[DPSDK_URL_LEN];		// https://10.10.10.11:443/upload/person/xxx.jpg
	DPSDK_INT32								iVehicleType;						// 1=visitor，2=allow list，4=block list，5=Temporary car
	DPSDK_INT32								iAccessAuthority;
	DPSDK_INT32								iParkingTime;
	DPSDK_INT32								iEntranceGroupsNum;
	DPSDK_CAPTURE_ENTRANCE_GROUP_INFO*		pEntranceGroupsList;
}DPSDK_ENTRANCE_VEHICLE_ACCESS_AUTHORITY_INFO;

typedef struct
{
	DPSDK_CHAR				szParkingLotId[DPSDK_ID_LEN];							// parkingLotId
	DPSDK_CHAR				szParkingLotName[DPSDK_NAME_LEN];						// parkingLotName
	DPSDK_CHAR				szPositionId[DPSDK_ID_LEN];								// positionId
	DPSDK_CHAR				szPositionName[DPSDK_NAME_LEN];						// positionName
	DPSDK_CHAR				szPointId[DPSDK_ID_LEN];							// pointId
	DPSDK_CHAR				szPointName[DPSDK_NAME_LEN];						// pointName
	DPSDK_CHAR				szChannelId[DPSDK_ID_LEN];							// channelId
	DPSDK_CHAR				szChannelName[DPSDK_NAME_LEN];						// channelName
	DPSDK_INT32				iParkingSpaceNum;									// parkingSpaceNum
	DPSDK_INT32				iUsedParkingSpaceNum;								// usedParkingSpaceNum
	DPSDK_CHAR				szPersonId[DPSDK_ID_LEN];							// personId
	DPSDK_CHAR				szfirstName[DPSDK_NAME_LEN];						// firstName
	DPSDK_CHAR				szlastName[DPSDK_NAME_LEN];						    // lastName	
}DPSDK_ENTRANCE_OVERSTEP_PERSON_PARKINGSPACE_NOTIFY;

typedef struct
{
	DPSDK_CHAR				szParkingLotId[DPSDK_ID_LEN];							// parkingLotId
	DPSDK_CHAR				szParkingLotName[DPSDK_NAME_LEN];						// parkingLotName
	DPSDK_CHAR				szParentParkingLotId[DPSDK_ID_LEN];							// parentParkingLotId
	DPSDK_CHAR				szParentParkingLotName[DPSDK_NAME_LEN];						// parentParkingLotName
	DPSDK_CHAR				szPositionId[DPSDK_ID_LEN];								// positionId
	DPSDK_CHAR				szPositionName[DPSDK_NAME_LEN];						// positionName
	DPSDK_CHAR				szPointId[DPSDK_ID_LEN];							// pointId
	DPSDK_CHAR				szPointName[DPSDK_NAME_LEN];						// pointName
	DPSDK_CHAR				szChannelId[DPSDK_ID_LEN];							// channelId
	DPSDK_CHAR				szChannelName[DPSDK_NAME_LEN];						// channelName
	DPSDK_INT32				iParkingSpaceNum;									// parkingSpaceNum
	DPSDK_INT32				iUsedParkingSpaceNum;								// usedParkingSpaceNum
	DPSDK_CHAR				szGroupId[DPSDK_ID_LEN];							// groupId
	DPSDK_CHAR				szGroupName[DPSDK_NAME_LEN];						// groupName
	DPSDK_INT32				iDefaultGroup;                                      //idefaultGroup  1 YES  0 NO
}DPSDK_ENTRANCE_OVERSTEP_GROUP_PARKINGSPACE_NOTIFY;

typedef struct
{
	DPSDK_CHAR								szPersonGroupId[DPSDK_ID_LEN];
	DPSDK_INT32								iPersonNumber;
	DPSDK_BASE_ID_INFO*						pPersonIdList;
}DPSDK_PERSON_BATCH_UPDATE_PERSONGROUP;

typedef struct
{
	DPSDK_CHAR								szEventConfigId[DPSDK_ID_LEN];
	DPSDK_CHAR								szEventTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR								szEventTypeName[DPSDK_NAME_LEN];
	DPSDK_CHAR								szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR								szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_INT32								iInitialStatus;		//0=uninitialized，1=Initialized
	DPSDK_INT32								iEnableStatus;		//0=Disable，1=Enable
}DPSDK_PARK_EVENT_INFO;

typedef struct
{
	DPSDK_INT32								iNum;
	DPSDK_PARK_EVENT_INFO*					pParkEventInfoList;
}DPSDK_PARK_EVENT_RESULT;

typedef struct
{
	DPSDK_CHAR								szGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR								szGroupName[DPSDK_NAME_LEN];
}DPSDK_BASE_GROUP_INFO;

typedef struct
{
	DPSDK_INT64								iParkingOvertime;
	DPSDK_INT32								iAlarmFrequency;
	DPSDK_INT32								iVehicleRange;
	DPSDK_INT32								iContainVip;
	DPSDK_INT32								iContainUnregister;
	DPSDK_INT32								iContainRegister;
	DPSDK_INT32								iNum;
	DPSDK_BASE_GROUP_INFO*					pVehicleGroupList;
}DPSDK_PARK_OVER_TIME_INFO;

typedef struct
{
	DPSDK_INT32								iUnrecordedTime;
	DPSDK_CHAR								szStandardTime[DPSDK_TIME_LEN];		// formart：HH:MM:SS
	DPSDK_INT32								iNum;
	DPSDK_BASE_GROUP_INFO*					pVehicleGroupList;
}DPSDK_PARK_UNRECORD_INFO;

typedef struct
{
	DPSDK_CHAR								szEventConfigId[DPSDK_ID_LEN];
	DPSDK_CHAR								szEventTypeId[DPSDK_ID_LEN];
	DPSDK_CHAR								szEventTypeName[DPSDK_NAME_LEN];
	DPSDK_CHAR								szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR								szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_INT32								iInitialStatus;		//0=uninitialized，1=Initialized
	DPSDK_INT32								iEnableStatus;		//0=Disable，1=Enable
	DPSDK_PARK_OVER_TIME_INFO				struOverTimeInfo;
	DPSDK_PARK_UNRECORD_INFO				struUnRecoedInfo;
}DPSDK_PARK_EVENT_SINGLE_RESULT;

typedef struct
{
	DPSDK_CHAR								szEventConfigId[DPSDK_ID_LEN];
	DPSDK_INT32								iEnableStatus;		//0=Disable，1=Enable
	DPSDK_PARK_OVER_TIME_INFO				struOverTimeInfo;
	DPSDK_PARK_UNRECORD_INFO				struUnRecoedInfo;
}DPSDK_PARK_EVENT_SINGLE_PARAM;

typedef struct
{
	DPSDK_CHAR								szEventConfigId[DPSDK_ID_LEN];
}DPSDK_BASE_ID;

typedef struct
{
	DPSDK_INT32								iEnableStatus;		//0=Disable，1=Enable
	DPSDK_INT32								iNum;
	DPSDK_BASE_ID*							pEventList;
}DPSDK_PARK_EVENT_STATUS_PARAM;

typedef struct
{
	DPSDK_INT32								iSupportParkingLotCount;		// The maximum number of parking lots supported. If there is no limit, the maxint value will be returned
	DPSDK_INT32								iUsedParkingLotCount;			// The number of parking lots used
	DPSDK_INT32								iSupportPositionCount;			// The maximum number of positions supported. If there is no limit, the maxint value will be returned
	DPSDK_INT32								iUsedPositionCount;				// The number of positions used
	DPSDK_INT32								iSupportPointCount;				// The maximum number of points supported. If there is no limit, the maxint value will be returned
	DPSDK_INT32								iUsedPointCount;				// The number of points used
}DPSDK_PARKINLOT_RESOURCE_USED_INFO;
/***********************************************************	intelligence analysis begin		*********************************************************/


typedef struct
{
	DPSDK_INT32 iRuleType;									// rule Type
	DPSDK_CHAR szRuleID[DPSDK_ID_LEN];				        // rule ID
	DPSDK_CHAR szChannelID[DPSDK_ID_LEN];                   // channel ID
	DPSDK_CHAR szDeviceRuleCode[DPSDK_ID_LEN];				// Device rule code
	DPSDK_CHAR szDeviceRuleName[DPSDK_NAME_LEN];			// device rule name
}DPSDK_DEVICE_CROSS_RULE;

typedef struct
{
	DPSDK_CHAR szChannelID[DPSDK_ID_LEN];                   // channel ID
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];				// channel name
	DPSDK_CHAR szDeviceRuleCode[DPSDK_ID_LEN];				// Device rule code
	DPSDK_CHAR szDeviceRuleName[DPSDK_NAME_LEN];			// device rule name
}DPSDK_CHANNEL_RULES;

typedef struct
{
	DPSDK_CHAR szID[DPSDK_ID_LEN];                   // ID
													 //DPSDK_CHAR szText[DPSDK_CONTENT_LEN_2048];			// Text
	DPSDK_INT32 iTextLen;							// the lengh of defined text
	DPSDK_CHAR* pTextData;
}DPSDK_USER_DEFINED_TEXTS;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];				        // group ID
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];                 // group name
}DPSDK_FLOW_GROUP;

typedef struct
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];					   // group ID
}DPSDK_FLOWGROUP_ID;

typedef struct
{
	DPSDK_INT32 iGroupNum;
	DPSDK_FLOWGROUP_ID* pGroupIdList;
}DPSDK_FLOWGROUP_LIST;

typedef struct
{
	DPSDK_INT32			  iRuleType;						// Rule Type
	DPSDK_INT32           iChannelNum;					    // Channel number
	DPSDK_LINKED_CHANNEL* pChannelList;						// Channel list	
}DPSDK_BATCH_GET_CROSSLINE_RULES_PARAM;

typedef struct
{
	DPSDK_INT32         iRuleType;						 // rule Type
	DPSDK_CHAR			szChannelID[DPSDK_CHANNEL_ID_LEN];		// Channel ID
}DPSDK_GET_CHANNEL_RULES_PARAM;


typedef struct
{
	DPSDK_INT32              iDeviceCrossNum;
	DPSDK_DEVICE_CROSS_RULE* pDeviceCrossList;
}DPSDK_BATCH_GET_CROSSLINE_RULES_RESULT;


typedef struct
{
	DPSDK_INT32              iFlowGroupNum;
	DPSDK_INT32              iDeviceCrossNum;
	DPSDK_FLOW_GROUP*        pFlowGroupList;
	DPSDK_DEVICE_CROSS_RULE* pDeviceCrossList;
}DPSDK_SYNCHRO_CHANNEL_CROSSLINE_RULES_RESULT;

typedef struct
{
	DPSDK_INT32              iFlowGroupNum;
	DPSDK_FLOW_GROUP*        pFlowGroupList;
}DPSDK_GET_FLOW_GROUPS_RESULT;

typedef struct
{
	DPSDK_CHAR                  szGroupId[DPSDK_ID_LEN];				       // group ID
	DPSDK_CHAR                  szGroupName[DPSDK_NAME_LEN];                   // group name
	DPSDK_CHAR                  szAutoCalibrateTime[DPSDK_TIME_LEN];           // Calibrate Time, hh:mm:ss
	DPSDK_INT32					iShowPassingNumber;								//Show Pass Num 0:false 1:true
	DPSDK_INT32                 iAutoCalibrateNumber;                          // Calibrate Number        
	DPSDK_INT32					iAutoCalibrate;								   // Auto Calibrate
	DPSDK_BOOL		            bEnableLimitFlow;
	DPSDK_INT32                 iYellowThreahold;
	DPSDK_INT32                 iRedThresold;
	DPSDK_INT32                 iChannelRulesNum;
	DPSDK_CHANNEL_RULES*        pChannelRulesList;
}DPSDK_GET_FLOW_GROUP_RESULT;

typedef struct
{
	DPSDK_CHAR                  szGroupId[DPSDK_ID_LEN];				       // group ID
	DPSDK_CHAR                  szGroupName[DPSDK_NAME_LEN];                   // group name
	DPSDK_CHAR                  szPassingNumber[DPSDK_NAME_LEN];
	DPSDK_BOOL		            enableLimitFlow;
	DPSDK_INT32                 iStay;
	DPSDK_INT32                 iAvailable;
	DPSDK_INT32                 iEnter;
	DPSDK_INT32                 iExit;
	DPSDK_USER_DEFINED_TEXTS    struTextInfo;
}DPSDK_GET_GROUP_REALTIMEFLOW_RESULT;

typedef struct
{
	DPSDK_INT32                 iTextsNum;
	DPSDK_USER_DEFINED_TEXTS*   pTextsList;
}DPSDK_GET_GROUP_TEXTS_RESULT;

typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
	DPSDK_CHAR szRuleCode[DPSDK_CODE_LEN];
	DPSDK_CHAR szRuleName[DPSDK_NAME_LEN];
}DPSDK_PASSENGER_FLOW_GROUP_CHANNNEL_RULE_INFO;

typedef struct
{
	DPSDK_CHAR szGrouId[DPSDK_ID_LEN];
	DPSDK_CHAR szGrouName[DPSDK_NAME_LEN];
	DPSDK_INT32 iAutoCalibrate;								// Auto Calibrate
	DPSDK_CHAR szAutoCalibrateTime[DPSDK_TIME_LEN];			// formart：HH:MM:SS
	DPSDK_INT32	iAutoCalibrateNumber;
	DPSDK_BOOL bEnableLimitFlow;							// 0=no，1=yes
	DPSDK_INT32	iShowPassingNumber;
	DPSDK_INT32	iYellowThreahold;
	DPSDK_INT32	iRedThresold;
	DPSDK_INT32 iChannelRulesNum;
	DPSDK_PASSENGER_FLOW_GROUP_CHANNNEL_RULE_INFO* pChannelRulesList;
}DPSDK_PASSENGER_FLOW_GROUP_INFO;

typedef struct
{
	DPSDK_BOOL bEnableDaily;
	DPSDK_CHAR szDailyTime[DPSDK_TIME_LEN];		// formart：HH:MM:SS
	DPSDK_BOOL bEnableWeekly;
	DPSDK_CHAR szWeeklyTime[DPSDK_TIME_LEN];	// formart：HH:MM:SS
	DPSDK_BOOL bEnableMonthly;
	DPSDK_CHAR szMonthlyTime[DPSDK_TIME_LEN];	// formart：HH:MM:SS
	DPSDK_CHAR szContent[DPSDK_EMAIL_CONTENT_LEN];
	DPSDK_INT32 iRecipientNum;
	DPSDK_USER_MAIL_INFO* pRecipientList;
}DPSDK_PASSENGER_FLOW_REPORT_INFO;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR szKeyword[DPSDK_KEYWORD_LEN_EX];
}DPSDK_PASSENGER_FLOW_PAGE_GROUP_PARAM;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iPageNum;
	DPSDK_PASSENGER_FLOW_GROUP_INFO* pPageDataList;
}DPSDK_PASSENGER_FLOW_PAGE_GROUP_LIST;

typedef struct
{
	DPSDK_CHAR szCalibrateNumber[DPSDK_NUM_LONG_LEN];
	DPSDK_INT32	iUserDefinedTextsNum;
	DPSDK_USER_DEFINED_TEXTS* pUserDefinedTextsList;
}DPSDK_PASSENGER_FLOW_CALIBRATE_GROUP_STAY_NUMBER;
/***********************************************************	intelligence analysis end		*********************************************************/

/***********************************************************	Get device tree begin		*********************************************************/
typedef struct
{
	DPSDK_INT32  iDeviceCategorieNum;								//device Categorie total num
	DPSDK_INT32* pDeviceCategories;									//device Categories
	DPSDK_INT32  iDeviceTypeNum;									//device type total num
	DPSDK_INT32* pDeviceTypes;										// device types
	DPSDK_INT32	 iUnitTypeNum;										// unit type total num
	DPSDK_INT32* pUnitTypes;										//unit types
	DPSDK_INT32	 iCapabilitieNum;									//capabilitie total num
	DPSDK_INT32* pCapabilities;										//capabilities
	DPSDK_INT32	 iChannelTypeNum;									//channel type total num
	DPSDK_INT32* pChannelTypes;										//channel types
	DPSDK_INT32	 iChannelRemoteTypeNum;								//channel remote type total num
	DPSDK_INT32* pChannelRemoteTypes;								//channel remote types
	DPSDK_INT32	 iCameraTypeNum;									//camera type total num
	DPSDK_INT32* pCameraTypes;										//camera types
	DPSDK_INT32  iSourceTypeNum;									//Source type total num
	DPSDK_INT32* pSourceTypes;										//Source type, 1=platefrom,3=Third party
}DPSDK_TREE_DEVICE_TREE_CONDITION;

typedef struct
{
	DPSDK_CHAR szKeyword[DPSDK_KEYWORD_LEN_EX];						// keyword
	DPSDK_INT32 iTreeType;											// tree type
	DPSDK_INT32 iDomain;											// 0: no, 1: yes, -1: all
	int iConditonNum;												// conditon num
	DPSDK_TREE_DEVICE_TREE_CONDITION* pDeviceConditonList;			// condition list
}DPSDK_TREE_DEVICE_TREE_PARAM;

typedef struct
{
	DPSDK_CHAR	szChannelId[DPSDK_ALARM_CHANNELID_LEN];				// Channel Id
	DPSDK_CHAR	szChannelName[DPSDK_ALARM_CHANNELNAME_LEN];			// Channel name
	DPSDK_CHAR	szPId[DPSDK_NODE_ID_LEN];							// Parent node
	DPSDK_CHAR	szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_INT32	iStatus;											// Status: 0:offline, 1:online
	DPSDK_INT32	iUnitType;											// Unit type
	DPSDK_LONG	lCapability;										// Capability 
	DPSDK_INT32	iChannelType;										// Channel type
	DPSDK_INT32	iCameraType;										// Camera type see DPSDK_CAMERA_TYPE
	DPSDK_INT32	iChannelSubType;									// Channel subtype see DPSDK_CHANNEL_SUBTYPE
	DPSDK_INT32	iChannelRemoteType;									// Channel remote type
	DPSDK_INT32	iDeviceCategory;									// Device category
	DPSDK_INT32	iDeviceType;										// Device type		
	DPSDK_INT32	iChannelStreamType;									// Encode Channel Stream type
	DPSDK_INT32	iDomainID;											// Domain ID
}DPSDK_TREE_CHANNEL_INFO;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];					// Source channel device code
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];					// Source channel device name
	DPSDK_CHAR szPId[DPSDK_NODE_ID_LEN];							// Parent node
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];						// Node code
	DPSDK_CHAR szDeviceModel[DPSDK_DEVICE_MODEL_LEN];				// Device model
	DPSDK_CHAR szSoftwareVersion[DPSDK_SOFTWARE_VERSION_LEN];		// Software version
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;										// Device type
	DPSDK_INT32	iStatus;											// Status: 0:offline, 1:online		
	DPSDK_INT32 iDomainID;											// Domain ID
	DPSDK_INT32 iSourceType;										// Source type
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];					// Third organization Id
	DPSDK_INT32 iChannelNum;
	DPSDK_TREE_CHANNEL_INFO* pChannelList;
}DPSDK_TREE_DEVICE_INFO;

typedef struct
{
	DPSDK_INT32	iOrgNum;
	DPSDK_BRMS_ORGANIZATION_INFO* pOrgList;
	DPSDK_INT32 iDeviceNum;
	DPSDK_TREE_DEVICE_INFO* pDeviceList;
	DPSDK_INT32 iChannelNum;
	DPSDK_TREE_CHANNEL_INFO* pChannelList;
}DPSDK_TREE_DEVICE_TREE_INFO;
/***********************************************************	Get device tree end		*********************************************************/

/***********************************************************	External data sourse begin *********************************************************/
typedef struct
{
	DPSDK_INT32 iCode;
}DPSDK_EXTERNAL_DATA_SOURSE_CONNECT_NOTIFY;

typedef struct
{
	DPSDK_CHAR			szBridgeId[DPSDK_ID_LEN];
	DPSDK_CHAR			szBridgeName[DPSDK_NAME_LEN];
	DPSDK_INT32			iProjectType;
	DPSDK_CHAR			szAssociateId[DPSDK_NAME_LEN];
	DPSDK_CHAR			szRemark[DPSDK_ALARM_ALARMEXTDATA_LEN];
}DPSDK_OPT_BRIDGE_NOTIFY;

typedef struct
{
	DPSDK_INT32			iIdNum;
	DPSDK_ID*			pBridgeIdList;
}DPSDK_DEL_BRIDGE_NOTIFY;

typedef struct
{
	DPSDK_CHAR			szEventSourceCode[DPSDK_CODE_LEN];
	DPSDK_CHAR			szEventSourceName[DPSDK_NAME_LEN];
	DPSDK_CHAR			szParentSourceCode[DPSDK_CODE_LEN];
	DPSDK_CHAR			szParentSourceName[DPSDK_NAME_LEN];
}DPSDK_EVENT_SOURCE_INFO;

typedef struct
{
	DPSDK_CHAR			szBridgeId[DPSDK_ID_LEN];
	DPSDK_INT32			iEventType;
	DPSDK_INT32			iListNum;
	DPSDK_EVENT_SOURCE_INFO* pEventSourceList;
}DPSDK_EVENT_SOURCE_NOTIFY;

typedef struct
{
	DPSDK_CHAR			szBridgeId[DPSDK_ID_LEN];
	DPSDK_INT32			iIdNum;
	DPSDK_ID*			pSourceCodesList;
}DPSDK_DEL_EVENT_SOURCE_NOTIFY;

typedef struct
{
	DPSDK_INT32			iAction;
	DPSDK_CHAR			szMapId[DPSDK_ID_LEN];
	DPSDK_CHAR			szResourceId[DPSDK_ID_LEN];
	DPSDK_INT32			iResourceType;
	DPSDK_DOUBLE		fGpsX;								// Longitude
	DPSDK_DOUBLE		fGpsY;								// Latitude
}DPSDK_RESOURCE_LOCATION_INFO;

typedef struct
{
	DPSDK_INT32			iResourceNum;
	DPSDK_RESOURCE_LOCATION_INFO* pResourceList;
}DPSDK_RESOURCE_LOCATION_NOTIFY;

typedef struct
{
	DPSDK_INT32			iRecordType;
	DPSDK_INT32			iIdNum;
	DPSDK_ID*			pRecordIdList;
}DPSDK_DEL_DEEXPLORE_RECORDS_NOTIFY;

/***********************************************************	External data Sourse end	*********************************************************/

/***********************************************************	Device Update begin*********************************************************/
typedef struct
{
	DPSDK_CHAR			szPlanId[DPSDK_ID_LEN];					//"计划ID"
	DPSDK_CHAR			szPlanName[DPSDK_NAME_LEN_EX];			//"计划名称"
	DPSDK_CHAR			szPackageName[DPSDK_NAME_LEN_EX];		//"程序升级包名"
	DPSDK_INT32		   iScheduleTime;							//"预约执行时间，时间戳，单位：秒"
	DPSDK_INT32		   iStatus;									//"升级状态：1=正在升级，2=等待中，3=升级完成"
	DPSDK_INT32		   iSuccessfulCount;						//"升级成功的设备数"
	DPSDK_INT32		   iFailedCount;							//"升级失败的设备数"
}DPSDK_UPGRAPE_PLAN_INFO;

typedef struct
{
	DPSDK_UPGRAPE_PLAN_INFO *pUpgrapePlanInfo;
	int						iPlanNum;
}DPSDK_UPGRAPE_PLAN_LIST;

typedef struct
{
	DPSDK_CHAR			szPlanName[DPSDK_NAME_LEN_EX];  //"计划名称，必填",
	DPSDK_CHAR			szPackageUrl[DPSDK_URL_LEN_EX]; //程序升级包地址，必填"
	DPSDK_ID_LIST*		pDeviceId;						//["设备编码，必填"],
	DPSDK_INT32			iScheduleTime;					//"预约执行时间，时间戳，单位：秒，空则表示立即执行，选填",
}DPSDK_ADD_UPGRAPE_PLAN_INFO;

typedef struct
{
	DPSDK_INT32		    iPage;
	DPSDK_INT32		    iPageSize;
	DPSDK_INT32		    iUpdateStatus;
	DPSDK_CHAR			szPlanId[DPSDK_ID_LEN];
	DPSDK_CHAR			szKeyWord[DPSDK_KEYWORD_LEN];
}DPSDK_QUERY_UPGRAPE_PLAN_PARAM;

typedef struct
{
	DPSDK_CHAR szTaskId[DPSDK_ID_LEN];						//"任务ID",
	DPSDK_CHAR szPlanId[DPSDK_ID_LEN];						//"计划ID",
	DPSDK_CHAR szPlanName[DPSDK_NAME_LEN_EX];				//"计划名称",
	DPSDK_CHAR szDeviceId[DPSDK_ID_LEN];					//"设备编码",
	DPSDK_CHAR szDeviceIP[DPSDK_IP_LEN];					//"设备IP",
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];			//"设备名称",
	DPSDK_CHAR szDeviceModel[DPSDK_DEVICE_MODEL_LEN];		//"设备型号",
	DPSDK_CHAR szDeviceSoftwareVersion[DPSDK_DEVICE_MODEL_LEN]; //"设备对应的程序版本",
	DPSDK_CHAR szfailedReason[DPSDK_DELETE_REASON];				//"设备升级失败原因",
	DPSDK_INT32		   iOnlineStatus;							//"设备在线状态：0=离线，1=在线",
	DPSDK_INT32		   iUpdateStatus;							//"设备升级状态：1=正在升级，2=等待中，3=升级成功，4=升级失败",
	DPSDK_INT32		   iProgress;								//"设备升级进度，单位: %",
}DPSDK_DEVICE_UPGRAPE_TASK_INFO;

typedef struct
{
	DPSDK_INT32							iTotalCount;
	DPSDK_INT32							iTaskNum;
	DPSDK_DEVICE_UPGRAPE_TASK_INFO*		pUpgrapeTaskInfo;
}DPSDK_DEVICE_UPGRAPE_TASK_LIST;

typedef struct
{
	DPSDK_INT32 iDeviceCategory;							//"设备种类",
	DPSDK_INT32 iDeviceType;								//"设备类型",
	DPSDK_CHAR  szDeviceModel[DPSDK_DEVICE_MODEL_LEN];		//"设备型号",
	DPSDK_CHAR  szDeviceSoftVer[DPSDK_SOFTWARE_VERSION_LEN]; //"软件版本号",
}DPSDK_DEVICE_SOFTWARE_INFO;

typedef struct
{
	DPSDK_INT32							iDevNum;
	DPSDK_DEVICE_SOFTWARE_INFO*			pDeviceSoftVerInfo;
}DPSDK_DEVICE_SOFTWARE_LIST;

typedef struct
{
	DPSDK_CHAR			szTaskId[DPSDK_ID_LEN];					//"任务ID"
	DPSDK_INT32			iStatus;								//"设备升级状态：1=正在升级，2=等待中，3=升级成功，4=升级失败",
	DPSDK_INT32			iProgress;								//"升级进度，单位(%)"
	DPSDK_CHAR			szFailedCode[DPSDK_DELETE_REASON];		//"升级失败原因"
}DPSDK_UPGRAPE_TASK_PROGRESS;

typedef struct
{
	DPSDK_CHAR						szPlanId[DPSDK_ID_LEN];					//"计划ID"
	DPSDK_INT32						iTaskNum;
	DPSDK_UPGRAPE_TASK_PROGRESS*	pTaskInfo;
}DPSDK_UPDATA_DEVICE_UPGRADE_PROGRESS_NOTIFY;

/***********************************************************	Device Update  end	*********************************************************/

typedef struct
{
	DPSDK_CHAR								szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR								szSipId[DPSDK_ID_LEN];
	DPSDK_CHAR								szRoomName[DPSDK_ROOMNAME_LEN];
	DPSDK_CHAR								szRemark[DPSDK_MEMO_LEN];
} DPSDK_ROOM_CONFIG_ADD_ROOM;

typedef struct
{
	DPSDK_CHAR								szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR								szSipIdBeg[DPSDK_ID_LEN];
	DPSDK_CHAR								szSipIdEnd[DPSDK_ID_LEN];
	DPSDK_CHAR								szRemark[DPSDK_MEMO_LEN];
} DPSDK_ROOM_CONFIG_BATCHADD_ROOM;

typedef struct
{
	DPSDK_INT32								iTotalCount;
	DPSDK_INT32								iSuccesCount;
	DPSDK_INT32								iFailedCount;
} DPSDK_ROOM_CONFIG_BATCHADD_ROOM_RSP;

typedef struct
{
	DPSDK_CHAR								szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR								szOrgName[DPSDK_ORG_NAME_LEN];
	DPSDK_CHAR								szRemark[DPSDK_MEMO_LEN];
	DPSDK_CHAR								szSipId[DPSDK_ID_LEN];
	DPSDK_CHAR								szRoomName[DPSDK_ROOMNAME_LEN];
	DPSDK_CHAR								szRoomCode[DPSDK_MEMO_LEN];
}DPSDK_ROOM_CONFIG_BASIC_INFO;

typedef struct
{
	DPSDK_CHAR								szFacePictureUrl[DPSDK_URL_LEN];
	DPSDK_CHAR								szPhoneNum[DPSDK_PHONE_LEN];
	DPSDK_CHAR								szUserId[DPSDK_USER_ID_LEN];
	DPSDK_CHAR								szPersonId[DPSDK_USER_ID_LEN];
	DPSDK_CHAR								szUserName[DPSDK_NAME_LEN];
	DPSDK_CHAR								szPersonName[DPSDK_NAME_LEN];
	DPSDK_INT32								iAccountStatus;
	DPSDK_BOOL								bHouseHold;
	DPSDK_TIMET								tLastLoginTime;
	DPSDK_CHAR								szEmailAddr[DPSDK_ALARM_EMAILRECEIVER_LEN];
}DPSDK_ROOM_CONFIG_PERSON_INFO;

typedef struct
{
	DPSDK_INT32								iDeviceType;
	DPSDK_INT32								iDeviceCategory;
	DPSDK_CHAR								szDeviceCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_CHAR								szSipId[DPSDK_ID_LEN];
	DPSDK_CHAR								szDeviceName[DPSDK_DEVICE_NAME_LEN];
}DPSDK_ROOM_CONFIG_DEVICE_INFO;


typedef struct
{
	DPSDK_ROOM_CONFIG_BASIC_INFO			basicInfo;
	DPSDK_INT32								iPersonNum;
	DPSDK_ROOM_CONFIG_PERSON_INFO*			pPersonInfoList;
	DPSDK_INT32								iDeviceNum;
	DPSDK_ROOM_CONFIG_DEVICE_INFO*			pDeviceInfoList;
}DPSDK_ROOM_CONFIG_ROOM_DETAIL;

typedef struct
{
	DPSDK_CHAR								szUserId[DPSDK_USER_ID_LEN];
	DPSDK_CHAR								szPWD[DPSDK_PWD_LEN];
}DPSDK_ROOM_CONFIG_RESET_PASSWORD;

typedef struct
{
	DPSDK_CHAR								szRoomCode[DPSDK_MEMO_LEN];
	DPSDK_CHAR								szSipId[DPSDK_ID_LEN];
	DPSDK_CHAR								szRoomName[DPSDK_ROOMNAME_LEN];
	DPSDK_INT32								iPersonNum;
	DPSDK_BOOL								bHasVTH;
	DPSDK_CHAR								szHouseholder[DPSDK_NAME_LEN];
	DPSDK_CHAR								szDeviceCode[DPSDK_DEVICE_ID_LEN];
}DPSDK_ROOM_CONFIG_ROOM_PAGE_INFO;

typedef struct
{
	DPSDK_CHAR								szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_INT32								iPage;
	DPSDK_INT32								iPageSize;
}DPSDK_ROOM_CONFIG_QUERY_ROOM_PAGE;

typedef struct
{
	DPSDK_ROOM_CONFIG_ROOM_PAGE_INFO*		pRoomList;
	DPSDK_INT32								iRoomNum;
	DPSDK_INT32								iNextPage;
	DPSDK_INT32								iTotalcount;
}DPSDK_ROOM_CONFIG_GET_ROOM_PAGE;

typedef struct
{
	DPSDK_CHAR								szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR								szRemark[DPSDK_MEMO_LEN];
	DPSDK_CHAR								szSipId[DPSDK_ID_LEN];
	DPSDK_CHAR								szRoomName[DPSDK_ROOMNAME_LEN];
	DPSDK_CHAR								szRoomCode[DPSDK_MEMO_LEN];
}DPSDK_ROOM_CONFIG_UPDATE_ROOM_BASIC;

typedef struct
{
	DPSDK_CHAR								szPersonId[DPSDK_USER_ID_LEN];
	DPSDK_CHAR								szPersonName[DPSDK_NAME_LEN];
}DPSDK_ROOM_CONFIG_QUERY_PERSON_INFO;

typedef struct
{
	DPSDK_INT32								iPersonNum;
	DPSDK_ROOM_CONFIG_QUERY_PERSON_INFO*	pPersonInfoList;
}DPSDK_ROOM_CONFIG_QUERY_PERSON_LIST;

typedef struct
{
	DPSDK_INT32								iStatus;
	DPSDK_CHAR								szUserId[DPSDK_USER_ID_LEN];
	DPSDK_CHAR								szPersonId[DPSDK_USER_ID_LEN];
}DPSDK_ROOM_CONFIG_QUERY_BIND_PERSON;

typedef struct
{
	DPSDK_BOOL								bInputPassword;
	DPSDK_BOOL								bInputFileEncry;
}DPSDK_FILE_EXPORT_PASSWORD_CONFIG;
typedef struct
{
	DPSDK_CHAR szRoomNo[DPSDK_ID_LEN];						// Room no.
}DPSDK_ROOMNO;

typedef struct
{
	DPSDK_INT32						iNum;			// Room quantity
	DPSDK_ROOMNO*					pRoomNoList;	// Room no. list								
}DPSDK_ROOMNO_LIST;

typedef struct
{
	DPSDK_CHAR								szId[DPSDK_ID_LEN];
	DPSDK_CHAR								szIpAddress[DPSDK_IP_LEN];
	DPSDK_INT32								iPortType;// 端口类型：1=HTTP端口(Nginx)，2=RTSP重定向端口
}DPSDK_IPALLOW_INFO;

typedef struct
{
	DPSDK_INT32								iIpAllowCount;
	DPSDK_IPALLOW_INFO*						pIpAllowList;
}DPSDK_IPALLOW_LIST;

/****************************************	Special Space begin	****************************************************/

typedef struct
{
	DPSDK_CHAR szSpaceId[DPSDK_ID_LEN];
	DPSDK_CHAR szAddressName[DPSDK_NAME_LEN];	//parking lot space address name
	DPSDK_INT32 iParkingSpaceMode;				// 1: Available Parking Space, 2: License Plate
	DPSDK_CHAR szEncoderChannelId[DPSDK_IP_LEN];
	DPSDK_CHAR szEncoderChannelName[DPSDK_NAME_LEN];
}DPSDK_SPECIAL_SPACE_TREE_SPACE_NODE;

typedef struct
{
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];
	DPSDK_CHAR szOrgCode[DPSDK_ORG_CODE_LEN];
	DPSDK_CHAR szOrgName[DPSDK_ORG_NAME_LEN];
	DPSDK_CHAR szDeviceManufacturer[DPSDK_NAME_LEN];
	DPSDK_BOOL bStatus;												// true : online, false : offline
	DPSDK_INT32 iDeviceCategory;									// Device category
	DPSDK_INT32 iDeviceType;
	DPSDK_INT32 iParkingSpaceMode;									// 1: Available Parking Space, 2: License Plate
	DPSDK_INT32 iParkingSpaceCount;
	DPSDK_INT32 iNodeNum;
	DPSDK_SPECIAL_SPACE_TREE_SPACE_NODE* pSpaceNode;
	DPSDK_INT32 iCapability;
}DPSDK_SPECIAL_SPACE_TREE_SPACE_DETECTOR_NODE;

typedef struct
{
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_INT32 iNodeNum;
	DPSDK_SPECIAL_SPACE_TREE_SPACE_DETECTOR_NODE* pNode;
}DPSDK_SPECIAL_SPACE_TREE_PARKINGLOT_NODE;

typedef struct
{
	DPSDK_INT32 iNodeNum;
	DPSDK_SPECIAL_SPACE_TREE_PARKINGLOT_NODE* pNode;
}DPSDK_SPECIAL_SPACE_TREE;

typedef struct
{
	DPSDK_PAGE_INFO stuPage;
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_CHAR szSpaceId[DPSDK_ID_LEN];
	DPSDK_CHAR szKey[DPSDK_KEY_LEN];
}DPSDK_GET_PAGE_SPECIAL_SPACE_PARAM;

typedef struct EntranceGroupInfo
{
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR szGroupName[DPSDK_NAME_LEN];
	DPSDK_INT32 iGroupColor;
	DPSDK_INT32 iLevel;
	DPSDK_CHAR szRemark[DPSDK_MEMO_LEN];
}EntranceGroupInfo_t;

typedef struct
{
	DPSDK_INT32 iSpaceCarRelId;
	DPSDK_CHAR szSpaceId[DPSDK_ID_LEN];
	DPSDK_CHAR szAddressName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDeviceCode[DPSDK_DEVICE_ID_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szOwnerId[DPSDK_ID_LEN];
	DPSDK_CHAR szOwnerName[DPSDK_NAME_LEN];
	DPSDK_INT32 iEntranceGroupNum;
	EntranceGroupInfo_t* pEntranceGroupInfo;
}DPSDK_GET_PAGE_SPECIAL_SPACE_INFO;
typedef struct
{
	DPSDK_INT32 iTotalNum;
	DPSDK_INT32 iPageNum;
	DPSDK_GET_PAGE_SPECIAL_SPACE_INFO* pPageData;
}DPSDK_GET_PAGE_SPECIAL_SPACE_LIST;

typedef struct
{
	DPSDK_CHAR szSpaceId[DPSDK_ID_LEN];
	DPSDK_INT32* pVehicleIds;
	DPSDK_INT32 iVehicleIdsNum;
}DPSDK_ADD_SPECIAL_SPACE;

typedef struct
{
	DPSDK_INT32* pVehicleIds;
	DPSDK_INT32 iVehicleIdsNum;
}DPSDK_DEL_SPECIAL_SPACE;

typedef struct
{
	DPSDK_PAGE_INFO stuPage;
	DPSDK_CHAR szGroupId[DPSDK_ID_LEN];
	DPSDK_CHAR szKeyword[DPSDK_KEY_LEN];
	DPSDK_CHAR szSpaceId[DPSDK_ID_LEN];
}DPSDK_GET_GROUP_VEHICLE_PARAM;

typedef struct
{
	int iVehicleId;
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_CHAR szPersonId[DPSDK_PERSON_NO_LEN];
	DPSDK_CHAR szPersonName[DPSDK_NAME_LEN];
}DPSDK_GET_GROUP_VEHICLE_INFO;

typedef struct
{
	DPSDK_INT32 iTotalNum;
	DPSDK_INT32 iPageNum;
	DPSDK_GET_GROUP_VEHICLE_INFO* pPageData;
}DPSDK_GET_GROUP_VEHICLE_LIST;
/****************************************	Special Space end	****************************************************/

/****************************************	Layer start	****************************************************/
typedef struct
{
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szThumbnailUrl[DPSDK_URL_LEN];
}DPSDK_ADD_LAYER;

typedef struct
{
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
}DPSDK_LAYER_ID;

typedef struct
{
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
}DPSDK_PARKINGLOT_ID;

typedef struct
{
	DPSDK_INT32 iTotalNum;
	DPSDK_LAYER_ID* pLayerList;
}DPSDK_LAYER_ID_LIST;

typedef struct
{
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
}DPSDK_GET_LAYER_BINDINGCHANNEL_PARAM;

typedef struct
{
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
}DPSDK_GET_LAYER_BINDINGCHANNEL_RESULT;

typedef struct
{
	int iTotalCount;
	DPSDK_GET_LAYER_BINDINGCHANNEL_RESULT* pBindChannelList;
}DPSDK_GET_LAYER_BINDINGCHANNEL_RESULT_LIST;

typedef struct
{
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDeviceId[DPSDK_ID_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN];
}DPSDK_GET_LAYER_BINDINGDETECTOR_RESULT;

typedef struct
{
	int iTotalCount;
	DPSDK_GET_LAYER_BINDINGDETECTOR_RESULT* pBindDetectorList;
}DPSDK_GET_LAYER_BINDINGDETECTOR_RESULT_LIST;

typedef struct
{
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szParkingSpaceId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingSpaceName[DPSDK_NAME_LEN];
}DPSDK_GET_LAYER_BINDINGPARKINGSPACE_RESULT;

typedef struct
{
	int iTotalCount;
	DPSDK_GET_LAYER_BINDINGPARKINGSPACE_RESULT* pBindParkSpace;
}DPSDK_GET_LAYER_BINDINGPARKINGSPACE_RESULT_LIST;

typedef struct
{
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPositionId[DPSDK_ID_LEN];
	DPSDK_CHAR szPositionName[DPSDK_NAME_LEN];
}DPSDK_GET_LAYER_BINDINPOSITION_RESULT;

typedef struct
{
	int iTotalCount;
	DPSDK_GET_LAYER_BINDINPOSITION_RESULT* pBindPosotion;
}DPSDK_GET_LAYER_BINDINPOSITION_RESULT_LIST;

typedef struct
{
	DPSDK_DOUBLE fLocationX;
	DPSDK_DOUBLE fLocationY;
	DPSDK_DOUBLE fWidth;
	DPSDK_DOUBLE fHeight;
	DPSDK_DOUBLE fAngle;
	DPSDK_INT32 iEnterPointCount;
	DPSDK_INT32 iExitPointCount;
	DPSDK_CHAR szPositionId[DPSDK_ID_LEN];
	DPSDK_CHAR szPositionName[DPSDK_NAME_LEN];
}DPSDK_GETLAYER_POSITION;

typedef struct
{
	DPSDK_DOUBLE fLocationX;
	DPSDK_DOUBLE fLocationY;
	DPSDK_DOUBLE fWidth;
	DPSDK_DOUBLE fHeight;
	DPSDK_DOUBLE fAngle;
	DPSDK_CHAR szParkingSpaceId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingSpaceName[DPSDK_NAME_LEN];

	DPSDK_CHAR szDeviceCode[DPSDK_CODE_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN_EX];
	DPSDK_INT32 iDeviceCategory;
	DPSDK_INT32 iDeviceType;
	DPSDK_INT32 iParkingSpaceStatus;  // 0:idle, 1:occupancy 2:unavailable
	DPSDK_INT32 iParkingSpaceMode;									// 1: Available Parking Space, 2: License Plate
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
	DPSDK_INT32 iCapability;
	DPSDK_CHAR szEncoderChannelId[DPSDK_IP_LEN];
	DPSDK_CHAR szEncoderChannelName[DPSDK_NAME_LEN];
}DPSDK_GETLAYER_PARKINGSPACE;

typedef struct
{
	DPSDK_DOUBLE fLocationX;
	DPSDK_DOUBLE fLocationY;
	DPSDK_DOUBLE fWidth;
	DPSDK_DOUBLE fHeight;
	DPSDK_DOUBLE fAngle;
	DPSDK_CHAR szDeviceCode[DPSDK_ALARM_DEVICEID_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN_EX];
	DPSDK_BOOL bStatus;
	DPSDK_CHAR szOrgCode[DPSDK_ALARM_ORGID_LEN];
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szDeviceIp[DPSDK_IP_LEN];
	DPSDK_INT32 iDevicePort;
	DPSDK_CHAR szDeviceCompany[DPSDK_NAME_LEN];
	DPSDK_INT32 iDeviceCategory;
	DPSDK_INT32 iDeviceType;
	DPSDK_INT32 iParkingSpaceMode;									// 1: Available Parking Space, 2: License Plate
	DPSDK_INT32 iParkingSpaceCount;
	DPSDK_INT32 iCapability;
}DPSDK_GETLAYER_DETECTOR;

typedef struct
{
	DPSDK_DOUBLE fLocationX;
	DPSDK_DOUBLE fLocationY;
	DPSDK_DOUBLE fWidth;
	DPSDK_DOUBLE fHeight;
	DPSDK_DOUBLE fAngle;
	DPSDK_CHAR szDeviceCode[DPSDK_ALARM_DEVICEID_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN_EX];
	DPSDK_BOOL bStatus;
	DPSDK_CHAR szOrgCode[DPSDK_ALARM_ORGID_LEN];
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szDeviceIp[DPSDK_IP_LEN];
	DPSDK_INT32 iDevicePort;
	DPSDK_CHAR szDeviceCompany[DPSDK_NAME_LEN];
	DPSDK_INT32 iDeviceCategory;
	DPSDK_INT32 iDeviceType;
	DPSDK_INT32 iLedPartitionCount;
}DPSDK_GETLAYER_LED;

typedef struct
{
	DPSDK_DOUBLE fLocationX;
	DPSDK_DOUBLE fLocationY;
	DPSDK_DOUBLE fWidth;
	DPSDK_DOUBLE fHeight;
	DPSDK_DOUBLE fAngle;
	DPSDK_BOOL  bStatus;
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
}DPSDK_GETLAYER_CHANNEL;

typedef struct
{
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szThumbnailUrl[DPSDK_URL_LEN];
	DPSDK_INT32 iTotalPosition;
	DPSDK_GETLAYER_POSITION* pPosition;
	DPSDK_INT32 iTotalDetector;
	DPSDK_GETLAYER_DETECTOR* pDetector;
	DPSDK_INT32 iTotalParkingSpace;
	DPSDK_GETLAYER_PARKINGSPACE* pParkingSpace;
	DPSDK_INT32 iTotalLed;
	DPSDK_GETLAYER_LED* pLed;
	DPSDK_INT32 iTotalChannel;
	DPSDK_GETLAYER_CHANNEL* pChannel;
}DPSDK_GETLAYER_RESULT;

typedef struct
{
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN];
	DPSDK_CHAR szThumbnailUrl[DPSDK_URL_LEN];
	DPSDK_INT32 iTotalParkingSpaceCount;
	DPSDK_INT32 iIdleParkingSpaceCount;
}DPSDK_GETLAYERS_RESULT;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_GETLAYERS_RESULT* pGetLayersList;
}DPSDK_GETLAYERS_RESULT_LIST;

typedef struct
{
	DPSDK_CHAR szKeyWord[DPSDK_KEYWORD_LEN];
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
}DPSDK_GETLAYERS_PARAM;

typedef struct
{
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDeviceCode[DPSDK_ALARM_DEVICEID_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_NAME_LEN_EX];
	DPSDK_BOOL bStatus;
	DPSDK_CHAR szOrgCode[DPSDK_ALARM_ORGID_LEN];
	DPSDK_CHAR szOrgName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szDeviceIp[DPSDK_IP_LEN];
	DPSDK_INT32 iDevicePort;
	DPSDK_CHAR szDeviceCompany[DPSDK_NAME_LEN];
	DPSDK_INT32 iDeviceCategory;
	DPSDK_INT32 iDeviceType;
	DPSDK_CHAR szServerIp[DPSDK_IP_LEN];
	DPSDK_CHAR szServerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szServerCode[DPSDK_CODE_LEN];
	DPSDK_INT32 iLedPartitionCount;

}DPSDK_GET_PARKINGLOT_BINDING_LED_INFO;

typedef struct
{
	DPSDK_INT32 iLedNum;
	DPSDK_GET_PARKINGLOT_BINDING_LED_INFO* pLedInfo;
}DPSDK_GET_PARKINGLOT_BINDING_LED_LIST;


typedef struct
{
	DPSDK_CHAR szChannelId[DPSDK_ID_LEN];
	DPSDK_CHAR szChannelName[DPSDK_NAME_LEN];
	DPSDK_INT32 iChannelType;				// 1=ITC主相机，2=ITC辅相机 
}DPSDK_BINDITC_CHANNEL;

typedef struct
{
	int iTotal;
	DPSDK_BINDITC_CHANNEL* pItcChannel;
}DPSDK_BINDITC_CHANNEL_LIST;

typedef struct
{
	DPSDK_INT32 iEnterPointCount;
	DPSDK_INT32 iExitPointCount;
	DPSDK_CHAR szPositionId[DPSDK_ID_LEN];
	DPSDK_CHAR szPositionName[DPSDK_NAME_LEN];
	DPSDK_BINDITC_CHANNEL_LIST struChannelList;
}DPSDK_PARKINGLOT_GETPOSITION_RESULT;

typedef struct
{
	DPSDK_CHAR szLedPartitionId[DPSDK_ID_LEN];
	DPSDK_INT32	idleParkingSpaceCount;
}DPSDK_LAYER_GET_LEDIDLE_PARKINGSPACECOUNT_INFO;

typedef struct
{
	DPSDK_INT32 iLedPartitionNum;
	DPSDK_LAYER_GET_LEDIDLE_PARKINGSPACECOUNT_INFO* pLedPartitions;
}DPSDK_LAYER_GET_LEDIDLE_PARKINGSPACECOUNT_LIST;

// layer notify
typedef struct
{
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szThumbnailUrl[DPSDK_URL_LEN];				// pic url just add layer and update base layer use
	DPSDK_CHAR szPictureUrl[DPSDK_URL_LEN];
	DPSDK_INT32	iIdleParkingSpaceCount;						// space count just add layer use
	DPSDK_INT32	iTotalParkingSpaceCount;
}DPSDK_LAYER_CHANGE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
}DPSDK_LAYER_DELETE_INFO;

typedef struct
{
	DPSDK_INT32 iLayerNum;
	DPSDK_LAYER_DELETE_INFO* pLayerInfo;
}DPSDK_LAYER_DELETE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szPartitionId[DPSDK_ID_LEN];
	DPSDK_INT32	iIdleParkingSpaceCount;
}DPSDK_LAYER_LED_PARTITION_INFO;

typedef struct
{
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDeviceCode[DPSDK_CODE_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];
	DPSDK_INT32 iLedPartitionsNum;
	DPSDK_LAYER_LED_PARTITION_INFO* pLedPartitionInfo;
}DPSDK_LAYER_LED_IDLE_PARKING_SPACE_COUNT_NOTIFY;

typedef struct
{
	DPSDK_CHAR szParkingSpaceId[DPSDK_ID_LEN];
	DPSDK_INT32 iParkingSpaceStatus;  // 0:idle, 1:occupancy 2:unavailable
	DPSDK_CHAR szPlateNo[DPSDK_PLATE_NUMBER_LEN];
}DPSDK_LAYER_PARKING_SPACE_INFO;

typedef struct
{
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_INT32	iIdleParkingSpaceCount;						// space count just add layer use
	DPSDK_INT32	iTotalParkingSpaceCount;

	DPSDK_INT32 iParkingSpaceInfoNum;
	DPSDK_LAYER_PARKING_SPACE_INFO* pParkingSpaceInfo;

}DPSDK_LAYER_PARKING_SPACE_INFO_UPDATE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szParkingLotId[DPSDK_ID_LEN];
	DPSDK_CHAR szParkingLotName[DPSDK_NAME_LEN];
	DPSDK_CHAR szLayerId[DPSDK_ID_LEN];
	DPSDK_CHAR szLayerName[DPSDK_NAME_LEN];
	DPSDK_CHAR szDeviceCode[DPSDK_CODE_LEN];
	DPSDK_CHAR szDeviceName[DPSDK_DEVICE_NAME_LEN];
}DPSDK_LAYER_LED_DISPLAY_CONFIG_UPDATE_NOTIFY;

/****************************************	Layer end	****************************************************/

/*****************P2P************************/
typedef struct
{
	DPSDK_INT32		iTcpPort;
	DPSDK_INT32		iHttpPort;
	DPSDK_INT32		iHttpsPort;
	DPSDK_CHAR      szDeviceCode[DPSDK_CODE_LEN];
	DPSDK_CHAR		szDeviceSN[DPSDK_SN_LEN];
	DPSDK_CHAR		szDevIPAddr[DPSDK_IP_LEN];
	DPSDK_CHAR		szUerName[DPSDK_USER_ID_LEN];
	DPSDK_CHAR		szDevPassword[DPSDK_PWD_LEN];
}DPSDK_P2P_TRAVERSAL_DEV_INFO;

typedef struct
{
	DPSDK_CHAR					szDeviceSN[DPSDK_SN_LEN];	// 设备系列号
	DPSDK_CHAR					szDevIPAddr[DPSDK_IP_LEN];	// 设备IP地址
	DPSDK_INT32					iRemoteTCPPort;				// 设备TCP端口
	DPSDK_INT32					iLocalTCPPort;				// 设备本地打洞TCP端口
	DPSDK_INT32					iRemoteHttpPort;			// 设备Http端口
	DPSDK_INT32					iLocalHttpPort;				// 设备本地打洞Http端口
	DPSDK_INT32					iRemoteHttpsPort;			// 设备Https端口
	DPSDK_INT32					iLocalHttpsPort;			// 设备本地打洞Https端口
	DPSDK_INT32					iRemoteRtspPort;			// 设备Rtsp端口
	DPSDK_INT32					iLocalRtspPort;				// 设备本地打洞Rtsp端口
}DPSDK_P2P_PORTMAPPING;
/*****************P2P END***********************/

typedef struct
{
	DPSDK_CHAR					szChannelID[DPSDK_ID_LEN];			// 通道ID号
	DPSDK_CHAR					szAudioFileID[DPSDK_ID_LEN];		// 文件ID
	DPSDK_CHAR					szAudioFileName[DPSDK_NAME_LEN];	// 文件名
	DPSDK_CHAR					szAudioFileSize[DPSDK_ID_LEN];		// 文件大小
}DPSDK_AUDIO_FILEINFO_lIST;

typedef struct
{
	DPSDK_INT32					iChannelFileCount;				// 文件数量
	DPSDK_AUDIO_FILEINFO_lIST*	pAudioInfoList;					// 音频文件列表

}DPSDK_AUDIO_FILE_INFO;
/*****************P2P END***********************/

typedef struct
{
	DPSDK_CHAR						szAlarmId[DPSDK_ID_LEN];					//"计划ID"
	DPSDK_CHAR						szDeviceCode[DPSDK_ID_LEN];
	DPSDK_CHAR						szDeviceName[DPSDK_DEVICE_NAME_LEN];
	DPSDK_INT32						iAlarmDate;
	DPSDK_INT32						iAlarmGrade;
	DPSDK_CHAR						szPersonName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szIdentificationNum[DPSDK_PERSON_ID_LEN];
	DPSDK_CHAR						szAlarmCode[DPSDK_ID_LEN];
	DPSDK_CHAR						szPlanName[DPSDK_NAME_LEN];
	DPSDK_CHAR						szFaceImageUrl[DPSDK_URL_LEN_EX];
}DPSDK_ALARM_PLAN_MSG_NOTIFY;

typedef struct
{
	DPSDK_INT32		iStreamType;	// 1=主码流，2=辅码流1，3=辅码流2
	DPSDK_INT32		iMode;			// 1=按时间计划，2=持续录像，3=关闭

}DPSDK_RECORDMODE;

typedef struct
{
	int iTotal;
	DPSDK_RECORDMODE* pRecordMode;

}DPSDK_RECORDMODE_LIST;

typedef struct
{
	int iTotal;
	DPSDK_FIXEDWORK_INFO* pList;
}DPSDK_TIME_PLAN;

typedef struct
{
	int iTotal;
	DPSDK_TIME_PLAN* pList;
}DPSDK_TIME_PLAN_LIST;

typedef struct
{
	DPSDK_RECORDMODE_LIST struModeList;
	DPSDK_TIME_PLAN_LIST struPlanList;

}DPSDK_NEWDEVICERECORDPLAN_PARAM;

typedef struct
{
	DPSDK_CHAR      szChannelCode[DPSDK_CHANNEL_ID_LEN];	// Channel code	
	DPSDK_INT32     iStreamType;							// Stream Type
	DPSDK_INT32     iPosition;									//strage Position
	DPSDK_BOOL		bRecordStatus;							// Record Status
}DPSDK_CHANNEL_RECORD_STATE_INFO;

typedef struct
{
	DPSDK_INT32		iCount;
	DPSDK_CHANNEL_RECORD_STATE_INFO* pChannelRecordStateInfo;
}DPSDK_CHANNEL_RECORD_STATE_LIST;

/****************************************	4G start	****************************************************/
typedef struct
{
	DPSDK_INT32		iCommand;			// Command,1:wake up 2:sleep
	DPSDK_INT32		iDevNum;
	DPSDK_DEVICE_ID* pDeviceList;
}DPSDK_BATCH_REGULATE_SLEEP_STATE;

typedef struct
{
	DPSDK_CHAR		szDeviceCode[DPSDK_CODE_LEN];
	DPSDK_INT32		iResult;			// Operation result, 0:failed  1:success
}DPSDK_OPERATION_RESULT;

typedef struct
{
	DPSDK_INT32		iResultNum;
	DPSDK_OPERATION_RESULT* pResultList;
}DPSDK_BATCH_REGULATE_SLEEP_RESULT;

typedef struct
{
	DPSDK_CHAR		szDeviceCode[DPSDK_CODE_LEN];
	DPSDK_INT32		iSignalIntensity;
	DPSDK_INT32		iElectricQuantity;
}DPSDK_DEVICE_COMMUNICATION_INFO;

/*********************************	Web begin	***************************************/
typedef struct
{
	DPSDK_CHAR szUserName[DPSDK_NAME_LEN_EX];
	DPSDK_CHAR szToken[DPSDK_TOKEN_LEN];
}DPSDK_GET_WEB_AUTHORIZATION_RESULT;

typedef struct
{
	DPSDK_BOOL	bHttps;	// 1 : yes, 0: no
	DPSDK_INT32 iPort;
	DPSDK_CHAR szIP[DPSDK_IP_LEN];
}DPSDK_GET_WEB_PORT_RESULT;

/*********************************	Web end		***************************************/

typedef struct
{
	DPSDK_CHAR		szDeviceCode[DPSDK_CODE_LEN];
	DPSDK_INT32		iCommand;					//命令：1=拒绝，2=同意，必填
	DPSDK_INT32		iDelayedReminder;			//拒绝休眠延后提醒时间：10=10分钟，20=20分钟，30=30分钟，60=60分钟，单位：分钟，选填
	DPSDK_CHAR		szComfirmSessionID[DPSDK_ID_LEN];			//会话信息
}DPSDK_DEVICE_CONFIRMSLEEP_INFO;

// Menu information
typedef struct
{
	DPSDK_CHAR szMenuCode[DPSDK_MEMURIGHT_LEN];					// Menu code information
}DPSDK_MENU_CODE;

typedef struct
{
	DPSDK_INT32 iNum;											// Menu num
	DPSDK_MENU_CODE* pMenuCodeList;								// Menu code list
}DPSDK_DATABASE_TABLE_BREAKDOWN_NOTIFY_INFO;

typedef struct
{
	DPSDK_INT32 iNodeType;											// 1=org,2=equipment,3=point
	DPSDK_CHAR szInspectFunctionId[DPSDK_ID_LEN];
}DPSDK_QUERY_EQUIPMENTORG_INFO;

typedef struct
{
	DPSDK_CHAR szPlanId[DPSDK_ID_LEN];
	DPSDK_CHAR szPlanRecordId[DPSDK_ID_LEN];
	DPSDK_CHAR szPointId[DPSDK_ID_LEN];
}DPSDK_QUERY_LAST_POINT_RECORD_PARAM;

typedef struct
{
	DPSDK_CHAR szId[DPSDK_ID_LEN];
	DPSDK_CHAR szPointId[DPSDK_ID_LEN];
	DPSDK_CHAR szPointName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPointMoldName[DPSDK_NAME_LEN];
	DPSDK_CHAR szEquipmentPartName[DPSDK_NAME_LEN];
	DPSDK_CHAR szEquipmentName[DPSDK_NAME_LEN];
	DPSDK_CHAR szOrgCode[DPSDK_ID_LEN];
	DPSDK_CHAR szChannnelId[DPSDK_ID_LEN];
	DPSDK_CHAR szPresetPointCode[DPSDK_ID_LEN];
	DPSDK_INT32 iPointResult;						// 1:None, 2=Alarm, 3=Fail
	DPSDK_INT32 iPointStatus;						// 1:success, 2=Fail
	DPSDK_TIMET tInspectTime;
	DPSDK_TIMET tBeginTime;
	DPSDK_TIMET tEndTime;
	DPSDK_CHAR szInspectContent[DPSDK_USER_REMARK_LEN_EX];
	DPSDK_CHAR szFailedReason[DPSDK_MEMO_LEN_LONG];				// Failure reason
	DPSDK_CHAR szPicturePath[DPSDK_URL_LEN];
	DPSDK_CHAR szHotPicturePath[DPSDK_URL_LEN];
	DPSDK_CHAR szLinkPointId[DPSDK_ID_LEN];
	DPSDK_CHAR szLinkPointName[DPSDK_NAME_LEN];
	DPSDK_CHAR szPointRecordId[DPSDK_ID_LEN];
	DPSDK_INT32 iHandleStatus;						// 0:Unhandle,1=normal,2=exception
	DPSDK_CHAR szAuditDescription[DPSDK_USER_REMARK_LEN_EX];
	DPSDK_CHAR szHandleUser[DPSDK_ID_LEN_EX];
	DPSDK_CHAR szHandleLoginUser[DPSDK_ID_LEN_EX];
	DPSDK_CHAR szContactWay[DPSDK_ID_LEN_EX];
	DPSDK_CHAR szTemperature[DPSDK_ID_LEN];
	DPSDK_CHAR szTemperatureDiff[DPSDK_ID_LEN];
	DPSDK_INT32 iTemperatureStatus;					// 1=normal,2=serious,3=emergency
	DPSDK_INT32 iTemperatureDiffStatus;				// 1=normal,2=serious,3=emergency
	DPSDK_INT32 iInspectFunctionId;					// 1=visible light,2=Thermal Imaging
	DPSDK_CHAR szPlanRecordId[DPSDK_ID_LEN];
}DPSDK_LAST_POINT_RECORD_INFO;

typedef struct
{
	DPSDK_INT32 iPointRecordIdNum;
	DPSDK_BASE_ID_INFO* pPointRecordIdList;
	DPSDK_INT32 iHandleStatus;						// 1=normal,2=exception
	DPSDK_CHAR szAuditDescription[DPSDK_USER_REMARK_LEN_EX];
	DPSDK_CHAR szHandleUser[DPSDK_ID_LEN_EX];
	DPSDK_CHAR szContactWay[DPSDK_ID_LEN_EX];
}DPSDK_AUDIT_RESULT;

typedef struct
{
	DPSDK_AUDIT_RESULT* pAuditResults;
	DPSDK_INT32 iAuditResultNum;
}DPSDK_BATCH_AUDIT_PARAM;

typedef struct
{
	DPSDK_PAGE_INFO struPageInfo;
	DPSDK_CHAR  szKeyWord[DPSDK_KEYWORD_LEN_EX];
	DPSDK_INT32	iPlanTypeCode;
	DPSDK_INT32	iInspectStatus;
	DPSDK_INT32 iExecuteMode;
}DPSDK_PAGE_INSPECT_PLAN_PARAM;

typedef struct
{
	DPSDK_CHAR id[DPSDK_PATROL_INFO_LEN];
	DPSDK_CHAR szPlanName[DPSDK_PATROL_INFO_LEN];
	DPSDK_CHAR szPlanCode[DPSDK_PATROL_INFO_LEN];
	DPSDK_CHAR szPlanTypeName[DPSDK_PATROL_INFO_LEN];
	DPSDK_INT32 iPlanTypeCode;					//Insspect plan type 
	DPSDK_INT32 iInspectStatus;					/// "巡检计划当前的巡检状态：1=未执行，2=已执行，3=正在执行，4=暂停，5=终止"
	DPSDK_TIMET tLastInspectTime;
	DPSDK_INT32 iExecuteMode;						/// "执行模式：1=周期巡检；2=仅执行一次"
	DPSDK_INT32 iExecuteStrategy;					/// "执行策略：1=每天仅执行一次；2=循环执行；3=立即执行；4=指定时间"
	DPSDK_CHAR szRemark[DPSDK_PATROL_REMARK_LEN];
	DPSDK_INT32 iPlanStatus;						/// "巡检计划启用状态：0=禁用，1=启用"
	DPSDK_INT32 iRunningStatus;						//Inspect Plan running status 1:Not execute 2:execute 3:execting 4:pause 5:termination
}DPSDK_INSPECT_PAGE_DATA;

typedef struct
{
	DPSDK_INT32 iTotalCount;
	DPSDK_INT32 iDataCount;
	DPSDK_INSPECT_PAGE_DATA* pInspectInfo;
}DPSDK_INSPECT_PAGE_PLANS;

typedef struct
{
	DPSDK_CHAR szPointID[DPSDK_PATROL_INFO_LEN];
	DPSDK_CHAR szPointName[DPSDK_PATROL_INFO_LEN];
	DPSDK_CHAR szPresetPointCode[DPSDK_PATROL_INFO_LEN];
	DPSDK_CHAR szChannelID[DPSDK_PATROL_INFO_LEN];
	DPSDK_INT32 iPointStatus; /// "点位巡检状态：1=未巡检；2=巡检中；3=巡检完毕"
	DPSDK_INT32 iPointResult; /// "点位巡检结果：1=无预警；2=预警；3=失败",
	DPSDK_INT32 iAuditStatus; ///  "审核状态：0=未审核；1=已审核"
}DPSDK_INSPECT_PROGRESS_POINT_INFO;

typedef struct
{
	DPSDK_INT32 iPointCount;
	DPSDK_CHAR szEquipID[DPSDK_PATROL_INFO_LEN];
	DPSDK_CHAR szEquipName[DPSDK_PATROL_INFO_LEN];
	DPSDK_INT32 iEquipStatus; ///"装置巡检状态：1=未巡检；2=巡检中；3=巡检完毕"
	DPSDK_INSPECT_PROGRESS_POINT_INFO* pPageData;
}DPSDK_INSPECT_PROGRESS_DATA;

typedef struct
{
	DPSDK_INT32 iEquipCount;
	DPSDK_INSPECT_PROGRESS_DATA* pProgressData;
}DPSDK_INSPECT_PROGRESS_RESULT;





typedef struct
{
	DPSDK_CHAR	szId[DPSDK_DEVICE_ID_LEN];							// ID
	DPSDK_CHAR	szName[DPSDK_NAME_LEN];								// name
	DPSDK_INT32	iNodeType;											// node type
}DPSDK_EQUIPMENTORG_EQUIPMENT_BASE_INFO;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_DEVICE_ID_LEN];							// ID
	DPSDK_CHAR	szName[DPSDK_NAME_LEN];								// name
	DPSDK_INT32	iNodeType;											// node type
	DPSDK_CHAR	szRelationChannelId[DPSDK_CHANNEL_ID_LEN];			// Relation Channel ID
	DPSDK_CHAR	szPresetPointCode[DPSDK_ID_LEN];					// Preset Point ID
	DPSDK_INT32	iChannelStatus;										// channel status 
}DPSDK_EQUIPMENTORG_SUB_POINT_INFO;

typedef struct
{
	DPSDK_EQUIPMENTORG_EQUIPMENT_BASE_INFO stuEquipmentBaseInfo;
	DPSDK_INT32 iPointNum;											// Number of Sub-point
	DPSDK_EQUIPMENTORG_SUB_POINT_INFO* pPointList;					// List of Sub-point
}DPSDK_EQUIPMENTORG_SUB_EQUIPMENT_INFO;

typedef struct
{
	DPSDK_CHAR	szOrgCode[DPSDK_ORG_CODE_LEN];						// organization Code
	DPSDK_CHAR	szOrgName[DPSDK_ORG_NAME_LEN];						// Organization name
	DPSDK_CHAR	szParentCode[DPSDK_ORG_CODE_LEN];					// Organization parent node ID
	DPSDK_INT32 iSourceType;										// Source type
	DPSDK_CHAR	szSourceId[DPSDK_ORG_CODE_LEN];						// Source Id
	DPSDK_CHAR	szAssociateId[DPSDK_ORG_CODE_LEN];					// Third organization Id

	DPSDK_INT32	iSubCount;											// sub organization count
	DPSDK_INT32	iNodeType;											// node type
	DPSDK_INT32	iAuthority;											// current user has authority or not
	DPSDK_INT32 iRolesNum;
	DPSDK_ROLEID* pRoleIdList;										// Role id list
}DPSDK_EQUIPMENTORG_BASE_INFO;

typedef struct DPSDK_EQUIPMENTORG_INFO_T
{
	DPSDK_EQUIPMENTORG_BASE_INFO struOrgBaseInfo;					// Organization Info
	DPSDK_INT32 iEquipmentNum;										// Number of Child Equipment
	DPSDK_EQUIPMENTORG_SUB_EQUIPMENT_INFO* pEquipmentList;			// List of Child equipment
	DPSDK_INT32 iOrgNum;											// Number of Sub-organization
	DPSDK_EQUIPMENTORG_INFO_T* pOrgList;							// List of Sub-organization
}DPSDK_EQUIPMENTORG_INFO;
/***********************************************************	AR	begin	*********************************************************/
typedef struct
{
	DPSDK_CHAR	szSystemName[DPSDK_NAME_LEN];		//system name
}DPSDK_AR_SETSYSTEMNAME_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szTargetValues[DPSDK_NUM_LONG_LEN];		//TargetValues
}DPSDK_AR_TARGETVALUES_LIST;

typedef struct
{
	DPSDK_CHAR	szTargetType[DPSDK_CONTENT_LEN];		//linkTagetTypes
	DPSDK_INT32 iTargetValueListNum;		//LinkTagets Num
	DPSDK_AR_TARGETVALUES_LIST* pTargetValueList;		//TargetValues List
}DPSDK_AR_LINKTAGETS_LIST;

typedef struct
{
	DPSDK_CHAR	szVertexX[DPSDK_NUM_LONG_LEN];
	DPSDK_CHAR	szVertexY[DPSDK_NUM_LONG_LEN];
}DPSDK_AR_LABELPOLYGON_LIST;

typedef struct
{
	DPSDK_CHAR	szIndex[DPSDK_ID_LEN];		//index
	DPSDK_CHAR	szEnable[DPSDK_NUM_LEN];		//enable
	DPSDK_CHAR	szHorizontalAngle[DPSDK_NUM_LONG_LEN];		//HorizontalAngle
	DPSDK_CHAR	szVerticalAngle[DPSDK_NUM_LONG_LEN];		//VerticalAngle
	DPSDK_CHAR	szMagnification[DPSDK_NUM_LONG_LEN];		//Magnification
	DPSDK_CHAR	szPointX[DPSDK_NUM_LONG_LEN];		//PointX
	DPSDK_CHAR	szPointY[DPSDK_NUM_LONG_LEN];		//PointY
	DPSDK_INT32	iShapeType;		//ShapeType 0 fold line 1 sector
	DPSDK_INT32	iSyncChannelNum;		//sync max channel num
	DPSDK_INT32	isyncChannels;		//sync channel num
	DPSDK_CHAR	szTitleName[DPSDK_NAME_LEN_EX];		//title name
	DPSDK_CHAR	szTitleType[DPSDK_NUM_LEN];		//title type
	DPSDK_CHAR	szTitleAttribute[DPSDK_NAME_LEN_EX];		//sub title
	DPSDK_CHAR	szShowType[DPSDK_NUM_LEN];		//show type
	DPSDK_INT32 iPolygonNum;		//PolygonNum Num
	DPSDK_AR_LABELPOLYGON_LIST*		pLabelPolygonList;
}DPSDK_AR_LABELINFOCONTENT;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_ID_LEN];		//label id
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];		//channel id
	DPSDK_CHAR	szLabelName[DPSDK_NAME_LEN_EX];		//label name
	DPSDK_INT32	iLabelLevel;		//label level 0 normal 1 import
	DPSDK_INT32	iShowLine;		//show Line 0 hide 1 show
	DPSDK_INT32	iShowName;		//show Name 0 hide 1 show
	DPSDK_CHAR	szTransparency[DPSDK_KEY_LEN];		//transparency
	DPSDK_CHAR	szModelId[DPSDK_ID_LEN];		//model	id
	DPSDK_CHAR	szModelName[DPSDK_NAME_LEN_EX];		//model	name
	DPSDK_CHAR	szModelTypeId[DPSDK_ID_LEN];		//model	type id
	DPSDK_CHAR	szModelTypeName[DPSDK_NAME_LEN_EX];		//model	type name
	DPSDK_INT32	iLayout;		//layout	1 horizontal 2 vertical
	DPSDK_INT64	tUpdateTime;		//update time
	DPSDK_INT32	icollected;						//bo collect 0 no 1 yes
	DPSDK_INT32	iLinkTargetListNum;						//LinkTargetList Num
	DPSDK_AR_LINKTAGETS_LIST*	pLinkTargetList;
	DPSDK_AR_LABELINFOCONTENT	pLabelInfoContent;
}DPSDK_AR_LABELINFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_ID_LEN];		//label id
	DPSDK_CHAR	szChannelId[DPSDK_CHANNEL_ID_LEN];		//channel id
	DPSDK_INT32	iCollected;		//be collect 0 no  1 yes
}DPSDK_AR_LABELCOLLECT_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_ID_LEN];		//label id
}DPSDK_AR_LABELDELETE_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szLinkTagetTypes[DPSDK_CONTENT_LEN];		//linkTagetTypes
}DPSDK_AR_RELATETARGETTYPE_LIST;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_ID_LEN];					//model id
	DPSDK_CHAR	szModelName[DPSDK_NAME_LEN_EX];		//model name
	DPSDK_CHAR	szModelTypeId[DPSDK_ID_LEN];						//model type id
	DPSDK_CHAR	szModelTypeName[DPSDK_NAME_LEN_EX];		//model type name
	DPSDK_INT32 iLayout;		//layout	1 horizontal 2 vertical
	DPSDK_INT32 iRelateTypeListNum;
	DPSDK_AR_RELATETARGETTYPE_LIST*	pARRelateTypeList;		//arRelateType List
}DPSDK_AR_MODELINFO_NOTIFY;

typedef struct
{
	DPSDK_CHAR	szId[DPSDK_ID_LEN];
}DPSDK_AR_MODELDELETE_LIST;

typedef struct
{
	DPSDK_INT32 iModelIdListNum;
	DPSDK_AR_MODELDELETE_LIST* pARModelDeleteIdLsit;					//model id
}DPSDK_AR_MODELDELETE_NOTIFY;

/***********************************************************	AR end		*********************************************************/

typedef struct
{
	DPSDK_INT32 iSuccessCount;
	DPSDK_INT32 iFailCount;
	DPSDK_CHAR  szSession[DPSDK_ID_LEN];
	DPSDK_CHAR  szFileUrl[DPSDK_URL_LEN];
	DPSDK_INT32 iProcessRatio;
	DPSDK_INT32 iErrorCode;
	DPSDK_BOOL bStatus;										// 0：normal, 1：abnormal
}DPSDK_IMPORT_DISASTER_RECOVERYNODE_NOTIFY;

typedef struct
{
	DPSDK_CHAR szDiskPath[DPSDK_FILE_PATH_LEN];		// disk path;
	DPSDK_INT32 iSlot;                              //slot	 -1 or 1:system    2-16:data
}DPSDK_DISK_INFO;

typedef struct
{
	DPSDK_CHAR				szPluginCode[DPSDK_CODE_LEN];			// Plugin code
	DPSDK_CHAR				szPluginName[DPSDK_NAME_LEN];			// Plugin name
	DPSDK_CHAR				szPluginIp[DPSDK_IP_LEN];				// Plugin IP
	DPSDK_INT32             iStatus;								// Database init status, 1:will be init 2:Initializing 3:Init completed 4:init error
}DPSDK_PLUGIN_INIT_NOTIFY;

typedef struct
{
	DPSDK_CHAR				szServerIp[DPSDK_IP_LEN];				// server IP
	DPSDK_INT32             iServerType;                            // 1:subServer 2:standbyServer 3:main Server
	DPSDK_INT32             iDisksNum;
	DPSDK_DISK_INFO*        pDiskInfoList;
}DPSDK_DISK_WARNING_NOTIFY;

#define DPSDK_CLIENT_VERSION_LEN (1024)
#define DPSDK_CLIENTROAD_LEN     (2*1024)
#define DPSDK_RSAENCRYPTKE_LEN	 (2*1024)
#define DPSDK_AESKEY_LEN		 (2*1024)
#define DPSDK_SECRETVECTOR_LEN   (2*1024)


typedef struct
{
	DPSDK_CHAR		szToken[DPSDK_TOKEN_LEN];
	DPSDK_LOGIN_PARAM stuLoginParam;
}DPSDK_LOGIN_TOKEN_PARAM;

//typedef struct
//{
//	DPSDK_CHAR		szToken[DPSDK_TOKEN_LEN];
//	DPSDK_CHAR		szResToken[DPSDK_TOKEN_LEN];
//	DPSDK_INT32		iDuration;
//}DPSDK_UPDATE_ALL_TOKEN_PARAM;

typedef struct
{
	DPSDK_CHAR szCode[DPSDK_ID_LEN];							// permission id
}DPSDK_RESOURCE_COLLECTION_INFO;

typedef struct
{
	DPSDK_INT32 iFunctionCodeNum;
	DPSDK_RESOURCE_COLLECTION_INFO* pFunctionCodeList;
	DPSDK_INT32 iLocalConfigItemCodeNum;
	DPSDK_RESOURCE_COLLECTION_INFO* pLocalConfigItemCodeList;
}DPSDK_PERMISSION_RESOURCE_COLLECTION_INFO;

// Move Resrouce notice
typedef struct
{
	DPSDK_INT32				 iDevNum;
	DPSDK_DEV_ALL_INFO* pDevAllInfo;												// Device data
}DPSDK_MOVE_RESOURCE_NOTIFY;

// 缩略图获取结果
typedef struct
{
	DPSDK_CHAR	szPicUrl[DPSDK_URL_LEN];
}DPSDK_THUMBNAILS_RESULT;

typedef struct
{
	DPSDK_BOOL bEnableWatermark;
	DPSDK_BOOL bEnableCustom;
	DPSDK_CHAR szCustomText[DPSDK_WATERMARK_COSTOM_TEXT_LEN];
	DPSDK_INT32 iFontSize;
	DPSDK_INT32 iFontColor;
	DPSDK_INT32 iTransparency;
	DPSDK_INT32 iLineSpacing;
	DPSDK_INT32 iSpacing;
	DPSDK_INT32 iAngle;
	DPSDK_INT32 iApplyScope;
	DPSDK_BOOL bRecordWatermark;
	DPSDK_BOOL bEnableMac;
}DPSDK_WATERMARK_CONFIG;

//new chatmessge
typedef struct
{
	DPSDK_INT32 iMsgId;
}DPSDK_NEW_CHATMSG_NOTIFY;

typedef struct
{
	DPSDK_CHAR szRSAKey[DPSDK_PUBLIC_KEY_LEN];
}DPSDK_RSA_UPDATE_NOTIFY;
