www.pudn.com > H264RtpSource.rar > typedef.h


#ifndef TYPEDEF_H 
#define TYPEDEF_H 
 
// 版本说明 
// ***************************************************************************** 
// 2003-10-1 
// 1.3.0 统一头文件后的第一个版本 
// 包含了新的云台控制协议,支持TCP发视频数据 
// 管理协议版本:《网络数字监控系统》控制管理协议说明书_K001_D0402_V1.03.doc 
// ***************************************************************************** 
// 2003-11-19 
// 增加告警功能,做了以下修改: 
// a.增加struct new2003定义; 
// b.修改struct network 
// c.修改OP0141、OP0142、OP0041 
// d.增加结构ALARM_CAMERA 
// e.增加OP0161、OP0162、OP0163、OP0164定义; 
// f.增加错误代码E_OPERATON_FAIL、E_CAMERA_MISS、E_EOFCAMERA、E_CAMERA_EXIST 
// ***************************************************************************** 
// 2004-01-05 
// 根据文档《网络摄象机网络通信接口协议_110.doc》做了整理,作为对外接口,供二次开发使用 
// 做了以下调整: 
// 1、注释了和OP0071-OP0132操作相关的内容; 
// 2、修改/增加了和OP0044、OP0045、OP0049操作相关的内容 
// 3、增加了和升级程序相关的内容,供升级程序使用 
// 4、全面调整了错误代码(和摄象机无关部分还没有修改!!) 
// 5、把原来各操作的返回PlayResult, ***Result统一改为Result(和摄象机无关部分还没有修改!!) 
// 6、结构new2003已改为network_ext,里面的内容也有调整 
// 7、OP0041操作有修改,增加了多播发送图象 
// 8、用户操作权限已整理 
// ***************************************************************************** 
// 2004-01-09 
// 1. 全面对比了2004-01-05和2003-11-19版本,调回了许多与录象有关的定义 
// 2. 增加了与录象有关的错误代码 
// 3. 修改完成所有Result的统一 
// 4. 与录象无关的部分完全与2004-01-05一致 
// ***************************************************************************** 
// 2004-01-14 
// 修改了UserConfig.Picture.Frame的解释,为了向下兼容 
// ***************************************************************************** 
// 2004-02-06 
// 1. 去掉结构ALARM_CAMERA,结构PROGRAM_RECORD中增加TypeFlag 
// 2. 修改OP0161--OP0164 
// ***************************************************************************** 
// 2004-02-09 
// 1. 在结构ADD_ALARM_CAMERA_RESPONSE中增加Row 
// 2. 修改OP0161--OP0164的返回码 
// ***************************************************************************** 
// 2004-02-12 
// 1. 修改结构LENS 
// 2. 修改OP0045的返回结构 
// 3. 增加OP0147—OP0148,以及相关的结构 
// ***************************************************************************** 
// 2004-02-17 
//	  去除了错误代码E_OPERATON_FAIL、E_CAMERA_MISS、E_EOFCAMERA 
//		E_CAMERA_EXIST,使用统一的错误代码 
// ***************************************************************************** 
// 2004-03-9 
//	  用于摄象机的用户验证,OP0051中、program_record中增加Password[] 
// ***************************************************************************** 
// 2004-03-29 
//	  录象资料导出,修改OP0032,增加错误代码 
// ***************************************************************************** 
// 2004-03-30 
//	  云台控制命令  
//    增加 #define PTZ_STOP	    0x0000 
//         #define AUTO_SCAN	0x0400 
// ***************************************************************************** 
// 2004-04-05 
//	  DHCP Client  
//    在NETWORK_EXT中增加 4项配置项: 
//         BootP, DHCPServerID, LeaseTime, ApplyTime 
// ***************************************************************************** 
// 2004-04-05 
//	  录象资料导出,再次增加OP0032的错误代码 
// ***************************************************************************** 
// 2004-04-21 
//	  结构PROGRAM_RECORD中增加StartOrEnd,用于UDP/TCP选择 
// ***************************************************************************** 
// 2004-05-11 
//	  OP0051中Duration改short为long 
// ***************************************************************************** 
// 2004-06-10 
//	  network.Function增加:bit4-音频功能 
//    增加network_ext.AudioIn 
// ***************************************************************************** 
// 2004-06-16 
//    在SYSTEM_CONFIG结构中,修改了FunctionList;	//摄象机功能标记 按位有效:bit0=音频 
//    去掉了network_ext.AudioIn,改为增加一个结构network_ext.AudioConfig专门存放和音频有关的配置项 
//    修改了struct program_head和struct webpage_head结构,第4-7个字节存放版本号 
//      对版本号进行了统一的修改,参见文档《关于版本的说明.doc》 
// ***************************************************************************** 
// 2004-07-29 
//	  增加3个OPCODE:OP0014,OP0015,OP0050及相关的结构定义 
//    在UserConfig中增加MoveMask数组,用于运动检测mask 
// ***************************************************************************** 
// 2004-08-23 
//	  RECORD_INFO、OPERATE_RECORD_REQUEST中均增加AudioOrVideo,用于标识音频视频 
// ***************************************************************************** 
// 2004-11-15  
//	有关告警 
//	1. USER_CONFIG中增加IOPinName、AlarmInvalidTime、AlarmServiceIP、AlarmServicePort; 
//	2. PERIPHERAL_CONTROL用上Pin,摄像初始化写,终端只读; 
//	3. CONTROL_DATA_REQUEST、CONTROL_DATA_RESPONSE中增加PinValid作为并口输出控制; 
//	4. 增加结构IOPIN_CONFIG,增加对OP0113、OP0114操作的定义,查询修改I/O参数 
//	5. 修改结构OP0045增加字段RecvDataLength、RecvDataOvertime 
//( OP0113、OP0114对I/O参数查询修改,摄像机将名称写入USER_FINFIG。 
//   输入口告警及图像桢测告警OP0044送到有连接的终端,输出口的控制OP0045完成。 
//	 485口透明数据传输用OP0045。) 
// ***************************************************************************** 
// 2005-01-21 
//	有关IP地址的动态解析 
//	1. PROGRAM_RECORD中增加CamDomain; 
//  2. RECORD_INFO中增加CamDomain; 
//  3. CAMERA_RECORD中增加CamDomain; 
//  4. 由于结构长度的增加,查询PROGRAM_RECORD、RECORD_INFO及CAMERA_RECORD时 
//		数据长度会超过DATA_BUF_LEN;所以减少查询上述结构时返回的记录数目, 
//		为此定义QUERY_MAX_NUMBER_2;同时更改SEARCH_CAMERA_RESPONSE、 
//		SEARCH_PROGRAM_RESPONSE、RECORD_INFO_RESPONSE、 
//		QUERY_ALARM_CAMERA_RESPONSE; 
// ***************************************************************************** 
// 2005-04-28 
//	有关查询存储设备目录结构及新建目录的功能 
//	   增加OP0036, OP0037及相关的结构定义 
// ***************************************************************************** 
// 2005-05-11 
//	1. 增加OP0039用于设定存储设备上的分组, OP0040用于查询分组 
//	2. 将PROGRAM_RECORD中的StartOrEnd项中的Bit0用于设置组标志以增加对组进行定时 
//		录像和告警录像操作 
//  3. 增加OP0056查询, OP0059在存储设备上设置摄像机 
// ***************************************************************************** 
 
//****************************************************************************** 
//  2005-5-30 
//  1.OP0083	RS485口发送数据并接收回应数据;使用数据结构类型RS485_HOST_SEND_RECV_TYPE 
//****************************************************************************** 
/* 操作码定义 */ 
// 以下用于脉搏信号  
#define OP0000	0	// 脉搏信号  
#define OP9999	9999        // 路由数据  
 
// 以下用于用户资料的操作,包括鉴权、用户资料管理  
#define OP0001	1	//用户登录鉴权,	MONITOR -> CENTER 
#define OP0002  2 //???del 
#define OP0003	3	//修改用户资料,	MONITOR -> CENTER 
#define OP0004	4	//删除用户资料,	MONITOR -> CENTER 
#define OP0005	5	//查询用户资料,	MONITOR -> CENTER 
#define OP0006	6	//添加用户资料,	MONITOR -> CENTER 
#define OP0007	7	//修改用户密码,	MONITOR -> CENTER 
 
// 以下用于摄像机的操作,包括摄像机添加、删除、资料管理   
#define OP0011	11	// 查询摄像机资料,MONITOR -> CENTER   
#define OP0012	12	// 修改(添加)摄像机资料,MONITOR -> CENTER   
#define OP0013	13	// 删除摄像机,MONITOR -> CENTER   
#define OP0014	14	// 查询运动检测MASK 
#define OP0015	15	// 设置运动检测MASK 
 
// 以下用于定时录像   
#define OP0021	21	// 查询定时录像设置信息 MONITOR -> CENTER   
#define OP0022	22	// 修改定时录像设置信息 MONITOR -> CENTER   
#define OP0023	23	// 删除定时录像设置信息 MONITOR -> CENTER   
#define OP0024	24	// 添加定时录像设置信息 MONITOR -> CENTER   
 
// 以下用于录像资料管理   
#define OP0031	31	// 查询录像资料 MONITOR -> CENTER   
#define OP0032	32  // 录像资料操作 MONITOR -> CENTER   
#define OP0033	33	// 录像文件操作 CENTER -> STORAGE   
 
// 以下用于存储设备的磁盘和目录操作 
#define OP0036	36	// 查询指定目录下的目录结构	MONITOR -> STROAGE 
#define OP0037	37	// 新建目录		MONITOR -> STROAGE 
 
// 以下用于存储设备上的组操作 
#define OP0039	39	// 组设定 MONITOR -> STORAGE 
#define OP0040	40	// 查询组 MONITOR -> STORAGE 
 
// 以下用于实时监控功能   
#define OP0041	41	//视频源开始/停止工作	MONITOR ->[CENTER->]CAMERA 
#define OP0042	42	//请求控制云台			MONITOR ->[CENTER->]CAMERA 
#define OP0043	43	//请求控制镜头			MONITOR ->[CENTER->]CAMERA 
#define OP0044	44	//消息通知	 
#define OP0045	45	//直接发送控制数据		MONITOR ->[CENTER->]CAMERA 
#define OP0046	46	//直接发送图象数据		MONITOR ->[CENTER->]CAMERA 
#define OP0047	47	//查询图象参数 
#define OP0048	48  //恢复出厂图象参数 //???add 
#define OP0049	49	//开始/停止多播发送视频 
#define OP0050	50	//音量控制 
 
// 以下用于录像   
#define OP0051	51	// 录像开始/停止工作 MONITOR -> STORAGE 
 
// 以下用于存储设备上的摄像机资料操作 
#define OP0056	56	//查询摄像机数据 MONITOR -> STORAGE 
#define OP0057  57	//操作摄像机数据 MONITOR -> STORAGE 
 
