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