#ifndef _ZK_NET_DEV_SDK_H_
#define _ZK_NET_DEV_SDK_H_

#include "hi_type.h"

#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif 

#ifdef HI_OS_LINUX
#define NETSDK_API
#define NETSDK_APICALL 
#else
#define NETSDK_API	__declspec(dllexport)
#define NETSDK_APICALL  __stdcall
#endif   

/* 输入和输出参数标志 */ 
#define HINET_IN
#define HINET_OUT

/* 字符串的长度 */
#define ZK_NET_DEV_STR_LEN 64

/* 设备 通道号，目前仅支持一个通道*/
#define ZK_NET_DEV_CHANNEL_1    1
//#define HI_NET_DEV_CHANNEL_2    2
//#define HI_NET_DEV_CHANNEL_3    3
//#define HI_NET_DEV_CHANNEL_4    4

/*  连接网络连接模式，目前仅支持TCP*/
#define ZK_NET_DEV_STREAM_MODE_TCP  0
//#define HI_NET_DEV_STREAM_MODE_UDP  1

/*流数据类型，目前不支持心跳数据 */
/*次码流不支持报警数据和心跳数据 */
#define ZK_NET_DEV_STREAM_VIDEO_ONLY   0x01
#define ZK_NET_DEV_STREAM_AUDIO_ONLY   0x02
#define ZK_NET_DEV_STREAM_VIDEO_AUDIO 0x03
/*目前不支持仅传输报警数据和心跳数据 */
//#define HI_NET_DEV_STREAM_DATA_ONLY    0x04
#define ZK_NET_DEV_STREAM_VIDEO_DATA   0x05
#define ZK_NET_DEV_STREAM_AUDIO_DATA   0x06
#define ZK_NET_DEV_STREAM_ALL                  0x07

#define ZK_NET_DEV_VIDEO_AVI 0
#define ZK_NET_DEV_VIDEO_ASF 1
#define ZK_NET_DEV_VIDEO_264 2


/* 开始流传输 */
typedef struct 
{
	HI_U32 u32Channel;      /*通道号 */
	HI_BOOL blFlag;            /*HI_TRUE:连接主码流，HI_FALSE:连接次码流*/
	HI_U32 u32Mode;         /*网络连接模式*/
    HI_U8 u8Type;         /*流数据类型，视频，音频，其他数据*/
} HI_S_STREAM_INFO;

/* 网络连接事件回调*/
#define ZK_NET_DEV_CONNECTING                       0 /* 正在连接 */
#define ZK_NET_DEV_CONNECTED                        1 /* 连接成功 */
#define ZK_NET_DEV_CONNECT_FAILED					2 /* 连接失败 */
#define ZK_NET_DEV_ABORTIBE_DISCONNECTED			3 /* 连接中断 */
#define ZK_NET_DEV_NORMAL_DISCONNECTED				4 /* 断开连接 */
#define ZK_NET_DEV_RECONNECTING	                    5
#define ZK_NET_DEV_RECORD_START	                    6
#define ZK_NET_DEV_RECORD_STOP	                    7

typedef HI_S32 (*ZK_ON_EVENT_CALLBACK)(HI_U32 u32Handle, /* 句柄 */
                                HI_U32 u32Event,      /* 事件 */
                                HI_VOID* pUserData  /* 用户数据*/
                                );

/*网络多媒体数据回调 */
#define ZK_NET_DEV_AV_DATA   0	/* 音视频数据 */
#define ZK_NET_DEV_SYS_DATA  1  /* 系统数据 */

#define ZK_NET_DEV_VIDEO_FRAME_FLAG 0x46565848	/* 视频帧标志 */
#define ZK_NET_DEV_AUDIO_FRAME_FLAG 0x46415848  /* 音频帧标志 */

#define ZK_NET_DEV_VIDEO_FRAME_I    1 /* 关键帧 */
#define ZK_NET_DEV_VIDEO_FRAME_P    2 /* 非关键帧 */
typedef struct 
{
    HI_U32 u32AVFrameFlag;               /* 帧标志*/
    HI_U32 u32AVFrameLen;          /* 帧的长度*/
    HI_U32 u32AVFramePTS;        /*时间戳 */
    HI_U32 u32VFrameType;       /* 视频的类型，I帧或P帧*/
} HI_S_AVFrame;