// 以下用于录像回放   
#define OP0061	61	// 请求播放/停止录像资料 MONITOR -> CENTER -> STORAGE   
#define OP0062	62	// 回放控制 MONITOR -> CENTER -> STORAGE   
 
// 以下用于I/O口配置的操作 
#define OP0113	113 // 查询摄像机内I/O配置 MONITOR -> CAMERA 
#define OP0114	114 // 修改摄像机内I/O配置 MONITOR -> CAMERA 
 
/****************************OP0071-OP0132暂时没有使用!!!(2004.11重新使用OP0113、OP0114) 
// 以下用于告警处理   
#define OP0071	71	// 发送告警信号 CAMERA(STORAGE) -> CENTER   
#define OP0072	72	// 发送告警信息 CENTER -> MONITOR   
 
// 以下用于对摄像机I/O口的操作   
#define OP0081	81	//读入Input口			MONITOR ->[CENTER->]CAMERA 
#define OP0082	82	//写入Output口			MONITOR ->[CENTER->]CAMERA*/ 
#define OP0083	83	//RS485口发送数据并接收回应数据;使用数据结构类型RS485_HOST_SEND_RECV_TYPE 
/* 
// 以下用于对组的管理   
#define OP0091	91	// 增加(修改)组别 MONITOR -> CENTER   
#define OP0092	92	// 查询组 MONITOR -> CENTER   
#define OP0093	93	// 删除组 MONITOR -> CENTER   
 
// 以下用于存储设备管理   
#define OP0101	101	// 查询存储设备 MONITOR -> CENTER   
#define OP0102	102	// 添加、修改存储设备 MONITOR->CENTER->STORAGE   
#define OP0103	103	// 删除存储设备 MONITOR -> CENTER   
 
// 以下用于摄像机的配置  3 
#define OP0111	111 // 查询摄像机内PTZ控制协议 MONITOR -> CENTER[CAMERA]   
#define OP0112	112 // 修改摄像机内PTZ控制协议 MONITOR -> CENTER[CAMERA]   
#define OP0113	113 // 查询摄像机内串口配置 MONITOR -> CENTER[CAMERA]   
#define OP0114	114 // 修改摄像机内串口配置 MONITOR -> CENTER[CAMERA]   
 
// 以下用于运行管理   
#define OP0121	121	// 查询当前用户登陆情况 MONITOR -> CENTER   
#define OP0122	122	// 查询当前正在进行的监控 MONITOR -> CENTER   
#define OP0123	123	// 查询当前正在进行的录像 MONITOR -> CENTER   
 
//以下用于日志管理 
#define OP0131	131	// 读取系统日志 MONITOR -> CENTER  
#define OP0132	132	// 清除系统日志 MONITOR -> CENTER 
OP0071-OP0132暂时没有使用!!!***********************************/ 
 
//以下用于对摄像机网络配置的操作 
#define OP0141	141	//查询摄像机网络配置			MONITOR -> CAMERA 
#define OP0142	142	//修改摄像机网络配置			MONITOR -> CAMERA 
#define OP0143	143	//查询摄像机云台镜头配置		MONITOR -> CAMERA 
#define OP0144	144	//修改摄像机云台镜头配置		MONITOR -> CAMERA 
#define OP0145	145	//查询摄像机串口配置			MONITOR -> CAMERA 
#define OP0146	146	//修改摄像机串口配置			MONITOR -> CAMERA 
#define OP0147	147	//查询摄像机镜头配置			MONITOR -> CAMERA 
#define OP0148	148	//修改摄像机镜头配置			MONITOR -> CAMERA 
 
//以下用于云台操作,无应答包 
#define OP0150	150	// PTZ控制 
#define OP0151	151 // 预置点操作 
#define OP0152	152 // 巡视操作 
#define OP0153	153 // 辅助开关 
 
// 以下用于操作录像设备中存储的告警摄像机的信息 
#define OP0161  161	// 查询存储设备中需要告警录像的摄像机列表	MONITOR -> STORAGE 
#define OP0162  162 // 增加存储设备中需要告警录像的摄像机列表	MONITOR -> STORAGE 
#define OP0163  163 // 修改存储设备中需要告警录像的摄像机列表	MONITOR -> STORAGE 
#define OP0164  164 // 删除存储设备中需要告警录像的摄像机列表	MONITOR -> STORAGE 
 
//以下摄象机(UP001-OP006为摄像机中程序1用,此文件中无定义) 
#define UP001	0x00B1 
#define UP002	UP001+1 
#define UP003	UP002+1 
#define UP004	UP003+1 
#define UP005	UP004+1 
#define UP006	UP005+1 
#define UP007 	UP006+1 
 
#define OPRTP	0x0100		//rtp packet 
#define OPRTCP	OPRTP+1		//rtcp packet 
/* 操作码定义结束  */ 
 
// 常量定义   
#define USERNAME_LEN            20 
#define PASSWORD_LEN            12 
#define PACKET_HEAD				24	//包头长度 //???add 
#define DATA_BUF_LEN            1500 //???modi 
#define MAX_CONTROL_DATA_LENGTH 64 
#define MAX_COMMAND				32 //???add 
#define TIME_UNIT				40 // 云台操作最小时间单位(毫秒)//???add 
 
// 一次查询返回的资料个数最大值   
#define QUERY_MAX_NUMBER		10  // 查询用户 
#define QUERY_MAX_NUMBER_2		5	// 查询网络摄像机、录像资料、定时/告警资料 
 
typedef unsigned char DESCRIPTION[32]; 
typedef unsigned char NAME[USERNAME_LEN]; 
 
// 时间   
typedef unsigned char ONLY_TIME[5];         //  HHMM\0   
typedef unsigned char GENERAL_TIME[13];     // YYYYMMDDHHMM\0   
 
#define TYPE_REQUEST	0xA1 
#define TYPE_RESPONSE	0xA2 
 
// ProtocolType=0x33 
// DestinationAddress、SourceAddress:数据包发送的目的地址和源地址, 
// 用来指示数据包的发送双方;PacketType:有2种,请求调用(0xA1)、 
// 返回结果(0xA2)。TransactionID:返回结果或返回差错的数据包内, 
// 事务标识的值是其对应的请求调用数据包的事务标识。应用层通过该标识 
// 识别"请求-应答"关系。DataLength:指DataBuffer里数据的实际长度。 
// 包头到DataLength数据项为止(包含DataLength)。发送长度为 
// 包头长度+DataLength。 
   
typedef struct packet_datalink 
{ 
    unsigned long DestinationAddress;           // 目的地址   
    unsigned long SourceAddress;                // 源地址   
    unsigned long TransactionID;                // 事务标识   
    unsigned char ProtocolType;                 // 协议标识   
    unsigned char PacketType;                   // 类型标识   
    unsigned short OperationCode;               // 操作码   
    unsigned short DataLength;                  // 数据区长度   
    unsigned long Reserved;                     // 留用   
    unsigned char DataBuffer[DATA_BUF_LEN];     // 数据区   
} PACKET_TYPE; 
 
// 操作记录:除了用户登录外所有的操作都包含此结构, 
// 以便管理中心根据需要记录系统日志 
   
 
/* 升级程序有关 */ 
// data_type数据类型定义 
#define SYSTEM	0 
#define CONFIG1	1 
#define CONFIG2	2 
#define BOOT	3 
#define PROGRAM1	4 
#define PROGRAM2	5 
#define WEBPAGE	6 
 
//配置区头结构:包含了系统配置区和配置数据区1、2 
struct config_head{ 
	unsigned char flag; 
	unsigned char version; 
	unsigned short reserved1; 
	unsigned char reserved3[28]; 
}; 
 
//程序区头结构 
struct program_head{ 
	unsigned char flag; 
	unsigned char MainFreq;     //摄象机主频 
	unsigned char reserved[2]; 
	unsigned int version; 
	unsigned long time; 
	unsigned long length; 
	unsigned char reserved3[16]; 
}; 
#define MF150 2 
#define MF165 3 
#define MF180 4 
 
//网页区头结构 
struct webpage_head{ 
	unsigned char flag; 
	unsigned char reserved; 
	unsigned short reserved1; 
	unsigned long version; 
	unsigned long time; 
	unsigned long length; 
	unsigned char reserved3[16]; 
}; 
 
//FLASH存储区分配表:记录除系统配置区以外的存储区的开始位置和长度 
struct flash_area_table 
{ 
	ULONG Config1Offset ; //配置数据区1在FLASH中的地址偏移量 
	ULONG Config1Length ; //配置数据区1的长度(字节数) 
	ULONG Config2Offset ; //配置数据区2在FLASH中的地址偏移量 
	ULONG Config2Length ; //配置数据区2的长度(字节数) 
	ULONG BootOffset;	  //引导区在FLASH中的地址偏移量 
	ULONG BootLength;     //引导区的长度(字节数) 
	ULONG Program1Offset; //程序区1在FLASH中的地址偏移量 
	ULONG Program1Length; //程序区1的长度(字节数) 
	ULONG Program2Offset; //程序区2在FLASH中的地址偏移量 
	ULONG Program2Length; //程序区2的长度(字节数) 
	ULONG WebpageOffset;  //网页区在FLASH中的地址偏移量 
	ULONG WebpageLength;  //网页区的长度(字节数) 
}; 
 
struct Flash_Table 
{ 
	UCHAR Config1Sec;//配置数据区1在FLASH中的起始扇区号 
	UCHAR Config2Sec; 
	UCHAR BootSec; 
	UCHAR Program1Sec; 
	UCHAR Program2Sec; 
	UCHAR WebPageSec; 
}; 
 
#define MAX_FILES 100 
#define FILESYSTEM	1024*1024 
typedef struct file_list 
{ 
	char FileName[256]; 
	long Offset; 
	long Length; 
}FILE_LIST; 
/* End of 升级程序有关 */ 
 
 
typedef struct log 
{ 
	NAME UserName;      // 用户名称   
} LOG; 
 
/* 摄象机内部存储数据结构 */ 
// 用户记录   
#define MAXUSER		100 
typedef struct user_record 
{ 
	NAME UserName;                          // 用户名称,唯一主关键字   
	unsigned char Password[PASSWORD_LEN];   // 用户密码   
    DESCRIPTION Class;                      // 用户描述   
    unsigned char Group[4];		            // 用户分组,按位定义,1有效   
    unsigned long Authority;             // 用户权限,按位定义,1有效   
} USER_RECORD; 
 
