#ifndef _HC_NET_SDK_H_
#define _HC_NET_SDK_H_
#ifndef __PLAYRECT_defined
#define __PLAYRECT_defined
typedef struct __PLAYRECT
{
int x;
int y;
int uWidth;
int uHeight;
}PLAYRECT;
#endif
#if (defined(_WIN32)) //windows
#define NET_DVR_API extern "C"__declspec(dllimport)
typedef unsigned __int64 UINT64;
#elif defined(__linux__) || defined(__APPLE__) //linux
typedef unsigned int DWORD;
typedef unsigned short WORD;
typedef unsigned short USHORT;
typedef int LONG;
typedef unsigned char BYTE ;
#define BOOL int
typedef unsigned int UINT;
typedef void* LPVOID;
typedef void* HANDLE;
typedef unsigned int* LPDWORD;
typedef unsigned long long UINT64;
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#define NULL 0
#endif
#define __stdcall
#define CALLBACK
#define NET_DVR_API extern "C"
typedef unsigned int COLORKEY;
typedef unsigned int COLORREF;
#ifndef __HWND_defined
#define __HWND_defined
#if defined(__linux__)
typedef unsigned int HWND;
#else
typedef void* HWND;
#endif
#endif
#define NET_DVR_API extern "C"
typedef unsigned int COLORKEY;
typedef unsigned int COLORREF;
#ifndef __HDC_defined
#define __HDC_defined
#if defined(__linux__)
typedef struct __DC
{
void* surface; //SDL Surface
HWND hWnd; // HDC window handle
}DC;
typedef DC* HDC;
#else
typedef void* HDC;
#endif
#endif
typedef struct tagInitInfo
{
int uWidth;
int uHeight;
}INITINFO;
#endif
//宏定义
#define MAX_NAMELEN 16 //DVR本地登陆名
#define MAX_RIGHT 32 //设备支持的权限(1-12表示本地权限,13-32表示远程权限)
#define NAME_LEN 32 //用户名长度
#define PASSWD_LEN 16 //密码长度
#define GUID_LEN 16 //GUID长度
#define DEV_TYPE_NAME_LEN 24 //设备类型名称长度
#define SERIALNO_LEN 48 //序列号长度
#define MACADDR_LEN 6 //mac地址长度
#define MAX_ETHERNET 2 //设备可配以太网络
#define MAX_NETWORK_CARD 4 //设备可配最大网卡数目
#define PATHNAME_LEN 128 //路径长度
#define MAX_PRESET_V13 16 //预置点
//异步登录回调状态宏定义
#define ASYN_LOGIN_SUCC 1 //异步登录成功
#define ASYN_LOGIN_FAILED 0 //异步登录失败
#define MAX_TIMESEGMENT_V30 8 //9000设备最大时间段数
#define MAX_TIMESEGMENT 4 //8000设备最大时间段数
#define MAX_SHELTERNUM 4 //8000设备最大遮挡区域数
#define MAX_DAYS 7 //每周天数
#define PHONENUMBER_LEN 32 //pppoe拨号号码最大长度
#define MAX_DISKNUM_V30 33 //9000设备最大硬盘数/* 最多33个硬盘(包括16个内置SATA硬盘、1个eSATA硬盘和16个NFS盘) */
#define MAX_DISKNUM 16 //8000设备最大硬盘数
#define MAX_DISKNUM_V10 8 //1.2版本之前版本
#define MAX_WINDOW_V30 32 //9000设备本地显示最大播放窗口数
#define MAX_WINDOW_V40 64 //Netra 2.3.1扩展
#define MAX_WINDOW 16 //8000设备最大硬盘数
#define MAX_VGA_V30 4 //9000设备最大可接VGA数
#define MAX_VGA 1 //8000设备最大可接VGA数
#define MAX_USERNUM_V30 32 //9000设备最大用户数
#define MAX_USERNUM 16 //8000设备最大用户数
#define MAX_EXCEPTIONNUM_V30 32 //9000设备最大异常处理数
#define MAX_EXCEPTIONNUM 16 //8000设备最大异常处理数
#define MAX_LINK 6 //8000设备单通道最大视频流连接数
#define MAX_DECPOOLNUM 4 //单路解码器每个解码通道最大可循环解码数
#define MAX_DECNUM 4 //单路解码器的最大解码通道数(实际只有一个,其他三个保留)
#define MAX_TRANSPARENTNUM 2 //单路解码器可配置最大透明通道数
#define MAX_CYCLE_CHAN 16 //单路解码器最大轮巡通道数
#define MAX_CYCLE_CHAN_V30 64 //最大轮巡通道数(扩展)
#define MAX_DIRNAME_LENGTH 80 //最大目录长度
#define MAX_WINDOWS 16 //最大窗口数
#define MAX_STRINGNUM_V30 8 //9000设备最大OSD字符行数数
#define MAX_STRINGNUM 4 //8000设备最大OSD字符行数数
#define MAX_STRINGNUM_EX 8 //8000定制扩展
#define MAX_AUXOUT_V30 16 //9000设备最大辅助输出数
#define MAX_AUXOUT 4 //8000设备最大辅助输出数
#define MAX_HD_GROUP 16 //9000设备最大硬盘组数
#define MAX_NFS_DISK 8 //8000设备最大NFS硬盘数
#define IW_ESSID_MAX_SIZE 32 //WIFI的SSID号长度
#define IW_ENCODING_TOKEN_MAX 32 //WIFI密锁最大字节数
#define MAX_SERIAL_NUM 64 //最多支持的透明通道路数
#define MAX_DDNS_NUMS 10 //9000设备最大可配ddns数
#define MAX_DOMAIN_NAME 64 /* 最大域名长度 */
#define MAX_EMAIL_ADDR_LEN 48 //最大email地址长度
#define MAX_EMAIL_PWD_LEN 32 //最大email密码长度
#define MAXPROGRESS 100 //回放时的最大百分率
#define MAX_SERIALNUM 2 //8000设备支持的串口数 1-232, 2-485
#define CARDNUM_LEN 20 //卡号长度
#define MAX_VIDEOOUT_V30 4 //9000设备的视频输出数
#define MAX_VIDEOOUT 2 //8000设备的视频输出数
#define MAX_PRESET_V30 256 /* 9000设备支持的云台预置点数 */
#define MAX_TRACK_V30 256 /* 9000设备支持的云台轨迹数 */
#define MAX_CRUISE_V30 256 /* 9000设备支持的云台巡航数 */
#define MAX_PRESET 128 /* 8000设备支持的云台预置点数 */
#define MAX_TRACK 128 /* 8000设备支持的云台轨迹数 */
#define MAX_CRUISE 128 /* 8000设备支持的云台巡航数 */
#define CRUISE_MAX_PRESET_NUMS 32 /* 一条巡航最多的巡航点 */
#define MAX_SERIAL_PORT 8 //9000设备支持232串口数
#define MAX_PREVIEW_MODE 8 /* 设备支持最大预览模式数目 1画面,4画面,9画面,16画面.... */
#define MAX_MATRIXOUT 16 /* 最大模拟矩阵输出个数 */
#define LOG_INFO_LEN 11840 /* 日志附加信息 */
#define DESC_LEN 16 /* 云台描述字符串长度 */
#define PTZ_PROTOCOL_NUM 200 /* 9000最大支持的云台协议数 */
#define MAX_AUDIO 1 //8000语音对讲通道数
#define MAX_AUDIO_V30 2 //9000语音对讲通道数
#define MAX_CHANNUM 16 //8000设备最大通道数
#define MAX_ALARMIN 16 //8000设备最大报警输入数
#define MAX_ALARMOUT 4 //8000设备最大报警输出数
//9000 IPC接入
#define MAX_ANALOG_CHANNUM 32 //最大32个模拟通道
#define MAX_ANALOG_ALARMOUT 32 //最大32路模拟报警输出
#define MAX_ANALOG_ALARMIN 32 //最大32路模拟报警输入
#define MAX_IP_DEVICE 32 //允许接入的最大IP设备数
#define MAX_IP_DEVICE_V40 64 // 允许接入的最大IP设备数 最多可添加64个 IVMS 2000等新设备
#define MAX_IP_CHANNEL 32 //允许加入的最多IP通道数
#define MAX_IP_ALARMIN 128 //允许加入的最多报警输入数
#define MAX_IP_ALARMOUT 64 //允许加入的最多报警输出数
#define MAX_RECORD_FILE_NUM 20 // 每次删除或者刻录的最大文件数
//SDK_V31 ATM
#define MAX_ACTION_TYPE 12 //自定义协议叠加交易行为最大行为个数
#define MAX_ATM_PROTOCOL_NUM 256 //每种输入方式对应的ATM最大协议数
#define ATM_CUSTOM_PROTO 1025 //自定义协议 值为1025
#define ATM_PROTOCOL_SORT 4 //ATM协议段数
#define ATM_DESC_LEN 32 //ATM描述字符串长度
// SDK_V31 ATM
#define MAX_EVENTID_LEN 64 //事件ID长度
#define MAX_IPV6_LEN 64 //IPv6地址最大长度
/* 最大支持的通道数 最大模拟加上最大IP支持 */
#define MAX_CHANNUM_V30 ( MAX_ANALOG_CHANNUM + MAX_IP_CHANNEL )//64
#define MAX_ALARMOUT_V30 ( MAX_ANALOG_ALARMOUT + MAX_IP_ALARMOUT )//96
#define MAX_ALARMIN_V30 ( MAX_ANALOG_ALARMIN + MAX_IP_ALARMIN )//160
#define MAX_ROIDETECT_NUM 8 //支持的ROI区域数
#define MAX_LANERECT_NUM 5 //最大车牌识别区域数
#define MAX_FORTIFY_NUM 10 //最大布防个数
#defi