/* 系统头 */
#define ZK_NET_DEV_SYS_FLAG 0x53565848
typedef struct
{
   HI_U32 u32Width;		/* 视频宽 */
   HI_U32 u32Height;    /* 视频高 */
} HI_S_VideoHeader;

typedef struct
{
    HI_U32 u32Format;       /*音频格式*/
} HI_S_AudioHeader;

typedef struct 
{
   HI_U32 u32SysFlag;
   HI_S_VideoHeader struVHeader;
   HI_S_AudioHeader struAHeader;
} HI_S_SysHeader;

typedef HI_S32 (*ZK_ON_STREAM_CALLBACK)(HI_U32 u32Handle, /* 句柄 */
                                HI_U32 u32DataType,     /* 数据类型，系统数据或音视频数据 */
                                HI_U8*  pu8Buffer,      /* 数据包含帧头 */
                                HI_U32 u32Length,      /* 数据长度 */
                                HI_VOID* pUserData    /* 用户数据*/
                                );

#define ZK_NET_DEV_MOTION_DETECTION	0	/* 移动侦测标志 */
#define ZK_NET_DEV_INPUT_ALARM	 	1   /* 外置报警标志 */
#define ZK_NET_DEV_KEEP_ALIVE		2   /* 心跳数据标志，暂时未支持 */

/*移动检测 */
#define ZK_NET_DEV_MOTION_AREA_MAX	4
#define ZK_NET_DEV_MOTION_AREA_1    1
#define ZK_NET_DEV_MOTION_AREA_2    2
#define ZK_NET_DEV_MOTION_AREA_3    3
#define ZK_NET_DEV_MOTION_AREA_4    4
typedef struct 
{
	HI_U32 u32Area;
	HI_U32 u32X;
	HI_U32 u32Y;
	HI_U32 u32Width;
	HI_U32 u32Height;
} HI_S_ALARM_MD;

typedef HI_S32 (*ZK_ON_DATA_CALLBACK)(HI_U32 u32Handle, /* 句柄 */
                                HI_U32 u32DataType,       /* 数据类型*/
                                HI_U8*  pu8Buffer,      /* 数据 */
                                HI_U32 u32Length,      /* 数据长度 */
                                HI_VOID* pUserData    /* 用户数据*/
                                );

/* 设备参数区 */
/* Product and Vendor */
typedef struct HI_ProductVendor
{
	HI_CHAR sProduct[32];	//产品类型ID
	HI_CHAR	sVendor[32];		//厂商类型ID	
}HI_S_ProductVendor;

/* 图像设置扩展功能，在CMOS镜头有效*/
#define ZK_NET_DEV_SCENE_AUTO		0   /* 自动模式 */
#define ZK_NET_DEV_SCENE_INDOOR	1   /* 室内模式 */
#define ZK_NET_DEV_SCENE_OUTDOOR	2   /* 室外模式 */
typedef struct HI_Display_Ext
{
	HI_BOOL blFlip;         /* 上下翻转 */
	HI_BOOL blMirror;     /* 左右翻转*/
	HI_S32 s32Scene;
} HI_S_Display_Ext;

/* 图像参数设置 */
typedef struct HI_Display
{
	HI_U32 u32Brightness;   /*  亮度  */
	HI_U32 u32Saturation;   /* 饱和度  */
	HI_U32 u32Contrast;     /*  对比度  */
	HI_U32 u32Hue;          /*  色度  */
} HI_S_Display;

typedef struct HI_Color
{
	HI_U32 u32Brightness;   /*  亮度  */
	HI_U32 u32Saturation;   /* 饱和度  */
	HI_U32 u32Contrast;     /*  对比度  */
	HI_U32 u32Hue;          /*  色度  */
	HI_U32 u32Shutter;      /* 快门 */
	HI_U32 u32Dnt;			/* 灵敏度 */
	HI_U32 u32Lumivalue;	/* 低噪度 */
} HI_S_Color;