/* 新的用户权限管理 */ 
//操作控制权限(Operation) 
#define O_PZT           0x00000001         //bit0-PTZ控制操作 
#define O_RECORD        0x00000002         //bit1-录像控制操作 
#define O_SNAP          0x00000004         //bit2-抓拍控制操作 
#define O_PICTURE		0x00000008		   //bit3-图象参数临时调整操作 
#define O_PERIPHERAL    0x00000010         //bit4-外设控制操作 
#define O_ALARM         0x00000020         //bit5-外设告警操作 
#define O_MULTICAST		0x00000040			//bit6-多播传送媒体流启动、停止权限 
#define O_UNICAST		0x00000080			//bit7-启动(观看)单播媒体流权限 
#define O_GROUP         0x000000FF         //操作控制权限 
//录象管理权限(Record) 
#define R_DEVICE		0x00000100		   //bit8-存储设备配置 
#define R_ONTIME		0x00000200		   //bit9-定时录象设置 
#define R_RECORD		0x00000400		   //bit10-即时录象 
#define R_PLAY			0x00000800		   //bit11-录象回放 
#define R_GROUP			0x0000ff00		   //录象管理权限 
//配置管理权限(Configuration) 
#define C_PICTURE       0x00010000         //bit16-图象参数配置 
#define C_CAMERA        0x00020000         //bit17-摄像机配置 
#define C_UPDATE        0x00040000         //bit18-软件升级 
#define C_USER          0x00080000         //bit19-用户管理 
#define C_GROUP         0x00ff0000         //配置管理权限 
 
// 摄像机记录   
typedef struct camera_record 
{ 
	unsigned long Serial;           // 摄像机的编号   
	unsigned long IP;               // 摄像机的IP地址   
	unsigned long Mask;             // 摄像机的子网掩码   
	unsigned long DefaultGateway;   // 摄像机的缺省网关IP地址   
	unsigned short AlarmType;		// 摄像机告警允许屏蔽字,按位定义,1有效   
                                    // BIT0-BIT7对应摄像机的IO1-8   
    unsigned char SoftwareVer[16];	// 软件版本号   
	unsigned char HardwareVer[16];	// 硬件版本号   
    unsigned char MAC[6];			// 摄像机的MAC地址   
	unsigned char Reg;              // 摄像机是否注册,1为已注册,0为未注册   
	unsigned char Group[4];			// 摄像机分组,按位定义,1有效   
    DESCRIPTION Class;        		// 摄像机的描述   
    NAME CameraName;				// 摄像机名称,不允许重复   
	char CamDomain[30];				//摄像机的域名 
} CAMERA_RECORD; 
 
//云台、镜头控制协议的配置 
typedef struct control_command 
{ 
	unsigned char Length;				//Command[]中有效字符长度 
	unsigned char Command[27];			//一串控制字符 
} CONTROL_COMMAND; 
 
typedef CONTROL_COMMAND CONTROL_TABLE[32]; 
 
//以下define的值作为CONTROL_TABLE的下标 
#define	CMD_PAN_UP				0 
#define	CMD_PAN_DOWN			1 
#define	CMD_PAN_LEFT			2 
#define	CMD_PAN_RIGHT			3 
#define	CMD_PAN_LEFTUP			4 
#define	CMD_PAN_LEFTDOWN		5 
#define	CMD_PAN_RIGHTUP			6 
#define	CMD_PAN_RIGHTDOWN		7 
#define	CMD_HORIZONTAL_ON		8	//水平开 
#define	CMD_HORIZONTAL_OFF		9	//水平关 
#define	CMD_ZOOM_ADD			10 
#define	CMD_ZOOM_DEC			11 
#define	CMD_IRIS_ADD			12 
#define	CMD_IRIS_DEC			13	//光圈 
#define	CMD_FOCUS_ADD			14 
#define	CMD_FOCUS_DEC			15 
#define	CMD_VERTICAL_STOP		16	//上下停止码 
#define	CMD_HORIZONTAL_STOP		17	//水平停止码 
#define	CMD_ZOOM_STOP			18	//变倍停止码 
#define	CMD_FOCUS_STOP			19	//聚焦停止码 
#define	CMD_AUX1_ON				20 
#define	CMD_AUX1_OFF			21 
#define	CMD_AUX2_ON				22 
#define	CMD_AUX2_OFF			23	//辅助开关 
 
#define WDAY_SUN    0x01            // Sunday   
#define WDAY_MON    0x02            // Monday   
#define WDAY_TUE    0x04            // Tuesday   
#define WDAY_WED    0x08            // Wednesday   
#define WDAY_THU    0x10            // Thursday   
#define WDAY_FRI    0x20            // Friday   
#define WDAY_SAT    0x40            // Saturday   
#define WDAY_HLD    0x80            // Holiday   
 
 
// 控制云台命令   
typedef struct control_platform 
{ 
	unsigned char Direction;//0~7云台运动方向(上、右上、右、右下、下、左下、左、左上) 8-水平循环 9-垂直循环 
	unsigned char Step;		//云台运动步长  
} CONTROL_PLATFORM; 
 
// 云台控制参数 
typedef struct platform_control 
{ 
    unsigned char HorizontalStep;   //左右转动调整步长 
    unsigned char VerticalStep;     //上下转动调整步长 
    unsigned char HorizontalSpeed;  //左右转动速度 
    unsigned char VerticalSpeed;    //上下转动速度 
    unsigned char Resevered[4];     //保留 
} PLATFORM_CONTROL; 
 
// 控制镜头命令   
typedef struct control_lens 
{ 
	unsigned char Property;	    // 0-光圈,1-聚焦,2-缩放   
	signed char	Step;			// 调整步长   
} CONTROL_LENS; 
 
// 镜头控制参数 
typedef struct lens_control 
{ 
    unsigned char FocusStep;        //焦距调整步长 
    unsigned char ApertureStep;     //光圈调整步长 
    unsigned char ZoomStep;         //变倍调整步长 
    unsigned char Resevered[5];     //保留 
} LENS_CONTROL; 
	 
// 视频、图象处理参数 
typedef struct picture 
{ 
	unsigned char Format;			//视频信号制式: PAL,NTSC 
	unsigned char Channel;			//视频采集通道: 视频输入接口适配器、CVBS或Y/C、视频输入通道号 
	unsigned char GatherMethod;		//视频捕获模式:全场捕获YUV4:2:2、半场捕获YUV4:2:2 
	char Contrast;					//图像对比度:-128~127对应-2~1.999 
	unsigned char Bright;			//图像明亮度:0~255 
	char Color;						//图像饱和度:-128~127对应-2~1.9999 
	char Hue;						//图像色度:-128~127对应-180~178.6 
	unsigned char Resevered[5];		//保留 
	unsigned long BandwidthMin;		   //带宽限制:KBits/秒, 0时,无限制[16000:4000000],vbr时波动最小码流 
	unsigned long BandwidthMax;		   //vbr时,码流波动最大范围, cbr时和BandwidthMin相等 
	unsigned char Frame;			//图像数据格式:1-SubQCIF,2-QCIF,3-CIF,4-4CIF, 5-VGA, 6--d1 
	unsigned char Gather;			//图像采样格式:YUV4:2:0 
	unsigned char StepMin;				//量化步长即清晰度:10--35, cbr时为质量波动最小范围 
	unsigned char StepMax;				//量化步长即,cbr时为质量波动最大范围, vbr时和StepMin相等。 
	unsigned char Rate;				//帧速率:1~25帧/秒 
	unsigned long IFrameRate;		//I帧间隔:0x0032:0xFFFF, 设置值为0时,为全I帧 
	unsigned char Code_MODE;		//编码模式CODE_CBR_MODE(恒定码流可变质量) , 
	//CODE_VBR_MODE(恒定质量可变码流) 
 
	unsigned char Resevered1[2];	 //保留 
} PICTURE; 
 
// 视频、图象处理参数 
//typedef struct picture 
//{ 
//    unsigned char Format;           //视频信号制式: PAL,NTSC,SECAM 
//    unsigned char Channel;          //视频采集通道: 视频输入接口适配器、CVBS或Y/C、视频输入通道号 
//    unsigned char GatherMethod;     //视频捕获模式:全场捕获YUV4:2:2、半场捕获YUV4:2:2 
//    char Contrast;                  //图像对比度:-128~127对应-2~1.999 
//    unsigned char Bright;           //图像明亮度:0~255 
//    char Color;                     //图像饱和度:-128~127对应-2~1.9999 
//    char Hue;                       //图像色度:-128~127对应-180~178.6 
//    unsigned char Resevered[5];     //保留 
// 
//    unsigned long Bandwidrth;       //带宽限制:KBits/秒 
//	unsigned char Frame;            //图像数据格式:1-SubQCIF,2-QCIF,3-CIF,4-4CIF 
//    unsigned char Gather;           //图像采样格式:YUV4:2:0 
//    unsigned char Step;	            //量化步长即清晰度:3~31 
//    unsigned char Rate;	            //帧速率:1~25帧/秒 
//    unsigned char IFrameRate;       //I帧间隔:每分钟I帧的个数,2~120帧/分钟,0为全I帧 
//    unsigned char Resevered1[7];     //保留 
//} PICTURE; 
 
// 控制图像参数   
typedef struct control_picture 
{ 
	unsigned char Property;		// 0-恢复缺省值 1-编码帧率 2-清晰度 3-图像格式 
								// 4-对比度 5-亮度 6-饱和度 7-色调 8-I帧的帧率  
    char Adjust;				// >0:增加,<0:减少   
} CONTROL_PICTURE; 
 
//I/O参数 
typedef struct iopin_config 
{ 
    unsigned char Pin;              //外接并口PIN定义,按位有效,0=Output,1=Input //摄像机初始化写入,终端只读 
    unsigned char AlarmMask;		//告警标记,按位有效:bit6=运动检测告警 
    unsigned char AlarmLevel;		//告警有效电平:1-高有效,0-低有效 //摄像机初始化写入,终端只读 
    unsigned long	AlarmServiceIP; //告警服务的IP地址 
    unsigned short	AlarmServicePort; //告警服务的端口号 
	unsigned short  AlarmInvalidTime; //告警在AlarmInvalidTime秒后解除 
	char		  IOPinName[8][20]; //I/O口名称定义 
} IOPIN_CONFIG; 
 
// 网络配置 
//当前云台控制协议 
#define 	USER_DEFINE	0 
#define		PELCO_D		0x01 
#define 	PELCO_P		0x02 
#define		DEMO_SPEED	0x03 
typedef struct network 
{ 
    unsigned long IP;               //IP地址 
    unsigned long Gateway;  	    //网关IP地址 
    unsigned long Mask;             //子网掩码 
    unsigned long MultiAddr;        //多播地址 
    unsigned short Port;            //TCP连接端口 
    unsigned char P_Protocol;		//当前云台控制协议 
    unsigned char P_Address;		//云台地址码 
    unsigned char P_Speed;			//云台水平最高转速 
    unsigned char T_Speed;			//云台垂直最高转速 
                                    //以下属于用户可配置的摄像机配置 
    unsigned char AlarmMask;		//告警标记,按位有效:bit6=运动检测告警 
    unsigned char AlarmLevel;		//告警有效电平:1-高有效,0-低有效 //摄像机初始化写入,终端只读 
    NAME          Name;             //摄像机名称 
    DESCRIPTION   Description;      //摄像机描述 
    unsigned long Function;         //摄像机功能配置,按位有效1=enable,0=disable 
                                    //bit0-WEB服务功能,bit1-软件升级功能,bit2-插件升级功能,bit3-网页更新功能 
                                    //bit4-音频功能 
} NETWORK; 
 
