#ifndef NETMODULE_H
#define NETMODULE_H
#ifdef WIN32
#ifdef NETMODULE_EXPORTS
#define H264_DVR_API extern "C" __declspec(dllexport)
#else
#define H264_DVR_API extern "C" __declspec(dllimport) //VC 用
#endif
#ifndef CALL_METHOD
#define CALL_METHOD __stdcall //__cdecl
#endif
#else //linux
#define H264_DVR_API extern "C"
#define CALL_METHOD
#define CALLBACK
#define WORD unsigned short
#define DWORD unsigned long
#define LPDWORD DWORD*
#define BOOL int
#define TRUE 1
#define FALSE 0
#define BYTE unsigned char
#define LONG long
#define UINT unsigned int
#define HDC void*
#define HWND void*
#define LPVOID void*
//#define NULL 0
#define LPCSTR char*
#define LPCTSTR const char*
#endif
enum SDK_RET_CODE
{
H264_DVR_NOERROR = 0, //没有错误
H264_DVR_SUCCESS = 1, //返回成功
H264_DVR_SDK_NOTVALID = -10000, //非法请求
H264_DVR_NO_INIT = -10001, //SDK未经初始化
H264_DVR_ILLEGAL_PARAM = -10002, //用户参数不合法
H264_DVR_INVALID_HANDLE = -10003, //句柄无效
H264_DVR_SDK_UNINIT_ERROR = -10004, //SDK清理出错
H264_DVR_SDK_TIMEOUT = -10005, //等待超时
H264_DVR_SDK_MEMORY_ERROR = -10006, //内存错误,创建内存失败
H264_DVR_SDK_NET_ERROR = -10007, //网络错误
H264_DVR_SDK_OPEN_FILE_ERROR = -10008, //打开文件失败
H264_DVR_SDK_UNKNOWNERROR = -10009, //未知错误
H264_DVR_DEV_VER_NOMATCH = -11000, //收到数据不正确,可能版本不匹配
H264_DVR_SDK_NOTSUPPORT = -11001, //版本不支持
H264_DVR_OPEN_CHANNEL_ERROR = -11200, //打开通道失败
H264_DVR_CLOSE_CHANNEL_ERROR = -11201, //关闭通道失败
H264_DVR_SUB_CONNECT_ERROR = -11202, //建立媒体子连接失败
H264_DVR_SUB_CONNECT_SEND_ERROR = -11203, //媒体子连接通讯失败
H264_DVR_NATCONNET_REACHED_MAX = -11204, //Nat视频链接达到最大,不允许新的Nat视频链接
/// 用户管理部分错误码
H264_DVR_NOPOWER = -11300, //无权限
H264_DVR_PASSWORD_NOT_VALID = -11301, // 账号密码不对
H264_DVR_LOGIN_USER_NOEXIST = -11302, //用户不存在
H264_DVR_USER_LOCKED = -11303, // 该用户被锁定
H264_DVR_USER_IN_BLACKLIST = -11304, // 该用户不允许访问(在黑名单中)
H264_DVR_USER_HAS_USED = -11305, // 该用户以登陆
H264_DVR_USER_NOT_LOGIN = -11306, // 该用户没有登陆
H264_DVR_CONNECT_DEVICE_ERROR = -11307, //可能设备不存在
H264_DVR_ACCOUNT_INPUT_NOT_VALID = -11308, //用户管理输入不合法
H264_DVR_ACCOUNT_OVERLAP = -11309, //索引重复
H264_DVR_ACCOUNT_OBJECT_NONE = -11310, //不存在对象, 用于查询时
H264_DVR_ACCOUNT_OBJECT_NOT_VALID= -11311, //不存在对象
H264_DVR_ACCOUNT_OBJECT_IN_USE = -11312, //对象正在使用
H264_DVR_ACCOUNT_SUBSET_OVERLAP = -11313, //子集超范围 (如组的权限超过权限表,用户权限超出组的权限范围等等)
H264_DVR_ACCOUNT_PWD_NOT_VALID = -11314, //密码不正确
H264_DVR_ACCOUNT_PWD_NOT_MATCH = -11315, //密码不匹配
H264_DVR_ACCOUNT_RESERVED = -11316, //保留帐号
/// 配置管理相关错误码
H264_DVR_OPT_RESTART = -11400, // 保存配置后需要重启应用程序
H264_DVR_OPT_REBOOT = -11401, // 需要重启系统
H264_DVR_OPT_FILE_ERROR = -11402, // 写文件出错
H264_DVR_OPT_CAPS_ERROR = -11403, // 配置特性不支持
H264_DVR_OPT_VALIDATE_ERROR = -11404, // 配置校验失败
H264_DVR_OPT_CONFIG_NOT_EXIST = -11405, // 请求或者设置的配置不存在
///
H264_DVR_CTRL_PAUSE_ERROR = -11500, //暂停失败
H264_DVR_SDK_NOTFOUND = -11501, //查找失败,没有找到对应文件
H264_DVR_CFG_NOT_ENABLE = -11502, //配置未启用
H264_DVR_DECORD_FAIL = -11503, //配置未启用
//DNS协议解析返回错误码
H264_DVR_SOCKET_ERROR = -11600, //创建套节字失败
H264_DVR_SOCKET_CONNECT = -11601, //连接套节字失败
H264_DVR_SOCKET_DOMAIN = -11602, //域名解析失败
H264_DVR_SOCKET_SEND = -11603, //发送数据失败
H264_DVR_ARSP_NO_DEVICE = -11604, //没有获取到设备信息,设备应该不在线
H264_DVR_ARSP_BUSING = -11605, //ARSP服务繁忙
H264_DVR_ARSP_BUSING_SELECT = -11606, //ARSP服务繁忙,select失败
H264_DVR_ARSP_BUSING_RECVICE = -11607, //ARSP服务繁忙,recvice失败
H264_DVR_CONNECTSERVER_ERROR = -11608, //连接服务器失败
};
//云台操作类型
enum PTZ_ControlType
{
TILT_UP = 0, //云台左
TILT_DOWN, //右
PAN_LEFT, //上
PAN_RIGHT, //下
PAN_LEFTTOP, //左上
PAN_LEFTDOWN, //左下
PAN_RIGTHTOP, //右上
PAN_RIGTHDOWN, //右下
ZOOM_OUT, //变倍小
ZOOM_IN, //变倍大
FOCUS_FAR, //焦点后调
FOCUS_NEAR, //焦点前调
IRIS_OPEN, //光圈扩大
IRIS_CLOSE, //光圈缩小
EXTPTZ_OPERATION_ALARM, ///< 报警功能
EXTPTZ_LAMP_ON, ///< 灯光开
EXTPTZ_LAMP_OFF, //灯光关
EXTPTZ_POINT_SET_CONTROL, //设置预置点
EXTPTZ_POINT_DEL_CONTROL, //清除预置点
EXTPTZ_POINT_MOVE_CONTROL, //转预置点
EXTPTZ_STARTPANCRUISE, //开始水平旋转
EXTPTZ_STOPPANCRUISE, //停止水平旋转
EXTPTZ_SETLEFTBORDER, //设置左边界
EXTPTZ_SETRIGHTBORDER, //设置右边界
EXTPTZ_STARTLINESCAN, //自动扫描开始
EXTPTZ_CLOSELINESCAN, //自动扫描开停止
EXTPTZ_ADDTOLOOP, //加入预置点到巡航 p1巡航线路 p2预置点值
EXTPTZ_DELFROMLOOP, //删除巡航中预置点 p1巡航线路 p2预置点值
EXTPTZ_POINT_LOOP_CONTROL, //开始巡航
EXTPTZ_POINT_STOP_LOOP_CONTROL, //停止巡航
EXTPTZ_CLOSELOOP, //清除巡航 p1巡航线路
EXTPTZ_FASTGOTO, //快速定位
EXTPTZ_AUXIOPEN, //辅助开关,关闭在子命令中//param1 参见SDK_PtzAuxStatus,param2传入具体数值
EXTPTZ_OPERATION_MENU, //球机菜单操作,其中包括开,关,确定等等
EXTPTZ_REVERSECOMM, //镜头翻转
EXTPTZ_OPERATION_RESET, ///< 云台复位
EXTPTZ_TOTAL,
};
/// 云台辅助功能
enum SDK_PtzAuxStatus
{
EXTPTZ_AUX_ON, ///< 开
EXTPTZ_AUX_OFF, ///< 关
EXTPTZ_AUX_NR,
};
#define PAN_AUTO 29 /* 云台以SS的速度左右自动扫描 */
#define EXTPTZ_FASTGOTO 30 //三维定位
#define NET_MAX_CHANNUM 32 //最大通道个数
#define NET_DECORDR_CH 16 //最大解码通道个数
#define NET_MAX_USER_NUM 60 //最多用户数
#define NET_MAX_RIGTH_NUM 128 //最多权限数
#define NET_MAX_GROUP_NUM 50 //最多组数
#define NET_MAX_USER_LENGTH 32 //用户名密码最大长度
#define NET_MAX_COMBINE_NUM 2 //最大组合编码通道数
#define NET_MAX_DECORDR_CH 32 //最大解码通道个数
#define NET_MAX_DDNS_TYPE 5 //支持的DDNS种类
#define NET_MAX_ARSP_TYPE 5
#define NET_MAX_ALARMSERVER_TYPE 5 //支持报警中心种类
#define NET_MAX_SYSFUNC 20 //最多系统功能个数
#define NET_MAX_PTZ_PROTOCOL_LENGTH 32 //云台协议名称最大长度
#define NET_N_WEEKS 7 //星期数
#define NET_N_TSECT 6 //时间段数
#define NET_MD_REGION_ROW 32 //动态检测区域行数
#define NET_COVERNUM 8 //覆盖区域数
#define NET_MAX_FILTERIP_NUM 64 //IP地址最大过滤数
#define NET_NAME_PASSWORD_LEN 64 //用户名密码最大长度
#define NET_MAX_PATH_LENGTH 260 //路径长度
#define NET_N_MIN_TSECT 2
#define NET_MAX_RETURNED_LOGLIST 128 //最多日志条数
#define NET_MAX_MAC_LEN 32 //MAC地址字符最大长度
#define NET_IW_ENCODING_TOKEN_MAX 128
#define NET_MAX_AP_NUMBER 32 //SID最大数量,暂定10
#define NET_MAX_INFO_LEN 128
#define NET_MAX_USERNAME_LENGTH 128
#define NET_MAX_SERIALNO_LENGTH 128 //最大解码通道个数
//DDNS参数
#define DDNS_MAX_DDNS_NAMELEN 64 //主机名长度
#define DDNS_MAX_DDNS_PWDLEN 32 //密码长度
#define DDNS_MAX_DDNS_IPSIZE 64 //IP地址长度
#define DDNS_MAX_DDNS_IDSIZE 32 //设备标识长度
#define DDNS_MAX_SERIALINFO_SIZE 16 //序列号以及用户名长度
//摄象机参数
#define CAMERAPARA_MAXNUM 16 //曝光能力中目前最大长度
//短信最大数量
#define MAX_RECIVE_MSG_PHONE_COUNT 3 ///<最大发生短信数量
//VGA分辨率
#define VGA_MAXNUM 32 //分辨率 种类
#define VGA_NAME_LENGTH 10 //分辨率 长度
//#define MAX_HVR_CHNCAP 1