/* 红外灯控制 */
#define ZK_NET_DEV_INFRARED_AUTO	       0    /* 自动开启 */
#define ZK_NET_DEV_INFRARED_ON		1   /* 强制开启 */
#define ZK_NET_DEV_INFRARED_OFF		2   /* 强制关闭*/
typedef struct HI_Infrared
{
	HI_S32 s32Infrared;
} HI_S_Infrared;

/* 视频参数 */
typedef struct HI_Video
{
	HI_U32 u32Channel;      /* 通道 */
       HI_BOOL blFlag;          /* 主、次码流  */
	HI_U32 u32Bitrate;	/* 码流 */
	HI_U32 u32Frame;    /* 帧率 */
	HI_U32 u32Iframe;	/* 主帧间隔1-300 */
	HI_BOOL blCbr;	    /* 码流模式、HI_TRUE为固定码流，HI_FALSE为可变码流 */		
	HI_U32 u32ImgQuality;	/* 编码质量1-6 */
} HI_S_Video;

/* 图像清晰度 */
#define ZK_NET_DEV_RESOLUTION_VGA		0
#define ZK_NET_DEV_RESOLUTION_QVGA		1
#define ZK_NET_DEV_RESOLUTION_QQVGA 	       2
#define ZK_NET_DEV_RESOLUTION_D1		       3
#define ZK_NET_DEV_RESOLUTION_CIF		       4
#define ZK_NET_DEV_RESOLUTION_QCIF		5
#define ZK_NET_DEV_RESOLUTION_720P		6
//#define HI_NET_DEV_RESOLUTION_1080P		7
typedef struct HI_Resolution
{
	HI_U32 u32Channel;      /* 通道 */
       HI_BOOL blFlag;            /* 主、次码流 HI_TRUE:主码流，HI_FALSE:次码流 */ 
	HI_U32 u32Resolution;
} HI_S_Resolution;

/* 视频制式和频率  */
typedef enum HI_Frequency
{
	FREQ_50HZ_PAL = 50,
	FREQ_60HZ_NTSC = 60
} HI_E_Frequency;

/* 音频格式 */
#define ZK_NET_DEV_AUDIO_TYPE_G711		0 /* g711a */
#define ZK_NET_DEV_AUDIO_TYPE_G726		1
#define ZK_NET_DEV_AUDIO_TYPE_AMR		2 /* AMR NB 12.2kbps */
typedef struct HI_Audio
{
	HI_U32 u32Channel;              /* 通道 */
       HI_BOOL blFlag;                      /*主次码流标志，HI_TRUE为主码流，HI_FALSE为次码流*/
	HI_BOOL blEnable;               /* HI_TRUE:开启音频，HI_FALSE:关闭音频  */
	HI_U32 u32Type;
} HI_S_Audio;

typedef enum HI_AudioInput
{
	AUDIO_INPUT_MIC = 100,	/* 麦克输入 */
	AUDIO_INPUT_LINE = 10  /* 线性输入 */
} HI_E_AudioInput;

/* OSD */
typedef struct HI_OSD
{
	HI_BOOL blEnTime;	/* HI_TRUE显示日期时间OSD，HI_FALSE 不显示 */
	HI_BOOL blEnName;	/* HI_TRUE显示名称OSD，HI_FALSE 不显示 */
	HI_CHAR sName[64];	/* OSD名称 */
} HI_S_OSD;

#define HI_OSD_TIME 0
#define HI_OSD_NAME 1
typedef struct HI_OSD_EX
{
	HI_U32 u32Area;		/*区域*/
	HI_U32 u32X;
	HI_U32 u32Y;
} HI_S_OSD_EX;

typedef struct HI_MD_PARAM
{
       HI_U32 u32Channel;       /* 通道 */
	HI_U32 u32Area;            /* 报警区域 */
       HI_BOOL blEnable;        /* HI_TRUE启动报警，HI_FALSE关闭报警   */
       HI_U32 u32Sensitivity;  /* 报警灵敏度，取值范围1~99 */
	HI_U32 u32X;
	HI_U32 u32Y;
	HI_U32 u32Width;
	HI_U32 u32Height;    
} HI_S_MD_PARAM;

#define ZK_NET_DEV_COVER_AREA_MAX  4
#define ZK_NET_DEV_COVER_AREA_1    1
#define ZK_NET_DEV_COVER_AREA_2    2
#define ZK_NET_DEV_COVER_AREA_3    3
#define ZK_NET_DEV_COVER_AREA_4    4