// 摄像机配置 
typedef struct camera 
{ 
    unsigned long Product;          //摄像机生产批号 
    unsigned long Serial;           //摄像机串列号 
    unsigned long Password;         //摄像机密码 
    unsigned long HardwareVer;		//摄像机硬件版本号 
    unsigned long SoftwareVer;		//摄像机软件版本号 
    unsigned long FirmwareVer;		//摄像机固件版本号 
    unsigned long PluginVer;		//摄像机插件版本号 
    unsigned char MAC[6];			//MAC地址 
    unsigned char Resevered[6];     //保留 
} CAMERA; 
  
// 摄像头配置 
typedef struct lens 
{ 
    unsigned char pin7;	//按位有效 
                                     	//bit0=1,电子快门开;bit0=0,电子快门关 
                                     	//bit1=1,背光补偿on;bit1=0,背光补偿off 
                                     	//bit2=1,自动增益控制on,bit2=0,自动增益控制off 
                                     	//bit3=1,自动追踪白平衡;bit3=0手动锁定白平衡 
                                     	//bit4=1,镜像off; bit4=0,镜像on 
                                     	//bit5=1,2倍数字放大off;bit5=0,2倍数字放大on 
    unsigned char Resevered[7];	//保留 
} LENS; 
 
/*********************************** 
typedef struct lens 
{ 
    unsigned char mode;              //摄像头工作方式,5PIN工作方式或7PIN工作方式 
    unsigned char pin5;              //5PIN工作方式,按位有效 
                                     //bit0=1,自动追踪白平衡;bit0=0,无色滚动 
                                     //bit1=1,自动追踪白平衡;bit1=0,手动锁定白平衡 
                                     //bit2=1,镜像on;bit2=0,镜像off 
                                     //bit3==1,2倍数字放大on;bit3=0,2倍数字放大off 
    unsigned char pin7;              //7PIN工作方式,按位有效 
                                     //bit0=1,电子快门;bit0=0,自动光圈 
                                     //bit1=1,自动追踪白平衡;bit1=0手动锁定白平衡 
                                     //bit2=1,镜像on;bit2=0,镜像off 
                                     //bit3=1,2倍数字放大on;bit3=0,2倍数字放大off 
                                     //bit4=1,背光补偿on;bit4=0,背光补偿off 
                                     //bit5=1,自动增益控制on,bit5=0,自动增益控制off 
    unsigned char Resevered[5];      //保留 
} LENS; 
******************************/ 
 
// 串行接口配置 
typedef	struct port_config 
{ 
    unsigned long BaudRate;	    //485串口波特率 
    unsigned char DataBits;	    //数据位 
    unsigned char StopBits;	    //停止位 
    unsigned char Parity;	    //校验位 0-N 1-E 
    unsigned char Enable;           //串行接口使能,enable=0xFF,disable=0x00 
    unsigned char Resevered[4];     //保留 
} PORT_CONFIG;    
 
// 外设接口配置 
typedef struct peripheral_control 
{ 
    unsigned char Pin;              //外接并口PIN定义,按位有效,0=Output,1=Input //摄像机初始化写入,终端只读 
    unsigned char Trigger;          //外设接口触发方式,按位有效,0=level,1=edge //无用 
    unsigned char Edge;             //外设接口触发方式,按位有效,Trigger=0,0=low,1=high;Trigger=1,0=fall,1=rise //无用 
    unsigned char Enable;           //外设接口使能,按位有效,0=disable,1=enable //无用 
    unsigned char Resevered[4];     //保留 
} PERIPHERAL_CONTROL; 
 
typedef struct audio_config 
{ 
    unsigned char AudioIn;          // 音频输入:0-MICin, 1-LINEin 
    unsigned char InputVolume;      // 音频采集的音量 0~100db 
    unsigned char OutputVolume;     // 播放音频的音量 0~100db 
    unsigned char NotUsed;          //保留 
}AUDIO_CONFIG; 
 
// 由于后来增加的项目太多,原来的结构放不下了 
// 新增加的结构都放在这里 
typedef struct network_ext 
{ 
    unsigned long AlarmTime;		//告警图象播放时间(单位:秒) 
    unsigned char Sensitivity;		//运动告警精度1-255 
    unsigned char EFrame;			//网络帧格式:1-Ethernet II, 2-IEEE802.x 
    unsigned char BootP;			//网络启动协议:0 = Normal; 1 = DHCP 
    unsigned char AVMulticastEnable;  //多播方式发送媒体流的使能标志;1-发送,0-不发送,bit0://图象,bit1:声音 
    unsigned long AVMulticastIP;       //使用多播方式发送媒体流的多播IP地址 
    unsigned short AVMulticastPort;   //使用多播方式发送媒体流的UDP端口 
    unsigned char NotUsed1;		    //保留 
    unsigned char NotUsed2;		    //保留 
    unsigned long ProtocolNodeAddr;	//管理控制协议结点地址 
    unsigned long DHCPServerID;		// DHCP 服务器IP 
    unsigned long LeaseTime;		// IP地址剩余有效时间 
    unsigned long ApplyTime;		// IP地址申请时间		此3项仅当BootP=DHCP时有意义!!并且不可修改!!! 
    AUDIO_CONFIG AudioConfig;    // 和音频有关的配置 
    unsigned char NotUsed3[28];		//保留 
} NETWORK_EXT; 
 
// 系统配置区结构 //摄象机内部用  
typedef struct system_config{ 
    CAMERA              Camera; 
    NETWORK             DefaultNetwork; 
//    VIDEO               DefaultVideo; 
    PICTURE             DefaultPicture; 
    LENS_CONTROL        DefaultLensControl; 
    PLATFORM_CONTROL    DefaultPlatformControl;   
    LENS                DefaultLens; 
    PORT_CONFIG         DefaultPortConfig; 
    PERIPHERAL_CONTROL  DefaultPeripheralContorl; 
    CONTROL_COMMAND     DefaultControlCommand[MAX_COMMAND]; 
    char Model[32]; 
    unsigned long 		FunctionList;	//摄象机功能标记 按位有效:bit4=音频 
}SYSTEM_CONFIG; 
 
#define MBX				22 
#define MBY				18 
#define MBDISABLE		0x3f			//为保证向下兼容,只要MoveMask的值不为0x3f,就认为有效 
 
// 用户配置区结构 //多播包用  
typedef struct user_config{ 
    NETWORK             Network;   
//    VIDEO               Video; 
    PICTURE             Picture; 
    LENS_CONTROL        LensControl; 
    PLATFORM_CONTROL    PlatformControl;   
    LENS                Lens; 
    PORT_CONFIG         PortConfig; 
    PERIPHERAL_CONTROL  PeripheralControl; 
    CONTROL_COMMAND     ControlCommand[MAX_COMMAND]; 
    NETWORK_EXT			Network_ext; 
    char				MoveMask[MBX][MBY]; 
    unsigned long		AlarmServiceIP;     //告警服务的IP地址 
    unsigned short		AlarmServicePort;   //告警服务的端口号 
	unsigned short		AlarmInvalidTime; 
	char				IOPinName[8][20]; 
}USER_CONFIG; 
/* End of 摄象机内部存储数据结构 */ 
 
/* 中心有关 */ 
// 用户组的资料   
typedef struct group_record 
{ 
	unsigned char GroupNumber;			//组号 
	NAME Name; 
	DESCRIPTION Class; 
} GROUP_RECORD; 
 
// 正在使用系统的操作员记录   
typedef struct operator_info 
{ 
	NAME Name; 
	GENERAL_TIME LoginTime; 
	unsigned long IP; 
} OPERATOR_INFO; 
 
// 正在进行的录像操作记录   
typedef struct recording_info 
{ 
	unsigned char Type;		// 录像类别:0-普通,1-定时,2-告警   
    NAME CameraName;        // 摄像机名称   
    GENERAL_TIME BeginTime;	// 开始时间   
    GENERAL_TIME EndTime;	// 结束时间   
	NAME OperatorName;	    // 开始录像的操作员   
} RECORDING_INFO; 
 
// 正在观看时实视频的操作员记录   
typedef struct view_info 
{ 
	NAME OperatorName; 
	NAME CameraName; 
    GENERAL_TIME BeginTime;	// 开始时间   
} VIEW_INFO; 
/* End of 中心有关 */ 
 
/* 录象有关 */ 
// 实时视频源资料   
typedef struct camera_info 
{ 
	unsigned long Serial;           // 摄像机的编号   
    DESCRIPTION Class;        		// 摄像机的描述   
    NAME CameraName;				// 摄像机名称   
} CAMERA_INFO; 
 
//存储设备中有告警录像的摄像机记录 
//typedef struct alarm_camera 
//{ 
//	// 0-正常连接 -1-摄像机未连接 -2-摄像机名重复 
//	char Status; 
//	CAMERA_INFO Info; 
//	unsigned long IP;				// 摄像机IP 
//	unsigned short Port;			// 摄像机端口号 
//	GENERAL_TIME BeginTime; 
//	GENERAL_TIME EndTime; 
//} ALARM_CAMERA; 
 
// 定时录像、告警录象设置   
typedef struct program_record 
{ 
	unsigned long 	Serial;			//摄像机的编号 
	NAME			CameraName;		//摄像机名称 
	unsigned long	IP;				//摄像机IP 
	unsigned short	Port;			//摄像机端口号 
	unsigned char	StartOrEnd;		//开始视频时按位有效: 
									//			bit0 = 组标志,0-普通记录 1-按组设定 
									//			bit1 = 发送音频标志,0-不发送 
									//			bit2 = 发送视频标志,0-发送,1-停止 
									//			bit4 = 接收告警消息标志-1有效,0=无效	//此处无效 
									//			bit5 = 仅收看告警画面标志-1有效,0=普通	//此处无效 
									//			bit6 = 发送方式标志,0-UDP,1-TCP 
									//			bit7 = 多播发送方式标志,0-无效,1-多播发送	//此处无效 
	GENERAL_TIME BeginTime;			//定时开始时间 
	GENERAL_TIME EndTime;			//定时结束时间 
	unsigned char PeriodFlag;		//定时类型标记:0-长期定时,1-一次有效 
	unsigned char DateMask;			//定时有效日,bit0-6:Sun-Sat, 1有效											// bit7-节假日(先不做)  
	DESCRIPTION Class;        		//定时录像的描述 
	char		Flag;				//1-成功连接摄象机 
									//0-初始未连接状态 
									//(-1)-IP无响应, 
									//(-2)-IP与编号不相符合,  
									//(-3)-其它原因失败 
									//(-4)-摄象机重名 
									//(-5)-摄象机用户验证失败 
	char		TypeFlag;			//0-定时  1-告警 
	NAME UserName;					//操作用户名 
	unsigned char Password[PASSWORD_LEN];   //用户密码(用于摄象机用户验证) 
	char CamDomain[30];				//摄像机的域名 
	unsigned short Row;				//在定时表中的行号,用于删、改,界面中不显示 
} PROGRAM_RECORD; 
//当PeriodFlag=0时,定时开始时间和结束时间中的日期无效,并写以字符"0"。 
//当TypeFlag=1时,BeginTime、EndTime可以全为空表示开启告警录象,并不允许有其它相同摄象机的告警记录设置; 
//当TypeFlag=0时不允许时间为空 
 
 
#define RECORD_TYPE_NORMAL	0 
#define RECORD_TYPE_TIME	1 
#define RECORD_TYPE_ALARM	2 
// 录像资料   
typedef struct record_info 
{ 
	unsigned long 	Serial;			//摄像机的编号 
	NAME			CameraName;		//摄像机名称 
	unsigned long	IP;				//摄像机IP 
	unsigned short	Port;			//摄像机端口号 
	GENERAL_TIME BeginTime;			//开始时间 
	GENERAL_TIME EndTime;			//结束时间 
	unsigned char Type;				//录像类别:0-普通,1-定时,2-告警 
	unsigned char AudioOrVideo;		//标识:1-Audio,2-Video,3-Audio&Video 
	DESCRIPTION Class;				//录像的描述		 
	NAME UserName;					//操作用户名 
	char CamDomain[30];				//摄像机的域名 
	unsigned short Row;				//在表中的行号,用于删、备份导出,界面中不显示 
} RECORD_INFO; 
 
