#ifndef _HC_NET_SDK_H_
#define _HC_NET_SDK_H_
#ifndef _WINDOWS_
#if (defined(_WIN32) || defined(_WIN64))
#include <winsock2.h>
#include <windows.h>
#endif
#endif
#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;
typedef signed __int64 INT64;
#elif defined(__linux__) || defined(__APPLE__) //linux
#define BOOL int
typedef unsigned int DWORD;
typedef unsigned short WORD;
typedef unsigned short USHORT;
typedef short SHORT;
typedef int LONG;
typedef unsigned char BYTE;
typedef unsigned int UINT;
typedef void* LPVOID;
typedef void* HANDLE;
typedef unsigned int* LPDWORD;
typedef unsigned long long UINT64;
typedef signed long long INT64;
#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
#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 MIN_PASSWD_LEN 8 //最小密码长度
#define PASSWD_LEN 16 //密码长度
#define MAX_PASSWD_LEN_EX 64 //密码长度64位
#define GUID_LEN 16 //GUID长度
#define DEV_TYPE_NAME_LEN 24 //设备类型名称长度
#define SERIALNO_LEN 48 //序列号长度
#define MACADDR_LEN 6 //mac地址长度
#define MAC_ADDRESS_NUM 48 //Mac地址长度
#define MAX_SENCE_NUM 16 //场景数
#define RULE_REGION_MAX 128 //最大区域
#define MAX_ETHERNET 2 //设备可配以太网络
#define MAX_NETWORK_CARD 4 //设备可配最大网卡数目
#define MAX_NETWORK_CARD_EX 12 //设备可配最大网卡数目扩展
#define PATHNAME_LEN 128 //路径长度
#define MAX_PRESET_V13 16 //预置点
#define MAX_TEST_COMMAND_NUM 32 //产线测试保留字段长度
#define MAX_NUMBER_LEN 32 //号码最大长度
#define MAX_NAME_LEN 128 //设备名称最大长度
#define MAX_INDEX_LED 8 //LED索引最大值 2013-11-19
#define MAX_CUSTOM_DIR 64 //自定义目录最大长度
#define URL_LEN_V40 256 //最大URL长度
#define CLOUD_NAME_LEN 48 //云存储服务器用户名长度
#define CLOUD_PASSWD_LEN 48 //云存储服务器密码长度
#define MAX_SENSORNAME_LEN 64 //传感器名称长度
#define MAX_SENSORCHAN_LEN 32 //传感器通道长度
#define MAX_DESCRIPTION_LEN 32 //传感器描述长度
#define MAX_DEVNAME_LEN_EX 64 //设备名称长度扩展
#define NET_SDK_MAX_FILE_PATH 256 //文件路径长度
#define MAX_TMEVOICE_LEN 64 //TME语音播报内容长度
#define ISO_8601_LEN 32 //ISO_8601时间长度
#define MAX_NUM_INPUT_BOARD 512 //输入板最大个数
#define MAX_SHIPSDETE_REGION_NUM 8 // 船只检测区域列表最大数目
#define MAX_RES_NUM_ONE_VS_INPUT_CHAN 8 //一个虚拟屏输入通道支持的分辨率的最大数量
#define MAX_VS_INPUT_CHAN_NUM 16 //虚拟屏输入通道最大数量
#define NET_SDK_MAX_FDID_LEN 256//人脸库ID最大长度
#define NET_SDK_MAX_PICID_LEN 256 //人脸ID最大长度
#define NET_SDK_FDPIC_CUSTOM_INFO_LEN 96 //人脸库图片自定义信息长度
#define NET_DVR_MAX_FACE_ANALYSIS_NUM 32 //最大支持单张图片识别出的人脸区域个数
#define NET_DVR_MAX_FACE_SEARCH_NUM 5 //最大支持搜索人脸区域个数
#define NET_SDK_SECRETKEY_LEN 128 //配置文件密钥长度
#define NET_SDK_CUSTOM_LEN 512 //自定义信息最大长度
#define NET_SDK_CHECK_CODE_LEN 128//校验码长度
//小间距LED控制器
#define MAX_LEN_TEXT_CONTENT 128 //字符内容长度
#define MAX_NUM_INPUT_SOURCE_TEXT 32 //信号源可叠加的文本数量
#define MAX_NUM_OUTPUT_CHANNEL 512 //LED区域包含的输出口个数
//子窗口解码OSD
#define MAX_LEN_OSD_CONTENT 256 //OSD信息最大长度
#define MAX_NUM_OSD_ONE_SUBWND 8 //单个子窗口支持的最大OSD数量
#define MAX_NUM_SPLIT_WND 64 //单个窗口支持的最大分屏窗口数量(即子窗口数量)
#define MAX_NUM_OSD 8
//2013-11-19
#define MAX_DEVNAME_LEN 32 //设备名称最大长度
#define MAX_LED_INFO 256 //屏幕字体显示信息最大长度
#define MAX_TIME_LEN 32 //时间最大长度
#define MAX_CARD_LEN 24 //卡号最大长度
#define MAX_OPERATORNAME_LEN 32 //操作人员名称最大长度
#define THERMOMETRY_ALARMRULE_NUM 40 //热成像报警规则数
#define MAX_THERMOMETRY_REGION_NUM 40 //热度图检测区域最大支持数
#define MAX_THERMOMETRY_DIFFCOMPARISON_NUM 40 //热成像温差报警规则数
#define MAX_SHIPS_NUM 20 //船只检测最大船只数
#define KEY_WORD_NUM 3 //关键字个数
#define KEY_WORD_LEN 128 //关键字长度
//异步登录回调状态宏定义
#define ASYN_LOGIN_SUCC 1 //异步登录成功
#define ASYN_LOGIN_FAILED 0 //异步登录失败
#define NET_SDK_MAX_VERIFICATION_CODE_LEN 32 //萤石云验证码长度
#define MAX_TIMESEGMENT_V30 8 //9000设备最大时间段数
#define MAX_TIMESEGMENT 4 //8000设备最大时间段数
#define MAX_ICR_NUM 8 //抓拍机红外滤光片预置点数2013-07-09
#define MAX_VEHICLEFLOW_INFO 24 //车流量信息最大个数
#define MAX_SHELTERNUM 4 //8000设备最大遮挡区域数
#define MAX_DAYS 7 //每周天数
#define PHONENUMBER_LEN 32 //pppoe拨号号码最大长度
#define MAX_ACCESSORY_CARD 256 //配件板信息最大长度
#define MAX_DISKNUM_V30 33 //9000设备最大硬盘数/* 最多33个硬盘(包括16个内置SATA硬盘、1个eSATA硬盘和16个NFS盘) */
#define NET_SDK_DISK_LOCATION_LEN 16 //硬盘位置长度
#define NET_SDK_SUPPLIER_NAME_LEN 32 //供应商名称长度
#define NET_SDK_DISK_MODEL_LEN 64 //硬盘型号长度
#define NET_SDK_MAX_DISK_VOLUME 33 //最大硬盘卷个数
#define NET_SDK_DISK_VOLUME_LEN 36 //硬盘卷名称长度
#define MAX_DISKNUM 16 //8000设备最大硬盘数
#define MAX_DISKNUM_V10 8 //1.2版本之前版本
#define CARD_READER_DESCRIPTION 32 //读卡器描述
#define MAX_FACE_NUM 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 //800