typedef struct HI_COVER_PARAM
{
	HI_U32 u32Area;            /* 遮挡区域 */
	HI_BOOL bShow;
	HI_U32 u32X;
	HI_U32 u32Y;
	HI_U32 u32Width;
	HI_U32 u32Height;    
	HI_U32 u32Color;
} HI_S_COVER_PARAM;

/* 云台控制数据类型*/
#define ZK_NET_DEV_PTZ_PRO_PELCOD	0
#define ZK_NET_DEV_PTZ_PRO_PELCOP	1
#define ZK_NET_DEV_PTZ_B110		110
#define ZK_NET_DEV_PTZ_B300		300
#define ZK_NET_DEV_PTZ_B1200		1200
#define ZK_NET_DEV_PTZ_B2400		2400
#define ZK_NET_DEV_PTZ_B4800		4800
#define ZK_NET_DEV_PTZ_B9600		9600
#define ZK_NET_DEV_PTZ_B19200		19200
#define ZK_NET_DEV_PTZ_B38400		38400
#define ZK_NET_DEV_PTZ_B57600		57600
#define ZK_NET_DEV_PTZ_STOP_1		1
#define ZK_NET_DEV_PTZ_STOP_2		2
#define ZK_NET_DEV_PTZ_DATA_5		5
#define ZK_NET_DEV_PTZ_DATA_6		6
#define ZK_NET_DEV_PTZ_DATA_7		7
#define ZK_NET_DEV_PTZ_DATA_8		8
#define ZK_NET_DEV_PTZ_PARITY_NONE	0
#define ZK_NET_DEV_PTZ_PARITY_ODD	       1
#define ZK_NET_DEV_PTZ_PARITY_EVEN	2
typedef struct HI_PTZ
{
	HI_U32 u32Protocol;     /* 云台协议  */
	HI_U32 u32Address;     /* 地址码1-255 */ 
	HI_U32 u32Baud;          /* 波特率*/
	HI_U32 u32DataBit;      /* 地址位*/     
	HI_U32 u32StopBit;      /* 停止位*/
	HI_U32 u32Parity;       /* 校验位*/
} HI_S_PTZ;


#define SYSINFO_MAX_STRINGLENGTH (40)		// 系统信息长度
#define SYSINFO_MAX_VERLENGTH (64)

typedef struct tagHI_NETINFO
{   
	HI_CHAR aszServerIP[SYSINFO_MAX_STRINGLENGTH];       /*IP地址*/
	HI_CHAR aszNetMask[SYSINFO_MAX_STRINGLENGTH];        /*子网掩码*/
	HI_CHAR aszGateWay[SYSINFO_MAX_STRINGLENGTH];        /*网关*/
	HI_CHAR aszMacAddr[SYSINFO_MAX_STRINGLENGTH];        /*MAC 地址*/
	HI_CHAR aszFDNSIP[SYSINFO_MAX_STRINGLENGTH];         /*first DNSIP*/
	HI_CHAR aszSDNSIP[SYSINFO_MAX_STRINGLENGTH];         /*DNSIP*/
	HI_S32  s32DhcpFlag;                                 /*DHCP*/
	HI_S32  s32DnsDynFlag;                               /*DNS 动态分配标识*/
}HI_S_NETINFO, *PHI_S_NETINFO;

// 设备信息
typedef struct tagHI_DEVICE_INFO
{   
    HI_CHAR aszServerSerialNumber[SYSINFO_MAX_STRINGLENGTH + 1];	/*设备序列号*/
	//HI_CHAR aszServerHardVersion[SYSINFO_MAX_VERLENGTH + 1];		/*硬件版本*/
    HI_CHAR aszServerSoftVersion[SYSINFO_MAX_VERLENGTH + 1];		/*软件版本*/
    HI_CHAR aszServerName[SYSINFO_MAX_STRINGLENGTH + 1];			/*服务器名称*/
    HI_CHAR aszServerModel[SYSINFO_MAX_STRINGLENGTH + 1];			/*型号*/
    HI_CHAR aszStartDate[SYSINFO_MAX_STRINGLENGTH + 1];				/*系统启动日期时间*/
	//HI_CHAR aszTimes[SYSINFO_MAX_STRINGLENGTH + 1];				/*系统已启动时长,单位:分钟.uptime*/
	//HI_CHAR aszServerInterface[48 + 1];							/*接口类型和数量*/ //？？？fengjf
	HI_S32 s32ConnectState;											/*网络连接状态*/
}HI_DEVICE_INFO, *PHI_DEVICE_INFO;