// 存储设备上的摄像机资料 
typedef struct 
{ 
	unsigned long CamSer;			//摄像机序列号 
	NAME CamNm;						//摄像机名称 
	unsigned short SavDay;			//录像资料保存的天数0~366 
	NAME GrpNm;						//摄像机所在组名称 
	char Domain[30];				//摄像机的域名或者IP地址的字符串形式 
	unsigned short	Port;			//摄像机连接用的端口号 
} STOR_CAM_DAT; 
 
typedef struct 
{ 
	STOR_CAM_DAT Dat; 
	unsigned short Row; 
} STOR_CAM; 
 
typedef struct 
{ 
	NAME Name; 
} STOR_GRP_DAT; 
 
typedef struct 
{ 
	STOR_GRP_DAT Dat; 
	unsigned short Row; 
} STOR_GRP; 
 
/* End of 录象有关 */ 
 
 
 
 
 
/* 操作 */ 
// OP0001: 用户登录鉴权   
typedef struct user_login_request 
{ 
	NAME UserName; 
	unsigned char Password[PASSWORD_LEN]; 
} USER_LOGIN_REQUEST; 
 
typedef struct user_login_response 
{ 
	unsigned char Result; 
	USER_RECORD UserRecord; 
} USER_LOGIN_RESPONSE; 
// Result: SUCCESS, E_NO_USER, E_PASSWORD, E_SYSUPDATE 
//其中,密码是已经进行加密处理的,处理方式前面对密码传输的处理 
 
// OP0002: 用户注销   
typedef struct user_logout_request 
{ 
    LOG Log; 
} USER_LOGOUT_REQUEST; 
	 
typedef struct user_logout_response 
{ 
	unsigned char Result; 
} USER_LOGOUT_RESPONSE; 
 
// OP0003: 更改用户资料   
typedef struct change_user_request 
{ 
	USER_RECORD	UserRecord; 
	LOG Log; 
} CHANGE_USER_REQUEST; 
	 
typedef struct change_user_response 
{ 
	unsigned char Result; 
} CHANGE_USER_RESPONSE; 
// Result: SUCCESS, E_PUB_FAIL 
//更改用户资料时,不允许修改用户名称,密码同样采用加密方式传输 
 
// OP0004: 删除用户资料   
typedef struct delete_user_request 
{ 
	NAME UserName; 
	LOG Log; 
} DELETE_USER_REQUEST; 
 
typedef struct delete_user_response 
{ 
	unsigned char Result; 
} DELETE_USER_RESPONSE; 
 
 
// OP0005: 查询用户资料   
typedef struct search_user_request 
{ 
    // 查找的起始顺序号,第一次查询为0,以后为已查询返回的用户个数   
	unsigned short Sequence; 
	LOG Log; 
} SEARCH_USER_REQUEST; 
 
typedef struct search_user_response 
{ 
	unsigned char Result; 
	unsigned char Number;		// 返回的用户资料个数   
	USER_RECORD	UserRecord[QUERY_MAX_NUMBER]; 
} SEARCH_USER_RESPONSE; 
// 查询时,如果返回Success,查询端应再次进行查询 
// 如果返回Nomore,查询端不需要再次进行查询 
 
// OP0006: 添加用户资料   
typedef struct add_user_request 
{ 
	USER_RECORD UserRecord; 
	LOG Log; 
} ADD_USER_REQUEST; 
 
typedef struct add_user_response 
{ 
	unsigned char Result; 
} ADD_USER_RESPONSE; 
 
// OP0007: 修改用户密码   
typedef struct change_password_request 
{ 
	unsigned char NewPass[PASSWORD_LEN]; 
	LOG Log; 
} CHANGE_PASSWORD_REQUEST; 
	 
typedef struct change_password_response 
{ 
	unsigned char Result; 
} CHANGE_PASSWORD_RESPONSE; 
// 本操作是用户修改自己的密码,密码传输采用加密方式 
 
// OP0011: 查询摄像机资料   
typedef struct search_camera_request 
{ 
    // 查找摄像机的类型,0为未注册,1为已注册,2为有录像资料的   
	unsigned char Operation; 
	// 查找的起始顺序号,参考OP0005查询用户资料   
	unsigned short Sequence; 
	LOG Log; 
} SEARCH_CAMERA_REQUEST; 
 
typedef struct search_camera_response 
{ 
	unsigned char Result; 
	unsigned char Number;		// 返回的摄像机资料个数   
	CAMERA_RECORD CameraRecord[QUERY_MAX_NUMBER_2]; 
} SEARCH_CAMERA_RESPONSE; 
// 查询时,如果返回Success,查询端应再次进行查询; 
// 如果返回Nomore,查询端不需要再次进行查询 
 
 
// OP0012: 修改摄像机资料   
typedef struct modify_camera_request 
{ 
	CAMERA_RECORD CameraRecord; 
	LOG Log; 
} MODIFY_CAMERA_REQUEST; 
 
typedef struct modify_camera_response 
{ 
	unsigned char Result; 
} MODIFY_CAMERA_RESPONSE; 
// 修改摄像机时不允许修改名称 
 
// OP0013: 删除摄像机   
typedef struct delete_camera_request 
{ 
	CAMERA_INFO Camera;     // 要删除的摄像机   
	LOG Log; 
} DELETE_CAMERA_REQUEST; 
 
typedef struct delete_camera_response 
{ 
	unsigned char Result; 
} DELETE_CAMERA_RESPONSE; 
 
// OP0014-0015的结构在后面OP0148处 
 
// OP0021: 查询定时录像设置   
typedef struct search_program_request 
{ 
	unsigned short Sequence;	// 查找的起始顺序号   
} SEARCH_PROGRAM_REQUEST; 
 
typedef struct search_program_response 
{ 
	unsigned char Result; 
	unsigned char Number;			// 返回的定时资料个数   
	PROGRAM_RECORD ProgramRecord[QUERY_MAX_NUMBER_2]; 
} SEARCH_PROGRAM_RESPONSE; 
//Result: SUCCESS, E_PUB_FAIL, E_PUB_NOMORE 
 
// OP0022: 修改定时录像设置   
typedef struct modify_program_request 
{ 
	PROGRAM_RECORD ProgramRecord; 
} MODIFY_PROGRAM_REQUEST; 
 
typedef struct modify_program_response 
{ 
	unsigned char Result; 
} MODIFY_PROGRAM_RESPONSE; 
//Result: SUCCESS, E_PUB_FAIL, E_PUB_COLLISION 
//当返回E_PUB_COLLISION,表示长期有效的定时正在录像,不允许修改 
 
 
// OP0023: 删除定时录像设置   
typedef struct del_program_request 
{ 
	unsigned short Row;		// 要删除的定时录像编号   
} DEL_PROGRAM_REQUEST; 
 
typedef struct del_program_response 
{ 
	unsigned char Result; 
} DEL_PROGRAM_RESPONSE; 
//Result: SUCCESS, E_PUB_FAIL   
 
// OP0024: 添加定时录像设置   
typedef struct add_program_request 
{ 
	PROGRAM_RECORD ProgramRecord; 
} ADD_PROGRAM_REQUEST; 
 
typedef struct add_program_response 
{ 
	unsigned char Result; 
	unsigned short Row; 
} ADD_PROGRAM_RESPONSE; 
//Result: SUCCESS, E_PUB_FAIL, 
 
// OP0031: 查询录像资料   
typedef struct record_info_request 
{ 
	unsigned char QueryFlag; // BIT0-摄像机,BIT1-时间,BIT2-类别,BIT4-操作用户名,置1有效  
	CAMERA_INFO Camera;	 
	GENERAL_TIME StartTime; 
	GENERAL_TIME EndTime; 
	unsigned char RecordType; //0-普通,1-定时,2-告警 
    unsigned short Sequence;    // 查找的起始顺序号  
	NAME UserName; //操作用户名 
} RECORD_INFO_REQUEST; 
 
typedef struct record_info_response 
{ 
    unsigned char Result; 
	unsigned char Number;		// 返回的录像资料个数   
	RECORD_INFO Record[QUERY_MAX_NUMBER_2]; 
} RECORD_INFO_RESPONSE; 
// Result: SUCCESS, E_PUB_FAIL, E_PUB_NOMORE   
 
// OP0032: 录像资料操作   
typedef struct operate_record_request{ 
	unsigned char Operation;//0-删除,1-备份,2-导出 
	NAME CameraName;		 
	GENERAL_TIME BeginTime;  
	GENERAL_TIME EndTime;	 
	unsigned char RecordTypeFlag;	// 0:普通+定时  1:告警 
	unsigned char AudioOrVideo;		// 标识:1-Audio,2-Video,3-Audio&Video 
	unsigned char AskSpaceFlag;		// 导出时有效,1:只查询空间  0(else):导出 
	unsigned char UseRow;			// 是否按行号查找 
	unsigned short Row;				// 录像资料记录的当前行号,RECORD_INFO中的Row 
	unsigned char DestinationFolder[256];	// 录像文件备份、导出的目录 
	NAME UserName; 
}OPERATE_RECORD_REQUEST; 
 