typedef struct tagHI_SYSDEVICE{
	HI_S_NETINFO netInfo;			/*网络基本信息*/
	HI_DEVICE_INFO deviceInfo;		/*设备基本信息*/
}HI_S_SYSDEVICE;


typedef HI_S32 (*OnUpgradeCallBack)(HI_U32 u32Chn, HI_S32 s32Persent, HI_VOID *pUserData);


typedef struct hiUPGRADE_INFO_S
{
	HI_CHAR sHost[32];
	HI_U32  u32Port;
	HI_CHAR sUser[16];
	HI_CHAR sPass[16];
	HI_CHAR sPath[256];
	HI_U32  u32Chn;
	HI_VOID *pUserData;
	OnUpgradeCallBack callBack;
}UPGRADE_INFO_S;


typedef struct HI_HTTPPORT
{
	HI_U32 u32HttpPort;
} HI_S_HTTPPORT;

typedef struct hiSERVERTIME_INFO_S
{
	HI_CHAR sTime[32];
} HI_S_SERVERTIME;

typedef struct HI_NET_EXT
{
	HI_S_NETINFO  sNetInfo;
	HI_S_HTTPPORT sHttpPort;
}HI_S_NET_EXT;

typedef struct HI_ATTR_EXT
{
	HI_U32  u32Enable;
	HI_U32  u32Flag;
}HI_S_ATTR_EXT;

typedef struct HI_WIFI_PARAM
{
	HI_CHAR sSsID[32];
	HI_CHAR sKey[32];
	HI_U32 u32Enable;
	HI_U32 u32Auth;
	HI_U32 u32Enc;
	HI_U32 u32Mode;
}HI_S_WIFI_PARAM;

typedef struct HI_WFPT
{
	HI_U32 u32Chn;
	HI_S32 s32Rssi;
	HI_CHAR sSsID[32];
	HI_CHAR sMac[20];
	HI_CHAR sEnc[32];
	HI_CHAR sAuth[32];
	HI_CHAR sNet[32];
}HI_S_WFPT;

#define MAX_WFPT 64
typedef struct HI_WIFI_INFO
{
	HI_U32 u32Num;
	HI_S_WFPT sWfPt[MAX_WFPT];
}HI_S_WIFI_INFO;

typedef struct HI_OUR_DNS
{
	HI_CHAR sServer[32];
	HI_CHAR sUsername[32];
	HI_CHAR sPassword[32];
	HI_U32  u32Enable;
	HI_U32	u32Port;
	HI_CHAR sDomain[32];
}HI_S_OUR_DNS;

typedef struct hiDEVID
{
	HI_CHAR sDevID[32];
}HI_S_DEVID;

typedef struct hiIMAGE
{
	HI_U32 u32Brightness;   //亮度
	HI_U32 u32Saturation;   //饱和度
	HI_U32 u32Contrast;     //对比度
	HI_U32 u32Hue;          //色度
	HI_U32 u32Shutter;		//快门
	HI_U32 u32Dnt;			//色彩灵敏度
	HI_U32 u32Lumivalue;	//低照度
	HI_U32 u32Sensor;		//类型 1--9d131，2--2643 
	HI_BOOL bFlip;			//上下翻转
	HI_BOOL bMirror;		//左右翻转
	HI_BOOL bNight;			//夜视模式
	HI_BOOL bWdr;			//宽动态开关
	HI_BOOL bLumiswitch;	//低照度开关
} HI_S_IMAGE;