typedef struct operate_record_response 
{ 
	unsigned char Result; 
	NAME StorageName;			// 备份或导出的存储设备名称   
	unsigned short FileNumber;	// 已经完成的文件数   
	unsigned short TotalNumber;	// 总的文件数   
	unsigned long  CopyBytes;	// 已经完成拷贝、导出的字节数, MB 
	unsigned long NeedSpace;	// 需要的空间,MB 
	unsigned long LeaveSpace;	// 导出目录剩余空间,MB 
} OPERATE_RECORD_RESPONSE; 
// Result: SUCCESS, E_PUB_FAIL, E_REC_SHORTSPACE, E_REC_MORE 
// 说明:1、这里SUCCESS意思表示已经完成 
// 2、发起端的一条命令可能会有许多响应,由发起端决定如何处理,建议分多个请求命令完成一个操作 
// 3、在导出时此存储设备已经在做导出操作时,返回E_PUB_FAIL拒绝再次请求 
// 4、备份和导出只能在同一计算机进行(防止占用过多的网络带宽) 
 
 
// OP0033: 录像文件操作   
//typedef struct operate_file_request 
//{ 
//	unsigned char Operation;    // 0-删除,1-备份,2-导出   
//  GENERAL_TIME BeginTime;		// 开始时间   
//    GENERAL_TIME EndTime;		// 结束时间   
//    unsigned char SourceFolder[256];        // 录像源文件存放目录   
//    unsigned char DestinationFolder[256];   // 录像文件备份、导出的目录   
//} OPERATE_FILE_REQUEST; 
 
//typedef struct operate_file_response 
//{ 
//	unsigned char OperateFileResult; 
//	unsigned short FileNumber;      // 已经完成的文件数   
//	unsigned short TotalNumber;     // 总的文件数   
//} OPERATE_FILE_RESPONSE; 
// OperateFileResult: Success(0), Fail(1) 
// 参考录像资料操作(OP0032) 
 
#ifndef MAX_PATH 
#define MAX_PATH	260 
#endif 
 
#define DIR_SEPERATOR	';' 
 
// OP0036: 查询指定目录下的目录结构 
typedef struct 
{ 
	// 当查询各个逻辑磁盘时为全0 
	char Dir[MAX_PATH]; 
} QRY_DIR_REQUEST; 
 
typedef struct 
{ 
	char Dir[MAX_PATH]; 
	short int Len; 
	unsigned char More; 
	// 各目录相对于Dir下的名称, 用DIR_SEPERATOR分隔;当查询逻辑盘时, 
	// 盘名后跟着该盘的类型值,定义见GetDriveType(LPCTSTR) 
	char Data[DATA_BUF_LEN - PACKET_HEAD - MAX_PATH - 10]; 
} QRY_DIR_RESPONSE; 
 
// OP0037: 新建目录 
typedef struct 
{ 
	char Dir[MAX_PATH]; 
} ADD_DIR_REQUEST; 
 
typedef struct 
{ 
	int Result; 
} ADD_DIR_RESPONSE; 
 
// OP0039: 存储设备上的组操作 
typedef struct 
{ 
	char Action;	//1-增加 3-删除 
	STOR_GRP Dat; 
} MOD_STOR_GRP_REQUEST; 
 
typedef struct 
{ 
	int Result; 
	unsigned short Row; 
} MOD_STOR_GRP_RESPONSE; 
 
// OP0040: 查询存储设备上的分组 
typedef struct 
{ 
	unsigned short Seq; 
} QRY_STOR_GRP_REQUEST; 
 
typedef struct 
{ 
	unsigned char Result; 
	unsigned char Num; 
	STOR_GRP Dat[QUERY_MAX_NUMBER]; 
} QRY_STOR_GRP_RESPONSE; 
 
// OP0041: 开始/停止视频源   
typedef struct play_request 
{ 
	CAMERA_INFO Camera; 
	unsigned long		IP;			// 播放终端或存储设备的IP地址 
	unsigned short 		Port;		//播放窗口或存储设备的端口号 
	unsigned char		StartOrEnd;	//开始视频时按位有效: 
									//			bit0 = 开始/停止标志,0-开始,1-停止 
									//			bit1 = 发送音频标志,0-不发送 
									//			bit2 = 发送视频标志,0-发送,1-停止 
									//			bit4 = 接收告警消息标志-1有效,0=无效 
									//			bit5 = 仅收看告警画面标志-1有效,0=普通 
									//			bit6 = 发送方式标志,0-UDP,1-TCP 
									//			bit7 = 多播发送方式标志,0-无效,1-多播发送 
									//结束时bit0=1! 
	LOG Log; 
} PLAY_REQUEST; 
 
typedef struct play_response 
{ 
	unsigned char Result; 
	PICTURE Picture;            // 网络摄像机当前的工作参数   
	unsigned long AVMulticastIP;         	// 网络摄像机当前正在发送视频的多播IP地址   
	unsigned short AVMulticastPort;     	// 网络摄像机当前正在发送视频的多播UDP端口   
} PLAY_RESPONSE; 
// Result: Success(0), Fail(1),CameraFail(2), TooManyUser(3) 
// 返回当前的工作参数可以使用户界面进行调整 
   
 
// OP0042: 请求控制云台   
typedef struct platform_request 
{ 
	CAMERA_INFO Camera; 
	CONTROL_PLATFORM Platform; 
	LOG Log; 
} PLATFORM_REQUEST; 
 
typedef struct platform_response 
{ 
	unsigned char Result; 
} PLATFORM_RESPONSE; 
 
// OP0043: 请求控制镜头   
typedef struct lens_request 
{ 
	CAMERA_INFO Camera; 
	CONTROL_LENS Lens; 
    LOG	Log; 
} LENS_REQUEST; 
 
typedef struct lens_response { 
	unsigned char Result; 
} LENS_RESPONSE; 
 
// OP0044 request 
union message{ 
	//MessageType =1 
	struct alarm_message{ 
		unsigned short AlarmType;          // 告警类型;1-告警发生,0-告警自动解除, 2-告警手工解除,3-告警在人工设置的几分钟时间到解除 
		unsigned short AlarmSource;        // 告警源编号;0-图象运动侦测告警,1-并行I/O口,2-终端触发告警并附带消息。 
		unsigned short AlarmPin;           // 并行I/O口告警的引脚指示(AlarmPin=0-7: 表示八个管脚) 
		char	Message[128];	 
	}	AlarmMessage; 
	//MessageType =2 
	char TextMessage[32]; 
}; 
typedef struct message_notice{ 
	unsigned char  MessageType;        // 消息类型:1-告警,2-文本消息 
	unsigned char  Reserve[3];         // 保留 
	union message	MessageContent; 
} MESSAGE_NOTICE; 
 
// OP0045: 直接发送控制数据   
typedef struct control_data_request{ 
	unsigned char  IO_Operation;      // 0-输出,1-输入 
	unsigned char  IOPort;            // 操作端口编号:0-485,1-parallel port 
	unsigned char  PinValid;		  // IOPort=1时作为并口输出控制,按位有效,1-有效,0-无效 
	unsigned short DataLength;        // 数据长度 
	unsigned char  ControlData[MAX_CONTROL_DATA_LENGTH]; // 数据内容 
	unsigned char  RecvDataLength;	  // 485口接受数据包的长度 
	unsigned long  RecvDataOvertime;  // 485口接受数据包超时时间(毫秒) 
} CONTROL_DATA_REQUEST; 
typedef struct control_data_response{ 
    unsigned char  Result; 
	unsigned char  IOPort;            // 操作端口编号:0-485,1-parallel port 
	unsigned char  PinValid;		  // IOPort=1时作为并口输出控制,按位有效,1-有效,0-无效 
	unsigned short DataLength;        // 数据长度 
	unsigned char  ControlData[MAX_CONTROL_DATA_LENGTH]; // 数据内容 
} CONTROL_DATA_RESPONSE; 
 
// OP0046: 直接发送图象数据   
typedef struct picture_data_request 
{ 
    CAMERA_INFO Camera; 
    PICTURE Picture; 
    LOG Log; 
} PICTURE_DATA_REQUEST; 
 
typedef struct picture_data_response 
{ 
    unsigned char Result; 
    PICTURE Picture; 
} PICTURE_DATA_RESPONSE; 
 
// OP0047: 查询图象参数   
typedef struct picture_look_request 
{ 
    CAMERA_INFO Camera; 
    LOG Log; 
} PICTURE_LOOK_REQUEST; 
 
typedef struct picture_look_response 
{ 
    unsigned char Result; 
    PICTURE Picture; 
} PICTURE_LOOK_RESPONSE; 
 
// OP0049:开始/停止多播 
typedef struct multicast_request{ 
    	unsigned long AVMulticastIP; 
	unsigned short AVMulticastPort; 
	unsigned char StartOrEnd; 
    	LOG Log; 
} MULTICAST_REQUEST; 
 
typedef struct multicast_response{ 
    	unsigned char Result; 
    	unsigned long AVMulticastIP; 
	unsigned short AVMulticastPort; 
} MULTICAST_RESPONSE; 
 
// OP0050:音量控制 
typedef struct op0050_request{ 
    char InputVolume;	// 取值范围必须为:0-100,否则无效 
	char OutputVolume; 
    LOG Log; 
} OP0050_REQUEST; 
// 无回应 
 
// OP0051: 录像开始/停止   
typedef struct storage_request{ 
	unsigned char	StartOrEnd;	//开始视频时按位有效: 
								//			bit0 = 开始/停止标志,0-开始,1-停止 
								//			bit1 = 发送音频标志,0-不发送 
								//			bit2 = 发送视频标志,0-发送,1-停止 
								//			bit4 = 接收告警消息标志-1有效,0=无效 
								//			bit5 = 仅收看告警画面标志-1有效,0=普通 
								//			bit6 = 发送方式标志,0-UDP,1-TCP 
								//			bit7 = 多播发送方式标志,0-无效,1-多播发送 
	unsigned char	RecordType;	//0-普通录像,1-定时录像,2-告警录像 
	CAMERA_INFO		Camera; 
	unsigned long	CameraIP;	//摄像机的IP地址 
	unsigned short	CameraPort;	//摄像机的通讯端口号 
	unsigned long	Duration;	//录象时长,以分钟为单位 
	DESCRIPTION		Class;		//用户对录像的描述(可选项) 
	NAME			UserName;	//操作用户名 
	unsigned char	Password[PASSWORD_LEN];   //用户密码(用于摄象机用户验证) 
}STORAGE_REQUEST; 
 
typedef struct storage_response{ 
	unsigned char Result; 
}STORAGE_RESPONSE; 
//Result: SUCCESS(0),E_PUB_FAIL(1),E_REC_CAMERAFAIL(0x50),E_REC_MOREUSER(0x51), 
//		  E_REC_STORAGEFAIL(0x52),E_REC_DUPLEREQ(0x53),E_REC_DUPLENAME(0x54) 
//收到请求命令,向摄像机发开始/停止实时视频源(op0041) ,再应答终端。 
 
// OP0056: 查询存储设备上的摄像机记录 
typedef struct 
{ 
	unsigned short Seq; 
} QRY_STOR_CAM_REQUEST; 
 
typedef struct 
{ 
	unsigned char Result; 
	unsigned char Num; 
	STOR_CAM Dat[QUERY_MAX_NUMBER]; 
} QRY_STOR_CAM_RESPONSE; 
 
// OP0057: 修改存储设备上的摄像机记录 
typedef struct 
{ 
	unsigned char Action;	// 1-增加 2-修改 3-删除 
	STOR_CAM Dat; 
} MOD_STOR_CAM_REQUEST; 
	 
typedef struct 
{ 
	unsigned char Result; 
	unsigned short Row;		// 增加操作时填入 
} MOD_STOR_CAM_RESPONSE; 
// Result: SUCCESS, E_PUB_FAIL 
 
// OP0061: 回放录像开始/停止   
typedef struct play_record_request 
{ 
	unsigned char		StartOrEnd;	// 0-开始,1-停止 
	RECORD_INFO 		Record; 
	unsigned long		IP;			// 播放终端IP地址 
	unsigned short		Port;		// 播放窗口视频流接收端口号 
} PLAY_RECORD_REQUEST; 
 
#define DEVICE_FAIL     2 
typedef struct play_record_response 
{ 
	unsigned char Result; 
} PLAY_RECORD_RESPONSE; 
//Result: SUCCESS(0),E_PUB_FAIL(1),E_REC_STORAGEFAIL(0x52) 
 
// OP0062: 回放控制   
typedef struct control_record_request 
{ 
	RECORD_INFO 	Record; 
	unsigned long IP; 
	unsigned short Port;//播放端的IP和端口 
	unsigned char Action;//1-快进,2-慢进,3-PREVIOUS,4-NEXT,5-暂停,6-继续播放 
	unsigned char ActionStep;	//快进时,1-二倍速,2-四倍速 
								//慢进时,1-1/2,  2-1/4 
								//PREVIOUS\NEXT时,1-5分钟,2-10分钟 
} CONTROL_RECORD_REQUEST; 
 
typedef struct control_record_response 
{ 
	unsigned char Result; 
} CONTROL_RECORD_RESPONSE; 
//Result: SUCCESS(0),E_PUB_FAIL(1),E_REC_STORAGEFAIL(0x52) 
//Recode.Row、Ip和Port对应正在回放的一段录像 
 
 
 
// 操作OP0083使用的结构的定义,用于操作终端通过有双向485接口 
// 的摄象机在485主模式下,发送命令数据和接收485从设备的响应。  
#define  RS485_HOST_SEND_RECV_BUF_LEN    1024  
typedef struct rs485_host_send_recv_type 
{ 
   USHORT    SendDataLen ;         // 需要发送的数据的长度(字节数); 
                                   // 0 - 表示不发送数据。 
   USHORT    RecvDataLen ;         // 期望或实际接收的响应数据的长度(字节数); 
                                   // 0 - 表示仅发送数据,不接收数据。 
   USHORT    RecvTimeOut ;         // 等待485从设备响应的超时值;单位:ms(豪秒)。 
   char      Data[RS485_HOST_SEND_RECV_BUF_LEN]; 
} RS485_HOST_SEND_RECV_TYPE; 
// 说明:此结构类型用于操作终端通过有双向485接口的摄象机在485主模式下, 
//   发送命令数据和接收485从设备的响应。  
// SendDataLen :需要发送的数据的长度(字节数);0 - 表示不发送数据。 
// RecvDataLen :在请求数据包中是期望接收的响应数据的最大长度(字节数);0 - 表示仅发送数据,不接收数据。 
//               在应答数据包中是实际接收到的数据的长度(字节数)。 
// RecvTimeOut :等待485从设备响应的超时值;单位:ms(豪秒)。 
// Data        :发送或接收的数据;最大长度是1024字节。 
// 当请求的SendDataLen和RecvDataLen都是0时,网络摄象机将立即返回一个RecvDataLen等于0的响应。如果响应数据包 
// 中的RecvDataLen小于请求的RecvDataLen,说明是在RecvTimeOut所限定的时间内未接收到期望长度的数据超时返回。 
// 如果请求数据包中的RecvTimeOut等于0,则不计算超时时间,直到接收到期望长度的数据后才回送应答。 
 
 
// OP0113: 查询摄像机内I/O配置   
typedef struct iopin_request 
{ 
    CAMERA_INFO Camera; 
} IOPIN_REQUEST; 
 
typedef struct iopin_response 
{ 
    unsigned char Result; 
    IOPIN_CONFIG IoPin; 
} IOPIN_RESPONSE; 
 
// OP0114: 修改摄像机内I/O配置   
typedef struct iopin_modify_request 
{ 
    CAMERA_INFO Camera; 
    IOPIN_CONFIG IoPin; 
} IOPIN_MODIFY_REQUEST; 
 
typedef struct iopin_modify_response 
{ 
    unsigned char Result; 
} IOPIN_MODIFY_RESPONSE; 
/************************OP0071-OP0132暂时没有使用!!!(2004.11定义OP0113、OP0114) 
// OP0071: 发送告警信号   
typedef struct alarm_request 
{ 
    // 按位置'1'有效, BIT0-7对应摄像机的IO1-8,BIT15为存储容量告警   
	unsigned short AlarmType; 
} ALARM_REQUEST; 
 
typedef struct alarm_response 
{ 
	unsigned char Result; 
} ALARM_RESPONSE; 
 
// OP0072: 发送告警信息   
typedef struct alarm_info_request 
{ 
	unsigned long IP;   // 告警设备IP地址   
	NAME DeviceName;    // 告警设备名称   
	DESCRIPTION Class;  // 告警设备描述   
	DESCRIPTION AlarmInfo;      // 告警信息描述   
} ALARM_INFO_REQUEST; 
 
typedef struct alarm_info_response 
{ 
	unsigned char AlarmInfoResult; 
} ALARM_INFO_RESPONSE; 
// AlarmInfoResult: Success(0), Fail(1)   
 
// OP0081: 读入Input口   
typedef struct input_request 
{ 
	CAMERA_INFO Camera; 
    LOG	Log; 
} INPUT_REQUEST; 
 
typedef struct input_response 
{ 
    unsigned char InputResult; 
	unsigned short Value; 
} INPUT_RESPONSE; 
// InputResult: Success(0), Fail(1)   
 
// OP0082: 写入Output口   
typedef struct output_request 
{ 
	CAMERA_INFO Camera; 
	unsigned short Mask; 
	unsigned short Value; 
    LOG	Log; 
} OUTPUT_REQUEST; 
 
typedef struct output_response 
{ 
	unsigned char OutputResult; 
} OUTPUT_RESPONSE; 
// OutputResult: Success(0), Fail(1)   
 
// OP0091: 增加/修改组别   
typedef struct modify_group_request 
{ 
	GROUP_RECORD Group; 
	LOG Log; 
} MODIFY_GROUP_REQUEST; 
 
typedef struct modify_groupe_response 
{ 
	unsigned char ModifyGroupResult; 
} MODIFY_GROUP_RESPONSE; 
// ModifyGroupResult: Success(0),Fail(1) 
// 当组的名称已经存在时,修改相应的组;否则添加 
   
// OP0092: 查询组   
typedef struct query_group_request 
{ 
	LOG Log;	 
} QUERY_GROUP_REQUEST; 
 
typedef struct query_group_response 
{ 
    unsigned char QueryGroupResult; 
	unsigned char Number;  
    GROUP_RECORD Group[QUERY_MAX_NUMBER]; 
} QUERY_GROUP_RESPONSE; 
// QueryGroupResult: Success(0), Fail(1)   
 
// OP0093: 删除组   
typedef struct delete_group_request 
{ 
	NAME GroupName; 
	LOG	Log; 
} DELETE_GROUP_REQUEST; 
 
typedef struct delete_groupe_response 
{ 
	unsigned char DeleteGroupResult; 
} DELETE_GROUP_RESPONSE; 
// DeleteGroupResult: Success(0), Fail(1)   
 
// OP0121: 查询当前用户登录情况   
typedef struct operator_info_request 
{ 
    // 查询的组的名称,如果为空则查询所有有权的组   
    NAME GroupName; 
	LOG	Log; 
} OPERATOR_INFO_REQUEST; 
 
typedef struct operator_info_response 
{ 
	unsigned char Result; 
    unsigned char Number; 
	OPERATOR_INFO OperatorInfo[QUERY_MAX_NUMBER]; 
} OPERATOR_INFO_RESPONSE; 
 
// OP0122: 查询当前正在进行的监控   
typedef struct view_info_request 
{ 
    // 查询的组的名称,如果为空则查询所有有权的组   
    NAME GroupName; 
	LOG Log; 
} VIEW_INFO_REQUEST; 
 
typedef struct view_info_response 
{ 
	unsigned char Result; 
    unsigned char Number; 
	VIEW_INFO ViewInfo[QUERY_MAX_NUMBER]; 
} VIEW_INFO_RESPONSE; 
 
// OP0123: 查询当前正在进行的录像   
//typedef struct recording_info_request 
//{ 
    // 查询的组的名称,如果为空则查询所有有权的组   
    //NAME GroupName; 
	//LOG	Log; 
//} RECORDING_INFO_REQUEST; 
 
//typedef struct recording_info_response 
//{ 
//	unsigned char Result; 
    //unsigned char Number; 
	//RECORDING_INFO RecordingInfo[QUERY_MAX_NUMBER]; 
//} RECORDING_INFO_RESPONSE; 
// Result: Success(0), Fail(1)   
 
// OP0131: 读取系统日志   
typedef struct get_log_request 
{ 
	char Date[9];   // 格式为"YYYYMMDD"   
	unsigned short StartPos; 
	LOG	Log; 
} GET_LOG_REQUEST; 
 
typedef struct get_log_response 
{ 
    unsigned char Result; 
	unsigned short Length; 
	char Data[DATA_BUF_LEN - 10]; 
} GET_LOG_RESPONSE; 
// Result: Success(0),Fail(1), NoMore(2)   
 
// OP0132: 清除系统日志   
typedef struct clear_log_request 
{ 
	char Date[9];       // 格式为"YYYYMMDD"   
	LOG	Log; 
} CLEAR_LOG_REQUEST; 
 
typedef struct clear_log_response 
{ 
    unsigned char Result; 
} CLEAR_LOG_RESPONSE; 
// Result: Success(0), Fail(1)   
OP0071-OP0132暂时没有使用!!!******************************/ 
 
//???OP0141-146modi about Result & CONTROL_COMMAND 
// OP0141: 查询摄像机网络配置 
typedef struct camera_config_request 
{ 
	LOG		Log; 
} CAMERA_CONFIG_REQUEST; 
 
typedef struct camera_config_response 
{ 
	unsigned char Result; 
	NETWORK Network; 
	CAMERA Camera; 
    NETWORK_EXT				Network_ext; 
} CAMERA_CONFIG_RESPONSE; 
 