/* 参数定义 */
#define ZK_NET_DEV_GET_PRODUCT_VENDOR			0x1000
#define ZK_NET_DEV_CMD_DISPLAY					0x1001
#define ZK_NET_DEV_CMD_DISPLAY_EXT				0x1002
#define ZK_NET_DEV_CMD_INFRARED					0x1003
#define ZK_NET_DEV_CMD_VIDEO_PARAM				0x1004
#define ZK_NET_DEV_CMD_OSD_PARAM				0x1005
#define ZK_NET_DEV_CMD_AUDIO_PARAM				0x1006
#define ZK_NET_DEV_CMD_AUDIO_INPUT				0x1007
#define ZK_NET_DEV_CMD_RESOLUTION				0x1008
#define ZK_NET_DEV_CMD_FREQUENCY				0x1009
#define ZK_NET_DEV_CMD_PTZ_PARAM				0x1010
#define ZK_NET_DEV_CMD_MD_PARAM				    0x1011
#define ZK_NET_DEV_CMD_NET_INFO					0x1012
#define ZK_NET_DEV_CMD_HTTP_PORT				0x1013
#define ZK_NET_DEV_CMD_DEVICE_INFO				0x1014
#define ZK_NET_DEV_CMD_PRODUCTID				0x1015
#define ZK_NET_DEV_CMD_USERNUM					0x1016
#define ZK_NET_DEV_CMD_SERVER_TIME				0x1017
#define ZK_NET_DEV_CMD_REBOOT					0x1018
#define ZK_NET_DEV_CMD_RESET					0x1019
#define ZK_NET_DEV_CMD_NET_EXT					0x1022
#define ZK_NET_DEV_CMD_ATTR_EXT					0x1026
#define ZK_NET_DEV_CMD_WIFI_PARAM				0x1030
#define ZK_NET_DEV_CMD_WIFI_SEARCH				0x1031

#define ZK_NET_DEV_CMD_COLOR					0x1040
#define ZK_NET_DEV_CMD_DEVID					0x1042
#define ZK_NET_DEV_CMD_IMAGE_DEFAULT			0x1043
#define ZK_NET_DEV_CMD_OUR_DNS					0x1044

#define ZK_NET_DEV_CMD_BUT						0x1064

/* 云台控制定义 */
#define ZK_NET_DEV_CTRL_PTZ_STOP			0x3000
#define ZK_NET_DEV_CTRL_PTZ_UP			0x3001
#define ZK_NET_DEV_CTRL_PTZ_DOWN			0x3002
#define ZK_NET_DEV_CTRL_PTZ_LEFT			0x3003
#define ZK_NET_DEV_CTRL_PTZ_RIGHT			0x3004
#define ZK_NET_DEV_CTRL_PTZ_ZOOMIN		0x3005
#define ZK_NET_DEV_CTRL_PTZ_ZOOMOUT		0x3006

#define ZK_NET_DEV_CTRL_PTZ_FOCUSIN			0x3007
#define ZK_NET_DEV_CTRL_PTZ_FOCUSOUT		0x3008
#define ZK_NET_DEV_CTRL_PTZ_APERTUREIN		0x3009
#define ZK_NET_DEV_CTRL_PTZ_APERTUREOUT		0x3010

#define ZK_NET_DEV_CTRL_PTZ_GOTO_PRESET	0x3015
#define ZK_NET_DEV_CTRL_PTZ_SET_PRESET	0x3016
#define ZK_NET_DEV_CTRL_PTZ_CLE_PRESET	0x3017

#define ZK_NET_DEV_CTRL_PTZ_LIGHT_ON	0x3021
#define ZK_NET_DEV_CTRL_PTZ_LIGHT_OFF	0x3022
#define ZK_NET_DEV_CTRL_PTZ_WIPER_ON	0x3023
#define ZK_NET_DEV_CTRL_PTZ_WIPER_OFF	0x3024
#define ZK_NET_DEV_CTRL_PTZ_AUTO_ON		0x3025
#define ZK_NET_DEV_CTRL_PTZ_AUTO_OFF	0x3026
#define ZK_NET_DEV_CTRL_PTZ_HOME		0x3027
#define ZK_NET_DEV_CTRL_PTZ_CRUISE_V	0x3028
#define ZK_NET_DEV_CTRL_PTZ_CRUISE_H	0x3029

#define ZK_NET_DEV_CTRL_PTZ_TRAN	0x4000