// OP0142: 修改摄像机网络配置 
typedef struct modify_camera_config_request 
{ 
	NETWORK Network; // Reg、Group不处理 
    NETWORK_EXT				Network_ext; 
	LOG		Log; 
} MODIFY_CAMERA_CONFIG_REQUEST; 
 
typedef struct modify_camera_config__response 
{ 
	char Result; 
} MODIFY_CAMERA_CONFIG_RESPONSE; 
 
// OP0143: 查询摄像机云台镜头配置 
typedef struct platform_config_request 
{ 
	LOG		Log; 
} PLATFORM_CONFIG_REQUEST; 
 
typedef struct platform_config_response 
{ 
	unsigned char Result; 
    CONTROL_COMMAND     ControlCommand[MAX_COMMAND]; 
} PLATFORM_CONFIG_RESPONSE; 
 
// OP0144: 修改摄像机云台镜头配置 
typedef struct modify_platform_config_request 
{ 
    CONTROL_COMMAND     ControlCommand[MAX_COMMAND]; 
	LOG		Log; 
} MODIFY_PLATFORM_CONFIG_REQUEST; 
 
typedef struct modify_platform_config_response 
{ 
	char Result; 
} MODIFY_PLATFORM_CONFIG_RESPONSE; 
 
// OP0145: 查询摄像机串口配置 
typedef struct port_config_request 
{ 
	LOG		Log; 
} PORT_CONFIG_REQUEST; 
 
typedef struct port_config_response 
{ 
	unsigned char Result; 
	PORT_CONFIG PortConfig; 
} PORT_CONFIG_RESPONSE; 
 
// OP0146: 修改摄像机串口配置 
typedef struct modify_port_config_request 
{ 
	PORT_CONFIG PortConfig; 
	LOG		Log; 
} MODIFY_PORT_CONFIG_REQUEST; 
 
typedef struct modify_port_config_response 
{ 
	char Result; 
} MODIFY_PORT_CONFIG_RESPONSE; 
 
// OP0147: 查询摄像机镜头配置 
typedef struct lens_config_request 
{ 
	LOG		Log; 
} LENS_CONFIG_REQUEST; 
 
typedef struct lens_config_response 
{ 
	unsigned char Result; 
	LENS    Lens; 
} LENS_CONFIG_RESPONSE; 
 
// OP0148: 修改摄像机镜头配置 
typedef struct modify_lens_request 
{ 
	LENS    Lens; 
	LOG		Log; 
} MODIFY_LENS_REQUEST; 
 
typedef struct modify_lens_response 
{ 
	char Result; 
} MODIFY_LENS_RESPONSE; 
 
// OP0014:查询运动检测MASK 
typedef struct mask_config_request 
{ 
	LOG Log; 
} MASK_CONFIG_REQUEST; 
 
typedef struct mask_config_response 
{ 
	unsigned char Result; 
	char Mask[MBX][MBY]; 
} MASK_CONFIG_RESPONSE; 
 
// OP0015:设置运动检测MASK 
typedef struct modify_mask_request 
{ 
	char Mask[MBX][MBY]; 
	LOG Log; 
} MODIFY_MASK_REQUEST; 
 
typedef struct modify_mask_response 
{ 
	char Result; 
} MODIFY_MASK_RESPONSE; 
 
 
// OP0150: PTZ控制命令格式 
typedef struct ptz_control 
{ 
	unsigned short Operate;		// 基本PTZ 动作,按位有效,参照下面的宏定义 
	unsigned char PanSpeed;		// 水平运动/镜头速度,速度 1-100,最大速度的百分比 
	unsigned char TiltSpeed;	// 垂直运动速度 
	unsigned short Duration;		// 运动时间-毫秒 
	// 允许同时做N个动作,只需要把相应位置1即可 
	// 不要做相反的操作 
}PTZ_PLATFORM; 
// PTZ控制命令格式中的 基本PTZ 动作 
#define PTZ_STOP	0x0000 
#define PAN_LEFT	0x0001 
#define PAN_RIGHT	0x0002 
#define TILT_UP		0x0004 
#define TILT_DOWN	0x0008 
#define ZOOM_WIDE	0x0010 
#define ZOOM_TELE	0x0020 
#define IRIS_OPEN	0x0040 
#define IRIS_CLOSE	0x0080 
#define FOCUS_NEAR	0x0100 
#define FOCUS_FAR	0x0200 
#define AUTO_SCAN	0x0400 
 
// OP0151:预置点操作命令格式 
typedef struct preset 
{ 
	unsigned char Operate;		// 操作:1 = SET, 2 = GOTO 
	unsigned char PresetNo;		// 预置点号 
}PRESET; 
 
// OP0152:巡视操作命令格式 
typedef struct patrol 
{ 
	unsigned char PatrolNo;		// 巡视号0-5 
	unsigned char PointNo;		// 巡视点数目2-16,0 = 执行巡视 
	unsigned char PresetNo[16]; // 预置点号,有效数目由PointNo决定 
	unsigned char Time[16];		// 在每个预置点停留的时间,单位:秒 
}PATROL; 
 
 
// OP0153:辅助开关命令格式 
typedef struct auxiliary 
{ 
	unsigned char Operate;		// 开关操作0=关,1=开 
	unsigned char Function;		// 功能,参照下面的宏定义 
}AUXILIARY; 
// 辅助开关命令格式中的 功能定义 
#define BACKLIGHT_COMPENSATION		1		// 背光补偿 
#define AUTO_FOCUS					2		// 自动聚焦 
#define AUTO_IRIS					3		// 自动光圈 
#define AUTO_WHITE_BALANCE			4		// 自动白平衡 
#define CAMERA_MENU					5		// 摄象机菜单 
#define WIPER						6		// 雨刮 
#define SPRINKLER					7		// 喷水 
#define INFRARED					8		// 红外 
 
// OP0161: 查询存储设备中需要告警录像的摄像机列表 
typedef struct query_alarm_camera_request 
{ 
	// 查找的起始顺序号,第一次查询为0,以后为已查询返回的摄像机个数   
	unsigned short Sequence; 
} QUERY_ALARM_CAMERA_REQUEST; 
 
typedef struct query_alarm_camera_response 
{ 
	unsigned char Result; 
	unsigned char Number;		// 返回的摄像机资料个数   
	PROGRAM_RECORD Record[QUERY_MAX_NUMBER_2]; 
} QUERY_ALARM_CAMERA_RESPONSE; 
// Result: SUCCESS(0), E_PUB_NOMORE 
// 查询时,如果返回Success,查询端应再次进行查询 
// 如果返回E_PUB_NOMORE,查询端不需要再次进行查询 
 
// OP0162: 增加存储设备中需要告警录像的摄像机信息 
typedef struct add_alarm_camera_request 
{ 
	PROGRAM_RECORD Camera; 
} ADD_ALARM_CAMERA_REQUEST; 
 
typedef struct add_alarm_camera_response 
{ 
	unsigned char Result; 
	unsigned short Row; 
} ADD_ALARM_CAMERA_RESPONSE; 
// Result: SUCCESS(0), E_PUB_FAIL 
 
// OP0163: 修改存储设备中需要告警录像的摄像机信息 
typedef struct modify_alarm_camera_request 
{ 
	PROGRAM_RECORD Camera; 
} MODIFY_ALARM_CAMERA_REQUEST; 
 
typedef struct modify_alarm_camera_response 
{ 
	unsigned char Result; 
} MODIFY_ALARM_CAMERA_RESPONSE; 
// Result: SUCCESS(0), E_PUB_FAIL 
 
// OP0164: 删除存储设备中需要告警录像的摄像机信息 
typedef struct delete_alarm_camera_request 
{ 
	PROGRAM_RECORD Camera; 
} DELETE_ALARM_CAMERA_REQUEST; 
 
typedef struct delete_alarm_camera_response 
{ 
	unsigned char Result; 
} DELETE_ALARM_CAMERA_RESPONSE; 
// Result: SUCCESS(0), E_PUB_FAIL 
 
//UP007通知摄象机修改程序区2可用标志,然后复位进行升级下载 
//该操作码要在程序2中添加。 
//在程序2中要修改程序区2的可用标志,然后复位; 
//在程序1中直接返回OK,不用做任何操作。 
struct up007_request{ 
	unsigned int command;	// 0x33=复位,其它=无效 
}; 
struct up007_response{ 
	unsigned int state;	// 0=OK,1=……(还不知道) 
}; 
 
// OP9999: 动态路由   
typedef struct route_notice 
{ 
	unsigned char Number; 
    unsigned long route_table[QUERY_MAX_NUMBER]; 
} ROUTE_NOTICE; 
 
// 错误代码 
// 2003-10-9 统一整理,使得全系统的出错代码统一 
// !!!请注明出错原因和哪些操作会返回该错误 
 
// 公用部分 0-0x1f 
#define SUCCESS				0x00	// 正常 
#define E_PUB_FAIL			0x01	// 不正常 
#define E_PUB_NOMORE		0x02	// 查询无后续 
#define E_PUB_COLLISION		0x03	// 冲突 
 
// 摄象机部分 0x10-0x3f 
#define E_NO_MULTICAST		0x10	// 网络摄像机现在没有用多播发送视频 
#define E_UPDATING          0x11    // 网络摄象机正在升级中! 
#define E_DATA_INVALID		0x12	// 非法数据项; 
 
#define E_NO_PERMIT			0x20	// 无操作权限	用户企图执行没有权限的操作,可能发生在任何操作 
// IO错:有保存数据的操作:管理用户、保存修改图象参数 
#define E_WRITEFLASH		0x21	// 写入FLASH错	 
#define E_NO_CONFIG1		0x22	// 数据区1不可用 
#define E_NO_CONFIG2		0x23	// 将数据区1复制到数据区2出错 
 
// 用户登陆 
#define E_NO_USER            0x31	// 无此用户 
#define E_PASSWORD           0x32	// 用户密码错 
#define E_SYSUPDATE			 0x33	// 系统处于升级状态(用户、密码正确!) 
// 用户管理 
#define E_USER_MISS			0x35	// 找不到用户  		修改、删除用户资料时 
#define E_NO_DELETE     	0x36	// 禁止删除超级用户		删除用户时 
#define E_MAXUSER			0x37	// 超出最大用户数目   	查询、添加用户时 
#define E_EOFUSER			0x38	// 已到用户记录末尾		查询用户时 
#define E_USER_EXIST		0x39	// 用户已经存在			添加用户资料时 
 
// 录像回放 
#define E_REC_CAMERAFAIL	0x50	// 申请摄象机视频失败 
#define E_REC_MOREUSER		0x51	// 用户太多 
#define E_REC_STORAGEFAIL	0x52	// 存储设备故障 
#define E_REC_DUPLEREQ		0x53	// 相同终端对同一摄象机重复申请录象 
#define E_REC_DUPLENAME		0x54	// 摄象机名称重复 
// 备份导出 
#define E_REC_MORE			0x58	// 导出未完成,继续等待 
#define E_REC_SHORTSPACE	0x59	// 磁盘空间不足 
 
 
#endif