#define ZK_NET_DEV_CTRL_PTZ_SPEED_MAX	0x3F
#define ZK_NET_DEV_CTRL_PTZ_SPEED_MIN	0x00
#define ZK_NET_DEV_CTRL_PTZ_PRESET_MAX	255
#define ZK_NET_DEV_CTRL_PTZ_PRESET_MIN	0
#define ZK_NET_DEV_CTRL_PTZ_FT_BUF_LEN	64

#define ZK_NET_DEV_SNAP_BUF_LEN_MIN		1024

/* 函数区 */
/* 初始化和去初始化只需调用一次  */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_Init();
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_DeInit();
/*  用户登录 */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_Login(HINET_OUT HI_U32* pu32Handle, const HI_CHAR* psUsername, const HI_CHAR* psPassword, const HI_CHAR* psHost, HI_U16 u16Port);
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_LoginExt(HINET_OUT HI_U32* pu32Handle, const HI_CHAR* psUsername, const HI_CHAR* psPassword, const HI_CHAR* psHost, HI_U16 u16Port, HI_U32 u32TimeOut=10000);
/* 用户登出*/
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_Logout(HI_U32 u32Handle);
/* 设置连接超时时间，默认超时是5秒，单位是毫秒*/
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_SetConnectTimeout(HI_U32 u32Handle, HI_U32 u32Timeout);
/* 设置自动重连间隔时间，默认为10秒，0为不重连，单位是毫秒 */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_SetReconnect(HI_U32 u32Handle, HI_U32 u32Interval);
/* 开始流传输 */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_StartStream(HI_U32 u32Handle, HI_S_STREAM_INFO*  pstruStreamInfo);
/* 停止流传输  */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_StopStream(HI_U32 u32Handle);
/* 设置流传输事件回调  */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_SetEventCallBack(HI_U32 u32Handle, ZK_ON_EVENT_CALLBACK cbEventCallBack, HI_VOID* pUserData);
/* 设置音视频数据回调  */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_SetStreamCallBack(HI_U32 u32Handle, ZK_ON_STREAM_CALLBACK cbStreamCallBack, HI_VOID* pUserData);
/* 设置报警数据回调  */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_SetDataCallBack(HI_U32 u32Handle, ZK_ON_DATA_CALLBACK cbDataCallBack, HI_VOID* pUserData);
/* 参数设置和获取 */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_SetConfig(HI_U32 u32Handle, HI_U32 u32Command, HI_VOID* pBuf, HI_U32 u32BufLen);
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_GetConfig(HI_U32 u32Handle, HI_U32 u32Command, HINET_OUT HI_VOID* pBuf, HI_U32 u32BufLen);
/* 云台控制*/
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_PTZ_Ctrl_Standard(HI_U32 u32Handle, HI_U32 u32Command, HI_U32 u32Speed);
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_PTZ_Ctrl_StandardEx(HI_U32 u32Handle, HI_U32 u32Command);
/* 云台预置位 */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_PTZ_Ctrl_Preset(HI_U32 u32Handle, HI_U32 u32Command, HI_U32 u32Preset);
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_PTZ_Ctrl_Extend(HI_U32 u32Handle, HI_U32 u32Command);
/* 云台透明传输  */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_PTZ_Fully_Trans(HI_U32 u32Handle, const HI_CHAR* psBuf, HI_U32 u32BufLen);
/* 语音对讲 */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_StartVoice(HI_U32 u32Handle, HI_U32 u32AudioType);
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_StopVoice(HI_U32 u32Handle);
/* 发送语音数据，G.726数据  */
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_SendVoiceData(HI_U32 u32Handle, HI_CHAR* psBuf, HI_U32 u32BufLen, HI_U64 u64Pts);
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_SnapJpeg(HI_U32 u32Handle, HI_U8* pu8Data, HI_S32 s32BufLen, HI_S32 *pSize);

NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_StartRecord(HI_U32 u32Handle, HI_CHAR* psPath, HI_U32 u32Type, HI_U32 u32Flag);
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_StopRecord(HI_U32 u32Handle);
NETSDK_API HI_S32 NETSDK_APICALL ZK_NET_DEV_GetRecordState(HI_U32 u32Handle);

#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif

#endif

