#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
#define DEF_PARAM(x) = x
#define DEF_0_PARAM = 0
#else //linux
#define Bool int
#define TYPE_USER_DATA unsigned long
#define TYPE_USER_DATA2 long
//#define LOGD printf
#ifdef OS_IOS
#define H264_DVR_API
#define DEF_PARAM(x)
#define DEF_0_PARAM
#else
#define H264_DVR_API extern "C"
#define DEF_PARAM(x) = x
#define DEF_0_PARAM = 0
#endif
#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 0 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_NOTSUPPORT = -11205, //版本不支持
H264_DVR_NOTVALID = -11206, //请求非法,主连接可能已断开
H264_DVR_TCPCONNET_REACHED_MAX = -11207, //Tcp视频链接达到最大,不允许新的Tcp视频链接
H264_DVR_OPENEDPREVIEW = -11208, //该通道已经打开预览(通道的打开关闭需要一一对应,打开几次需要关闭几次;不一致会打开提示该错误;预防客户端开发逻辑上的不合理设计增加该错误值)
/// 用户管理部分错误码
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, //连接服务器失败
H264_DVR_CONNECT_AGNET = -11609, //代理
H264_DVR_CONNECT_NAT = -11610, //穿透
H264_DVR_CONNECT_FAILED = -11611, //连接失败
H264_DVR_CONNECT_FULL = -11612, //服务器连接数已满
H264_DVR_CLOUD_LOGIN_ERR = -11613, //云登陆具体的错误码,说明:当登陆接口的error=-11613时,通过H264_DVR_DEVICEINFO成员sCloudErrCode获取错误码,底层增加错误码时上层不用增加代码
H264_DVR_NO_CONNECT_FRONT = -11614, //前端设备未连接或者连接的前端设备分辨率未知
H264_DVR_ARSP_USER_NOEXIST = -11619, //用户不存在
H264_DVR_ARSP_PASSWORD_ERROR = -11620, //账号密码不对
H264_DVR_ARSP_QUERY_ERROR = -11621, //查询失败
//版权相关
H264_DVR_PIRATESOFTWARE = -11700, //设备盗版
H264_DVR_AUTH_TIMEOUT = -11800, //鉴权超时
H264_DVR_AUTH_FILE_FAILED = -11801, //鉴权文件失败
H264_DVR_GAIN_LIST_TIMEOUT = -11802, //获取服务器列表超时
H264_DVR_AUTH_CODE_ERR = -11803, //鉴权码错误
//升级错误码
H264_DVR_NOENOUGH_MEMORY = -11804, //内存不足
H264_DVR_INVALID_FORMAT = -11805, //升级文件格式不对
H264_DVR_UPDATE_PART_FAIL = -11806, //某个分区升级失败
H264_DVR_INVALID_HARDWARE = -11807, //硬件型号不匹配
H264_DVR_INVALID_VENDOR = -11808, //客户信息不匹配
H264_DVR_INVALID_COMPALIBLE = -11809, //升级程序的兼容版本号比设备现有的小,不允许设备升级回老程序
H264_DVR_INVALID_VERSION = -11810, //非法的版本
H264_DVR_INVALID_WIFI_DRIVE = -11811, //升级程序里wifi驱动和设备当前在使用的wifi网卡不匹配
};
//云台操作类型
enum PTZ_ControlType
{
TILT_UP = 0, //上
TILT_DOWN, //下
PAN_LEFT, //左
PAN_RIGHT, //右
PAN_LEFTTOP, //左上
PAN_LEFTDOWN, //左下
PAN_RIGTHTOP, //右上
PAN_RIGTHDOWN, //右下
ZOOM_OUT_1, //变倍小//ZOOM_OUT/ZOOM_IN在VS2010与系统定义的冲突了
ZOOM_IN_1, //变倍大
FOCUS_FAR, //焦点后调
FOCUS_NEAR, //焦点前调
IRIS_OPEN, //光圈扩大
IRIS_CLOSE, //光圈缩小13
EXTPTZ_OPERATION_ALARM, //报警功能
EXTPTZ_LAMP_ON, //灯光开
EXTPTZ_LAMP_OFF, //灯光关
EXTPTZ_POINT_SET_CONTROL, //设置预置点
EXTPTZ_POINT_DEL_CONTROL, //清除预置点
EXTPTZ_POINT_MOVE_CONTROL, //转预置点
EXTPTZ_STARTPANCRUISE, //开始水平旋转 20
EXTPTZ_STOPPANCRUISE, //停止水平旋转
EXTPTZ_SETLEFTBORDER, //设置左边界
EXTPTZ_SETRIGHTBORDER, //设置右边界
EXTPTZ_STARTLINESCAN, //自动扫描开始
EXTPTZ_CLOSELINESCAN, //自动扫描开停止
EXTPTZ_ADDTOLOOP, //加入预置点到巡航 p1巡航线路 p2预置点值
EXTPTZ_DELFROMLOOP, //删除巡航中预置点 p1巡航线路 p2预置点值
EXTPTZ_POINT_LOOP_CONTROL, //开始巡航 28
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 32 //最大解码通道个数
#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 //最大解码通道个数
#define NET_CHANNEL_NAME_MAX_LEN 64 //通道名称最大长度
#define NET_MAX_LINE_PER_OSD_AREA 12 //编码中一个OSD区域最多可以显示的字符行数
//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 DEV_LIST_SHOW 256
//IP SIZE
#define IP_SIZE 16
//#define MAX_HVR_CHNCAP 16
//DDNS服务器设备的信息
#define NET_NAME_TOKEN_LEN 128
#define NET_NAME_URL_LEN 128
#define NET_NAME_ID_LEN 64
#define NET_MAX_TITLE_DOT_BUF_LEN 64*24*24
typedef struct _DDNS_INFO
{
char ID[64]; //设备标识
char Alias[DDNS_MAX_DDNS_NAMELEN];
char IP[DDNS_MAX_DDNS_IPSIZE]; //外网IP
char LanIP[DDNS_MAX_DDNS_IPSIZE];//内网IP
int WebPort; //Web端口,默认为80
int MediaPort; //媒体端口,默认为34567
int MobilePort; //手机监控端口,默认为34599
int UPNPWebPort; //UPNP启动下Web端口,UPNP不开启为0
int UPNPMediaPort; //UPNP启动下媒体端口,UPNP不开启为0
int UPNPMobilePort; //UPNP启动下手机监控端口,UPNP不开启为0
int ChannelNum; //通道数
int Status; //状态
char Username[DDNS_MAX_DDNS_NAMELEN]; //用户名
char Password[DDNS_MAX_DDNS_PWDLEN]; //密码
}DDNS_INFO,*pDDNS_INFO;
//DDNS信息查询模式
typedef struct _SearchMode
{
int nType; //查询类型,见SearchModeType
char szSerIP[DDNS_MAX_DDNS_IPSIZE];//服务器地址
int nSerPort; //服务器端口号
char szSerialInfo[DDNS_MAX_SERIALINFO_SIZE]; //如果是按序列号,则为序列号,如果是用户名,则为用户名
char szPassWord[DDNS_MAX_DDNS_PWDLEN]; //按用户名登陆时候的密码
}SearchMode;
//DDNS信息查询类型
enum SearchModeType
{
DDNS_SERIAL = 0,//按序列号
DDNS_USERNAME, //按用户名
};
//实时预览扩展接口增加的参数:预览类型
typedef enum _H264_DVR_RealPlayType
{
NET_RType_Realplay = 0, //实时预览
NET_RType_Main_Realplay2, //实时监视-主码流,等同于NET_RType_Realplay
NET_RType_Main_Realplay3,
NET_RType_Sub_Realplay_1, //实时监视-从码流1
NET_RType_Sub_Realplay_2, //实时监视-从码流2
NET_RType_Sub_Realplay_3, //实时监视-从码流3
NET_RType_Multiplay_1, //多画面预览-1画面
NET_RType_Multiplay_4, //多画面预览-4画面
NET_RType_Multiplay_6, //多画面预览-6画面
NET_RType_Multiplay_8, //多画面预览-8画面
NET_RType_Multiplay_9, //多画面预览-9画面
NET_RType_Multiplay_12, //多画面预览-12画面
NET_RType_Multiplay_16, //多画面预览-16画面
} NET_RealPlayType;
/// 组合编码模式
enum NetCombinType
{
NET_COMBIN_NONE,
NET_COMBIN_1,
NET_COMBIN_2,
NET_COMBIN_3,
NET_COMBIN_4,
NET_COMBIN_5,
NET_COMBIN_6,
NET_COMBIN_7,
NET_COMBIN_8,
NET_COMBIN_9,
NET_COMBIN_10,
NET_COMBIN_11,
NET_COMBIN_12,
NET_COMBIN_13,
NET_COMBIN_14,
NET_COMBIN_15,
NET_COMBIN_16,
NET_COMBIN_1_4,
NET_COMBIN_5_8,
NET_COMBIN_9_12,
NET_COMBIN_13_16,
NET_COMBIN_1_8,
NET_COMBIN_9_16,
NET_COMBIN_1_9,
NET_COMBIN_8_16,
NET_COMBIN_1_16
};
//这些结构体和枚举是提供给外部使用,所有可能会和设备那边定义了2次,所以都在前面加了SDK_
enum SDK_CAPTURE_SIZE_t {
SDK_CAPTURE_SIZE_D1, ///< 720*576(PAL) 720*480(NTSC)
SDK_CAPTURE_SIZE_HD1, ///< 352*576(PAL) 352*480(NTSC)
SDK_CAPTURE_SIZE_BCIF, ///< 720*288(PAL) 720*240(NTSC)
SDK_CAPTURE_SIZE_CIF, ///< 352*288(PAL) 352*240(NTSC)
SDK_CAPTURE_SIZE_QCIF, ///< 176*144(PAL) 176*120(NTSC)
SDK_CAPTURE_SIZE_VGA, ///< 640*480(PAL) 640*480(NTSC)
SDK_CAPTURE_SIZE_QVGA, ///< 320*240(PAL) 320*240(NTSC)
SDK_CAPTURE_SIZE_SVCD, ///< 480*480(PAL) 480*480(NTSC)
SDK_CAPTURE_SIZE_QQVGA, ///< 160*128(PAL) 160*128(NTSC)
SDK_CAPTURE_SIZE_ND1 = 9, ///< 240*192
SDK_CAPTURE_SIZE_650TVL, ///< 926*576
SDK_CAPTURE_SIZE_720P, ///< 1280*720
SDK_CAPTURE_SIZE_1_3M, ///< 1280*960
SDK_CAPTURE_SIZE_UXGA , ///< 1600*1200
SDK_CAPTURE_SIZE_1080P, ///< 1920*1080
SDK_CAPTURE_SIZE_WUXGA, ///< 1920*1200
SDK_CAPTURE_SIZE_2_5M, ///< 1872*1408
SDK_CAPTURE_SIZE_3M, ///< 2048*1536
SDK_CAPTURE_SIZE_5M, ///< 3744*1408
SDK_CAPTURE_SIZE_NR =19,
SDK_CAPTURE_SIZE_1080N = 19, ///< 960*1080
SDK_CAPTURE_SIZE_4M, ///< 2592*1520
SDK_CAPTURE_SIZE_6M, ///< 3072×2048
SDK_CAPTURE_SIZE_8M, ///< 3264×2448
SDK_CAPTURE_SIZE_12M, ///< 4000*3000
SDK_CAPTURE_SIZE_4K, ///< 4096 * 2160通用/3840*2160海思
SDK_CAPTURE_SIZE_EXT_V2_NR =25,
SDK_CAPTURE_SIZE_720N = 25, // 640*720
SDK_CAPTURE_SIZE_WSVGA, ///< 1024*576
SDK_CAPTURE_SIZE_NHD, // 0*0
SDK_CAPTURE_SIZE_3M_N, // 0*0
SDK_CAPTURE_SIZE_4M_N, // 0*0
SDK_CAPTURE_SIZE_5M_N, // 0*0
SDK_CAPTURE_SIZE_4K_N, // 0*0
SDK_CAPTURE_SIZE_EXT_V3_NR,
};
/// 捕获码流控制模式类型
enum SDK_capture_brc_t {
SDK_CAPTURE_BRC_CBR, ///< 固定码流。
SDK_CAPTURE_BRC_VBR, ///< 可变码流。
SDK_CAPTURE_BRC_MBR, ///< 混合码流。
SDK_CAPTURE_BRC_NR ///< 枚举的码流控制模式数目。
};
/// 捕获压缩格式类型
enum SDK_CAPTURE_COMP_t {
SDK_CAPTURE_COMP_DIVX_MPEG4, ///< DIVX MPEG4。
SDK_CAPTURE_COMP_MS_MPEG4, ///< MS MPEG4。
SDK_CAPTURE_COMP_MPEG2, ///< MPEG2。
SDK_CAPTURE_COMP_MPEG1, ///< MPEG1。
SDK_CAPTURE_COMP_H263, ///< H.263
SDK_CAPTURE_COMP_MJPG, ///< MJPG
SDK_CAPTURE_COMP_FCC_MPEG4, ///< FCC MPEG4
SDK_CAPTURE_COMP_H264, ///< H.264
SDK_CAPTURE_COMP_H265, ///< H.265
SDK_CAPTURE_COMP_NR ///< 枚举的压缩标准数目。
};
/// 捕获通道类型
enum SDK_CAPTURE_CHANNEL_t {
SDK_CHL_MAIN_T = 0, ///< 主通道 - 主码流1
SDK_CHL_2END_T = 1, ///< 辅通道 - 出辅码流2
SDK_CHL_3IRD_T = 2, ///< 辅通道 - 出辅码流3
SDK_CHL_4RTH_T = 3, ///< 辅通道 - 出辅码流4
SDK_CHL_JPEG_T = 4, ///< 辅通道 - 出JPEG抓图
SDK_CHL_FUNCTION_NUM
};
/// 音频编码类型
enum SDK_AudioEncodeTypes
{
SDK_AUDIO_ENCODE_NONE = 0,
SDK_AUDIO_ENCODE_G729_8KBIT,
SDK_AUDIO_ENCODE_G726_16KBIT,
SDK_AUDIO_ENCODE_G726_24KBIT,
SDK_AUDIO_ENCODE_G726_32KBIT,
SDK_AUDIO_ENCODE_G726_40KBIT,
SDK_AUDIO_ENCODE_PCM_8TO16BIT,
SDK_AUDIO_ENCODE_PCM_ALAW,
SDK_AUDIO_ENCODE_PCM_ULAW,
SDK_AUDIO_ENCODE_ADPCM8K16BIT,
SDK_AUDIO_ENCODE_ADPCM16K16BIT,
SDK_AUDIO_ENCODE_G711_ALAW,
SDK_AUDIO_ENCODE_MPEG2_LAYER1,
SDK_AUDIO_ENCODE_AMR8K16BIT,
SDK_AUDIO_ENCODE_G711_ULAW,
SDK_AUDIO_ENCODE_IMA_ADPCM_8K16BIT,
SDK_AUDIO_ENCODE_TYPES_NR,
};
typedef enum _SDK_CONFIG_TYPE
{
E_SDK_CONFIG_NOTHING = 0,
E_SDK_CONFIG_USER, //用户信息,包含了权限列表,用户列表和组列表 对应结构体USER_MANAGE_INFO
E_SDK_CONFIG_ADD_USER, //增加用户---对应结构体USER_INFO
E_SDK_CONFIG_MODIFY_USER, //修改用户---对应结构体CONF_MODIFYUSER
E_SDK_CONFIG_DELETE_USER, //对应结构体USER_INFO
E_SDK_CONFIG_ADD_GROUP, //增加组---对应结构体USER_GROUP_INFO
E_SDK_CONFIG_MODIFY_GROUP, //修改组---对应结构体CONF_MODIFYGROUP
E_SDK_COFIG_DELETE_GROUP, //对应结构体---USER_GROUP_INFO
E_SDK_CONFIG_MODIFY_PSW, //修改密码---对应结构体_CONF_MODIFY_PSW
E_SDK_CONFIG_ABILITY_SYSFUNC = 9, //支持的网络功能---对应结构体SDK_SystemFunction
E_SDK_CONFIG_ABILTY_ENCODE = 10, //首先获得编码能力---对应结构体CONFIG_EncodeAbility
E_SDK_CONFIG_ABILITY_PTZPRO, //云台协议---对应结构体SDK_PTZPROTOCOLFUNC
E_SDK_COMFIG_ABILITY_COMMPRO, //串口协议---对应结构体SDK_COMMFUNC
E_SDK_CONFIG_ABILITY_MOTION_FUNC, //动态检测块---对应结构体SDK_MotionDetectFunction
E_SDK_CONFIG_ABILITY_BLIND_FUNC, //视频遮挡块---对应结构体SDK_BlindDetectFunction
E_SDK_CONFIG_ABILITY_DDNS_SERVER, //DDNS服务支持类型---对应结构体SDK_DDNSServiceFunction
E_SDK_CONFIG_ABILITY_TALK, //对讲编码类型---对应结构体SDK_DDNSServiceFunction
E_SDK_CONFIG_SYSINFO = 17, //系统信息---对应结构体H264_DVR_DEVICEINFO
E_SDK_CONFIG_SYSNORMAL, //普通配置---对应结构体SDK_CONFIG_NORMAL
E_SDK_CONFIG_SYSENCODE, //编码配置---对应结构体SDK_EncodeConfigAll
E_SDK_CONFIG_SYSNET = 20, //网络设置---对应结构体SDK_CONFIG_NET_COMMON
E_SDK_CONFIG_PTZ, //云台页面---对应结构体SDK_STR_PTZCONFIG_ALL
E_SDK_CONFIG_COMM, //串口页面---对应结构体SDK_CommConfigAll
E_SDK_CONFIG_RECORD, //录像设置界面---对应结构体SDK_RECORDCONFIG
E_SDK_CONFIG_MOTION, //动态检测页面---对应结构体SDK_MOTIONCONFIG
E_SDK_CONFIG_SHELTER, //视频遮挡---对应结构体SDK_BLINDDETECTCONFIG
E_SDK_CONFIG_VIDEO_LOSS, //视频丢失---对应结构体SDK_VIDEOLOSSCONFIG
E_SDK_CONFIG_ALARM_IN, //报警输入---对应结构体SDK_ALARM_INPUTCONFIG
E_SDK_CONFIG_ALARM_OUT, //报警输出---对应结构体SDK_AlarmOutConfigAll
E_SDK_CONFIG_DISK_MANAGER, //硬盘管理界面---对应结构体SDK_StorageDeviceControl
E_SDK_CONFIG_OUT_MODE = 30, //输出模式界面---对应结构体SDK_VideoWidgetConfigAll
E_SDK_CONFIG_CHANNEL_NAME, //通道名称---对应结构体SDK_ChannelNameConfigAll
E_SDK_CONFIG_AUTO, //自动维护界面配置---对应结构体SDK_AutoMaintainConfig
E_SDK_CONFIG_DEFAULT, //恢复默认界面配置---对应结构体SDK_SetDefaultConfigTypes
E_SDK_CONFIG_DISK_INFO, //硬盘信息---对应结构体SDK_StorageDeviceInformationAll
E_SDK_CONFIG_LOG_INFO, //查询日志---对应结构体SDK_LogList
E_SDK_CONFIG_NET_IPFILTER, //黑名单配置---对应结构体SDK_NetIPFilterConfig
E_SDK_CONFIG_NET_DHCP, //DHCP配置---对应结构体SDK_NetDHCPConfigAll
E_SDK_CONFIG_NET_DDNS, //DDNS信息---对应结构体SDK_NetDDNSConfigALL
E_SDK_CONFIG_NET_EMAIL, //EMAIL---对应结构体SDK_NetEmailConfig
E_SDK_CONFIG_NET_MULTICAST = 40, //组播---对应结构体SDK_NetMultiCastConfig
E_SDK_CONFIG_NET_NTP, //NTP---对应结构体SDK_NetNTPConfig
E_SDK_CONFIG_NET_PPPOE, //PPPOE---对应结构体SDK_NetPPPoEConfig
E_SDK_CONFIG_NET_DNS, //DNS---对应结构体SDK_NetDNSConfig
E_SDK_CONFIG_NET_FTPSERVER, //FTP---对应结构体SDK_FtpServerConfig
E_SDK_CONFIG_SYS_TIME, //系统时间---对应结构体SDK_SYSTEM_TIME(接口H264_DVR_SetSystemDateTime也可以实现)
E_SDK_CONFIG_CLEAR_LOG, //清除日志(接口H264_DVR_ControlDVR)
E_SDK_REBOOT_DEV, //重启启动设备(接口H264_DVR_ControlDVR)
E_SDK_CONFIG_ABILITY_LANG, //支持语言---对应结构体SDK_MultiLangFunction
E_SDK_CONFIG_VIDEO_FORMAT,
E_SDK_CONFIG_COMBINEENCODE = 50, //组合编码---对应结构体SDK_CombineEncodeConfigAll
E_SDK_CONFIG_EXPORT, //配置导出
E_SDK_CONFIG_IMPORT, //配置导入
E_SDK_LOG_EXPORT, //日志导出
E_SDK_CONFIG_COMBINEENCODEMODE, //组合编码模式---对应结构体SDK_CombEncodeModeAll
E_SDK_WORK_STATE, //运行状态---SDK_DVR_WORKSTATE(接口H264_DVR_GetDVRWorkState也可以获取)
E_SDK_ABILITY_LANGLIST, //实际支持的语言集---对应结构体SDK_MultiLangFunction
E_SDK_CONFIG_NET_ARSP, //ARSP---对应结构体SDK_NetARSPConfigAll
E_SDK_CONFIG_SNAP_STORAGE, //抓图设置---对应结构体SDK_SnapshotConfig
E_SDK_CONFIG_NET_3G, //3G拨号---对应结构体SDK_Net3GConfig
E_SDK_CONFIG_NET_MOBILE = 60, //手机监控---对应结构体SDK_NetMoblieConfig
E_SDK_CONFIG_UPGRADEINFO, //获取升级信息/参数/文件名---对应结构体SDK_UpgradeInfo
E_SDK_CONFIG_NET_DECODER, //解码器地址设置V1(弃用)---对应结构体SDK_NetDecoderConfigAll
E_SDK_ABILITY_VSTD, //实际支持的视频制式---对应结构体SDK_MultiVstd
E_SDK_CONFIG_ABILITY_VSTD, //支持视频制式---对应结构体SDK_MultiVstd
E_SDK_CONFIG_NET_UPNP, //UPUN设置---对应结构体SDK_NetUPNPConfig
E_SDK_CONFIG_NET_WIFI, //WIFI---对应结构体SDK_NetWifiConfig
E_SDK_CONFIG_NET_WIFI_AP_LIST, //搜索到的wifi列表---对应结构体SDK_NetWifiDeviceAll
E_SDK_CONFIG_SYSENCODE_SIMPLIIFY, //简化的编码配置---对应结构SDK_EncodeConfigAll_SIMPLIIFY
E_SDK_CONFIG_ALARM_CENTER, //告警中心---对应结构体SDK_NetAlarmServerConfigAll
E_SDK_CONFIG_NET_ALARM = 70, //网络告警---对应结构体SDK_NETALARMCONFIG_ALL
E_SDK_CONFIG_NET_MEGA, //互信互通---对应结构体SDK_CONFIG_NET_MEGA
E_SDK_CONFIG_NET_XINGWANG, //星望---对应结构体SDK_CONFIG_NET_XINGWANG
E_SDK_CONFIG_NET_SHISOU, //视搜---对应结构体SDK_CONFIG_NET_SHISOU
E_SDK_CONFIG_NET_VVEYE, //VVEYE---对应结构体SDK_CONFIG_NET_VVEYE
E_SDK_CONFIG_NET_PHONEMSG, //短信---对应结构体SDK_NetShortMsgCfg
E_SDK_CONFIG_NET_PHONEMEDIAMSG, //彩信---对应结构体SDK_NetMultimediaMsgCfg
E_SDK_VIDEO_PREVIEW, //
E_SDK_CONFIG_NET_DECODER_V2, //解码器地址设置V2(弃用)---对应结构体SDK_NetDecorderConfigAll_V2
E_SDK_CONFIG_NET_DECODER_V3, //解码器地址设置V3---对应结构体SDK_NetDecorderConfigAll_V3
E_SDK_CONFIG_ABILITY_SERIALNO = 80, //序列号---对应结构体SDK_AbilitySerialNo(经测试不是设备序列号(暂弃用),序列号可以从登陆接口获取到)
E_SDK_CONFIG_NET_RTSP, //RTSP---对应结构体SDK_NetRTSPConfig
E_SDK_GUISET, //本地GUI输出设置---对应结构体SDK_GUISetConfig
E_SDK_CATCHPIC, //抓图
E_SDK_VIDEOCOLOR, //视频颜色设置---对应结构体SDK_VideoColorConfigAll
E_SDK_CONFIG_COMM485, //串口485协议配置---对应结构体SDK_STR_RS485CONFIG_ALL
E_SDK_COMFIG_ABILITY_COMMPRO485, //串口485协议---对应结构体SDK_COMMFUNC
E_SDK_CONFIG_SYS_TIME_NORTC, //设置系统时间noRtc---对应结构体SDK_SYSTEM_TIME
E_SDK_CONFIG_REMOTECHANNEL, //远程通道---弃用
E_SDK_CONFIG_OPENTRANSCOMCHANNEL , //打开透明串口---对应结构体TransComChannel
E_SDK_CONFIG_CLOSETRANSCOMCHANNEL = 90,//关闭透明串口
E_SDK_CONFIG_SERIALWIRTE, //写入透明串口信息
E_SDK_CONFIG_SERIALREAD, //读取透明串口信息
E_SDK_CONFIG_CHANNELTILE_DOT, //点阵信息-修改IPC通道名需要点阵信息---对应结构体SDK_TitleDot
E_SDK_CONFIG_CAMERA, //摄象机参数---对应结构体SDK_CameraParam
E_SDK_CONFIG_ABILITY_CAMERA, //曝光能力级---对应结构体SDK_CameraAbility
E_SDK_CONFIG_BUGINFO, //命令调试
E_SDK_CONFIG_STORAGENOTEXIST, //硬盘不存在---对应结构体SDK_VIDEOLOSSCONFIG
E_SDK_CONFIG_STORAGELOWSPACE, //硬盘容量不足---对应结构体SDK_StorageLowSpaceConfig
E_SDK_CONFIG_STORAGEFAILURE, //硬盘出错---对应结构体SDK_StorageFailConfig
E_SDK_CFG_NETIPCONFLICT = 100, //IP冲突---对应结构体SDK_VIDEOLOSSCONFIG
E_SDK_CFG_NETABORT, //网络异常---对应结构体SDK_VIDEOLOSSCONFIG
E_SDK_CONFIG_CHNSTATUS, //通道状态---对应结构体SDK_NetDecorderChnStatusAll
E_SDK_CONFIG_CHNMODE, //通道模式---对应结构体SDK_NetDecorderChnModeConfig
E_SDK_CONFIG_NET_DAS, //主动注册---对应结构体SDK_DASSerInfo
E_SDK_CONFIG_CAR_INPUT_EXCHANGE, //外部信息输入与车辆状态的对应关系---对应结构体SDK_CarStatusExchangeAll
E_SDK_CONFIG_DELAY_TIME, //车载系统延时配置---对应结构体SDK_CarDelayTimeConfig
E_SDK_CONFIG_NET_ORDER, //网络优先级---对应结构体SDK_NetOrderConfig
E_SDK_CONFIG_ABILITY_NETORDER , //网络优先级设置能力---对应结构体SDK_NetOrderFunction
E_SDK_CONFIG_CARPLATE, //车牌号配置---对应结构体SDK_CarPlates
E_SDK_CONFIG_LOCALSDK_NET_PLATFORM = 110, //网络平台信息设置---对应结构体SDK_LocalSdkNetPlatformConfig
E_SDK_CONFIG_GPS_TIMING, //GPS校时相关配置---对应结构体SDK_GPSTimingConfig
E_SDK_CONFIG_VIDEO_ANALYZE, //视频分析(智能DVR)---对应结构体SDK_ANALYSECONFIG
E_SDK_CONFIG_GODEYE_ALARM, //神眼接警中心系统---对应结构体SDK_GodEyeConfig
E_SDK_CONFIG_NAT_STATUS_INFO, //nat状态信息---对应结构体SDK_NatStatusInfo
E_SDK_CONFIG_BUGINFOSAVE, //命令调试(保存)
E_SDK_CONFIG_MEDIA_WATERMARK, //水印设置---对应结构体SDK_WaterMarkConfigAll
E_SDK_CONFIG_ENCODE_STATICPARAM, //编码器静态参数---对应结构体SDK_EncodeStaticParamAll
E_SDK_CONFIG_LOSS_SHOW_STR, //视频丢失显示字符串
E_SDK_CONFIG_DIGMANAGER_SHOW, //通道管理显示配置---对应结构体SDK_DigManagerShowStatus
E_SDK_CONFIG_ABILITY_ANALYZEABILITY = 120,//智能分析能力---对应结构体SDK_ANALYZEABILITY
E_SDK_CONFIG_VIDEOOUT_PRIORITY, //显示HDMI VGA优先级别配置
E_SDK_CONFIG_NAT, //NAT功能,MTU值配置---对应结构体SDK_NatConfig
E_SDK_CONFIG_CPCINFO, //智能CPC计数数据信息---对应结构体SDK_CPCDataAll
E_SDK_CONFIG_STORAGE_POSITION, // 录像存储设备类型---对应结构体SDK_RecordStorageType
E_SDK_CONFIG_ABILITY_CARSTATUSNUM,//车辆状态数---对应结构体SDK_CarStatusNum
E_SDK_CFG_VPN, //VPN---对应结构体SDK_VPNConfig
E_SDK_CFG_VIDEOOUT, //VGA视频分辨率---对应结构体SDK_VGAresolution
E_SDK_CFG_ABILITY_VGARESOLUTION,//支持的VGA分辨率列表---对应结构体SDK_VGAResolutionAbility
E_SDK_CFG_NET_LOCALSEARCH, //搜索设备,设备端的局域网设备---对应结构体SDK_NetDevList
E_SDK_CFG_NETPLAT_KAINENG = 130,//客户配置---对应结构体SDK_CONFIG_KAINENG_INFO
E_SDK_CFG_ENCODE_STATICPARAM_V2,//DVR编码器静态参数---对应结构体SDK_EncodeStaticParamV2
E_SDK_ABILITY_ENC_STATICPARAM, //静态编码能力集---对应结构体SDK_EncStaticParamAbility (掩码)
E_SDK_CFG_C7_PLATFORM, //C7平台配置---对应结构体SDK_C7PlatformConfig
E_SDK_CFG_MAIL_TEST, //邮件测试---对应结构体SDK_NetEmailConfig
E_SDK_CFG_NET_KEYBOARD, //网络键盘服务---对应结构体SDK_NetKeyboardConfig
E_SDK_ABILITY_NET_KEYBOARD, //网络键盘协议---对应结构体SDK_NetKeyboardAbility
E_SDK_CFG_SPVMN_PLATFORM, //28181协议配置---对应结构体SDK_ASB_NET_VSP_CONFIG
E_SDK_CFG_PMS, //手机服务---对应结构体SDK_PMSConfig
E_SDK_CFG_OSD_INFO, //屏幕提示信息---对应结构体SDK_OSDInfoConfigAll
E_SDK_CFG_KAICONG = 140, //客户配置---对应结构体SDK_KaiCongAlarmConfig
E_SDK_CFG_DIGITAL_REAL, //真正支持的通道模式---对应结构体SDK_VideoChannelManage
E_SDK_ABILITY_PTZCONTROL, //PTZ控制能力集---对应结构体SDK_PTZControlAbility
E_SDK_CFG_XMHEARTBEAT, //对应结构体SDK_XMHeartbeatConfig
E_SDK_CFG_MONITOR_PLATFORM, //平台配置---对应结构体SDK_MonitorPlatformConfig
E_SDK_CFG_PARAM_EX, //摄像头扩展参数---对应结构体SDK_CameraParamEx
E_SDK_CFG_NETPLAT_ANJU_P2P, //安巨P2P---对应结构体SDK_NetPlatformCommonCfg
E_SDK_GPS_STATUS, //GPS连接信息---对应结构体SDK_GPSStatusInfo
E_SDK_WIFI_STATUS, //Wifi连接信息---对应结构体SDK_WifiStatusInfo
E_SDK_3G_STATUS, //3G连接信息---对应结构体SDK_WirelessStatusInfo
E_SDK_DAS_STATUS = 150, //主动注册状态---对应结构体SDK_DASStatusInfo
E_SDK_ABILITY_DECODE_DELEY, //解码策略能力---对应结构体SDK_DecodeDeleyTimePrame
E_SDK_CFG_DECODE_PARAM, //解码最大延时---对应结构体SDK_DecodeParam
E_SDK_CFG_VIDEOCOLOR_CUSTOM, //SDK_VIDEOCOLOR_PARAM_CUSTOM
E_SDK_ABILITY_ONVIF_SUB_PROTOCOL,//onvif子协议---对应结构体SDK_AbilityMask
E_SDK_CONFIG_EXPORT_V2, //导出设备默认配置,即出厂的配置
E_SDK_CFG_CAR_BOOT_TYPE, //车载开关机模式---对应结构体SDK_CarBootTypeConfig
E_SDK_CFG_IPC_ALARM, //IPC网络报警---对应结构体SDK_IPCAlarmConfigAll
E_SDK_CFG_NETPLAT_TUTK_IOTC, //TUTK IOTC平台配置---对应结构体SDK_NetPlatformCommonCfg
E_SDK_CFG_BAIDU_CLOUD, //百度云---对应结构体SDK_BaiduCloudCfg
E_SDK_CFG_PMS_MSGNUM = 160, //手机订阅数---对应结构体SDK_PhoneInfoNum
E_SDK_CFG_IPC_IP, //控制DVR去修改设备IP---对应结构体SDK_IPSetCfg
E_SDK_ABILITY_DIMEN_CODE, //二维码点阵---对应结构体SDK_DimenCodeAll
E_SDK_CFG_MOBILE_WATCH, //中国电信手机看店平台配置---对应结构体SDK_MobileWatchCfg
E_SDK_CFG_BROWSER_LANGUAGE, //使用浏览器时使用的语言---对应结构体SDK_BrowserLanguageType
E_SDK_CFG_TIME_ZONE, //时区配置---对应结构体SDK_TimeZone
E_SDK_CFG_NETBJTHY, //客户配置---对应结构体SDK_MonitorPlatformConfig
E_SDK_ABILITY_MAX_PRE_RECORD, //最大可设置预录时间1~30---对应结构体SDK_AbilityMask
E_SDK_CFG_DIG_TIME_SYN, //数字通道时间同步配置(决定前端同步方式)---对应结构体SDK_TimeSynParam
E_SDK_CONFIG_OSDINFO_DOT, //3行OSD
E_CFG_NET_POS = 170, //POS机配置---对应结构体SDK_NetPosConfigAll
E_SDK_CFG_CUSTOMIZE_OEMINFO, //定制OEM客户版本信息---对应结构体SDK_CustomizeOEMInfo
E_SDK_CFG_DIGITAL_ENCODE, //数字通道精简版编码配置---对应结构体SDK_EncodeConfigAll_SIMPLIIFY
E_SDK_CFG_DIGITAL_ABILITY, //数字通道的编码能力---对应结构体SDK_DigitDevInfo
E_SDK_CFG_ENCODECH_DISPLAY, //IE端编码配置显示的前端通道号---对应结构体SDK_EncodeChDisplay
E_SDK_CFG_RESUME_PTZ_STATE, //开机云台状态---对应结构体SDK_ResumePtzState
E_SDK_CFG_LAST_SPLIT_STATE, //最近一次的画面分割模式,用于重启后恢复之前的分割模式
E_SDK_CFG_SYSTEM_TIMING_WORK, //设备定时开关机时间配置。隐藏在自动维护页面里,要用超级密码登陆才能看到界面
E_SDK_CFG_GBEYESENV, //宝威环境监测平台配置---对应结构体SDK_NetPlatformCommonCfg
E_SDK_ABILITY_AHD_ENCODE_L, //AHDL能力集---对应结构体SDK_AHDEncodeLMask
E_SDK_CFG_SPEEDALARM = 180, //速度报警---对应结构体SDK_SpeedAlarmConfigAll
E_SDK_CFG_CORRESPONDENT_INFO, //用户自定义配置---对应结构体SDK_CorrespondentOwnInfo
E_SDK_SET_OSDINFO, //OSD信息设置---对应结构体SDK_OSDInfo,(此项功能只支持模拟通道)
E_SDK_SET_OSDINFO_V2, //OSD信息叠加,不保存配置---对应结构体SDK_OSDInfoConfigAll,(此项功能只支持模拟通道)
E_SDK_ABILITY_SUPPORT_EXTSTREAM,//支持辅码流录像---对应结构体SDK_AbilityMask
E_SDK_CFG_EXT_RECORD, //辅码流配置---对应结构体SDK_RECORDCONFIG_ALL/SDK_RECORDCONFIG
E_SDK_CFG_APP_DOWN_LINK, //用于用户定制下载链接---对应结构体SDK_AppDownloadLink
E_SDK_CFG_EX_USER_MAP, //用于保存明文数据---对应结构体SDK_UserMap
E_SDK_CFG_TRANS_COMM_DATA, //串口数据主动上传到UDP或TCP服务器,其中TCP服务器可以支持双向通信---对应结构体SDK_NetTransCommData
E_SDK_EXPORT_LANGUAGE, //语言导出
E_SDK_IMPORT_LANGUAGE = 190, //语言导入
E_SDK_DELETE_LANGUAGE, //语言删除
E_SDK_CFG_UPGRADE_VERSION_LIST, //云升级文件列表---对应结构体SDK_CloudUpgradeList
E_SDK_CFG_GSENSORALARM, //GSENSOR报警
E_SDK_CFG_USE_PROGRAM, //启动客户小程序---对应结构体SDK_NetUseProgram
E_SDK_CFG_FTP_TEST, //FTP测试---对应结构体SDK_FtpServerConfig
E_SDK_CFG_FbExtraStateCtrl, //消费类产品的录像灯的状态---对应结构体SDK_FbExtraStateCtrl
E_SDK_CFG_PHONE, //手机用
E_SDK_PicInBuffer, //手机抓图,弃用
E_SDK_GUARD, //布警 弃用
E_SDK_UNGUARD = 200, //撤警,弃用
E_SDK_CFG_START_UPGRADE, //开始升级,弃用
E_SDK_CFG_AUTO_SWITCH, //插座定时开关---获取配置都用H264_DVR_GetDevConfig_Json,配置使用H264_DVR_SetDevConfig_Json(配置时的格式见智能插座用到的命令.doc)(两个接口简称Json接口,下面用简称) "Name":"PowerSocket.AutoSwitch"
E_SDK_CFG_POWER_SOCKET_SET, //控制插座开关---Json接口 "Name":"OPPowerSocketGet"
E_SDK_CFG_AUTO_ARM, //插座的定时布撤防---Json接口 "Name":"PowerSocket.AutoArm"
E_SDK_CFG_WIFI_MODE, //Wifi模式配置,用于行车记录仪切换AP模式---对应结构体SDK_NetWifiMode
E_SDK_CFG_CIENT_INFO, //传递手机客户端信息---Json接口 "Name":"PowerSocket.ClientInfo"
E_SDK_CFG_ATHORITY, //SDK_Authority---Json接口 "Name":"PowerSocket.Authority"
E_SDK_CFG_ARM , //SDK_Arm---Json接口 "Name":"PowerSocket.Arm"
E_SDK_CFG_AUTOLIGHT, //设置夜灯的定时开关功能 --Json接口 "Name" : "PowerSocket.AutoLight",
E_SDK_CFG_LIGHT = 210, //使能和禁止夜灯的动检响应功能---Json接口 "Name" : "PowerSocket.Light",
E_SDK_CFG_WORKRECORD, //进行电量统计---Json接口 "Name" : "PowerSocket.WorkRecord",
E_SDK_CFG_SYSTEMTIME, //设置时间的命令 ,当局域网连接的时候,连接的时候,发送对时命令 --Json接口 "Name":"System.Time"
E_SDK_CFG_USB, //usb接口控制功能---Json接口 "Name":"PowerSocket.Usb"
E_SDK_CFG_NETPLAT_BJHONGTAIHENG,//北京鸿泰恒平台---对应结构体SDK_CONFIG_NET_BJHONGTAIHENG
E_SDK_CFG_CLOUD_STORAGE, //云存储相关配置---对应结构体SDK_CloudRecordConfigAll
E_SDK_CFG_IDLE_PTZ_STATE, //云台空闲动作相关配置---对应结构体SDK_PtzIdleStateAll
E_SDK_CFG_CAMERA_CLEAR_FOG, //去雾功能配置---对应结构体SDK_CameraClearFogAll
E_SDK_CFG_WECHATACCOUNT, //---对应json "Name":"PowerSocket.WechatAccount"
E_SDK_CFG_WECHATRENEW, //---对应json "Name":"PowerSocket.WechatRenew"
E_SDK_CFG_POWERSOCKET_WIFI = 220,//---对应json "Name":"PowerSocket.WiFi"
E_SDK_CFG_CAMERA_MOTOR_CONTROL, //机器人马达控制---对应结构体SDK_CameraMotorCtrl
E_SDK_CFG_ENCODE_ADD_BEEP, //设置编码加入每隔30秒beep声---对应结构体SDK_EncodeAddBeep
E_SDK_CFG_DATALINK, //datalink客户在网络服务中的执行程序使能配置---对应结构体 SDK_DataLinkConfig
E_SDK_CFG_FISH_EYE_PARAM, //鱼眼功能参数配置---对应结构体SDK_FishEyeParam
E_SDK_OPERATION_SET_LOGO, //视频上叠加雄迈等厂家的LOGO---对应结构体SDK_SetLogo
E_SDK_CFG_SPARSH_HEARTBEAT, //Sparsh客户的心跳功能配置---对应结构体 SDK_SparshHeartbeat
E_SDK_CFG_LOGIN_FAILED, //登录失败时发送邮件,使用结构体:基本事件结构---对应结构体 SDK_VIDEOLOSSCONFIG
E_SDK_CFG_NETPLAT_SPVMN_NAS, //安徽超清客户的nas服务器配置---对应结构体SDK_SPVMN_NAS_SERVER
E_SDK_CFG_DDNS_APPLY, //ddns 按键功能测试---对应结构体SDK_NetDDNSConfigALL
E_SDK_OPERATION_NEW_UPGRADE_VERSION_REQ, ///新版云升级版本查询请求---对应结构体SDK_CloudUpgradeVersionRep
E_SDK_CFG_IPV6_ADDRESS, //ipv6------对应的结构体SDK_IPAddressV6
E_SDK_CFG_DDNS_IPMSG, //DDNS外网IP地址
E_SDK_CFG_ONLINE_UPGRADE, //在线升级相关配置-----对应的结构体SDK_OnlineUpgradeCfg
E_SDK_CFG_CONS_SENSOR_ALARM, //家用产品433报警联动项配置-----对应的SDK_ConsSensorAlarmCfg
E_SDK_OPEARTION_SPLIT_CONTROL, //画面分割模式-----对应的结构体SDK_SplitControl
}SDK_CONFIG_TYPE;
/// 报警事件码
enum SDK_EventCodeTypes
{
SDK_EVENT_CODE_INIT = 0,
SDK_EVENT_CODE_LOCAL_ALARM = 1, //本地报警(外部报警)
SDK_EVENT_CODE_NET_ALARM, //网络报警
SDK_EVENT_CODE_MANUAL_ALARM, //手动报警
SDK_EVENT_CODE_VIDEO_MOTION, //动态检测
SDK_EVENT_CODE_VIDEO_LOSS, //视频丢失
SDK_EVENT_CODE_VIDEO_BLIND, //视频遮挡
SDK_EVENT_CODE_VIDEO_TITLE,
SDK_EVENT_CODE_VIDEO_SPLIT,
SDK_EVENT_CODE_VIDEO_TOUR,
SDK_EVENT_CODE_STORAGE_NOT_EXIST,//存储设备不存在
SDK_EVENT_CODE_STORAGE_FAILURE,//存储设备访问失败
SDK_EVENT_CODE_LOW_SPACE, //存储设备容量过低
SDK_EVENT_CODE_NET_ABORT,
SDK_EVENT_CODE_COMM,
SDK_EVENT_CODE_STORAGE_READ_ERROR,//存储设备读错误
SDK_EVENT_CODE_STORAGE_WRITE_ERROR,//存储设备写错误
SDK_EVENT_CODE_NET_IPCONFLICT, //ip冲突
SDK_EVENT_CODE_ALARM_EMERGENCY,
SDK_EVENT_CODE_DEC_CONNECT,
SDK_EVENT_CODE_UPGRADE,
SDK_EVENT_CODE_BACK_UP,
SDK_EVENT_CODE_SHUT_DOWN,
SDK_EVENT_CODE_REBOOT,
SDK_EVENT_CODE_NEWFILE,
SDK_EVENT_CODE_VideoAnalyze,
SDK_EVENT_CODE_IPC_ALARM,
SDK_EVENT_CODE_SPEED_ALARM,
SDK_EVENT_CODE_GSENSOR_AlARM,
SDK_EVENT_CODE_LOGIN_FAILED,//登录失败
SDK_EVENT_Serial_ALARM,
SDK_EVENT_CONSSENSOR_ALARM, //消费类产品绑定的外部设备报警
SDK_EVENT_CODE_NR,
};
//! 编码配置的类型
enum SDK_ENCODE_TYPE_BY_RECORD
{
SDK_ENCODE_TYPE_TIM = 0,
SDK_ENCODE_TYPE_MTD = 1,
SDK_ENCODE_TYPE_ALM = 2,
SDK_ENCODE_TYPE_NUM = 3,
SDK_ENCODE_TYPE_SNAP_TIMER = 0,
SDK_ENCODE_TYPE_SNAP_TRIGGER = 1,
};
#define SDK_EXTRATYPES 3 //辅码流类型
//网络传输策略
enum SDK_TransferPolicy
{
SDK_TRANSFER_POLICY_AUTO, ///< 自适应
SDK_TRANSFER_POLICY_QUALITY, ///< 质量优先
SDK_TRANSFER_POLICY_FLUENCY, ///< 流量优先
SDK_TRANSFER_POLICY_TRANSMISSION,//< 网传优先
SDK_TRANSFER_POLICY_NR,
};
typedef struct {
int left;
int top;
int right;
int bottom;
}sdkRect;
/// 音频输入格式,语音对讲用
typedef struct SDK_AudioInFormatConfig
{
int iBitRate; ///< 码流大小,kbps为单位,比如192kbps,128kbps
int iSampleRate; ///< 采样率,Hz为单位,比如44100Hz
int iSampleBit; ///< 采样的位深
int iEncodeType; ///< 编码方式,参照AudioEncodeTypes定义
}SDK_AudioInFormatConfig;
//语音对讲格式
typedef enum __TALK_CODING_TYPE
{
TALK_DEFAULT = 0,
TALK_PCM = 1, //PCM
TALK_G711a, //G711a
TALK_AMR, //AMR
TALK_G711u, //G711u
TALK_G726, //G726
}TALK_CODING_TYPE;
//语音对讲
typedef struct H264_DVR_TALKDECODE_INFO
{
TALK_CODING_TYPE encodeType; //编码类型
int nAudioBit; //用实际的值表示,如8位 则填值为8
unsigned int dwSampleRate; //采样率,如16k 则填值为16000
char reserved[64];
}H264_DVR_TALKDECODE_INFO;
/// 系统时间结构
typedef struct SDK_SYSTEM_TIME{
int year;///< 年。
int month;///< 月,January = 1, February = 2, and so on.
int day;///< 日。
int wday;///< 星期,Sunday = 0, Monday = 1, and so on
int hour;///< 时。
int minute;///< 分。
int second;///< 秒。
int isdst;///< 夏令时标识。
}SDK_SYSTEM_TIME;
//录像设置相关结构体
typedef struct tagSDK_TIMESECTION
{
//!使能
int enable;
//!开始时间:小时
int startHour;
//!开始时间:分钟
int startMinute;
//!开始时间:秒钟
int startSecond;
//!结束时间:小时
int endHour;
//!结束时间:分钟
int endMinute;
//!结束时间:秒钟
int endSecond;
}SDK_TIMESECTION;
typedef struct{
int dwYear; //年
int dwMonth; //月
int dwDay; //日
int dwHour; //时
int dwMinute; //分
int dwSecond; //秒
}H264_DVR_TIME,*LPH264_DVR_TIME;
//时间结构
typedef struct _NEW_NET_TIME
{
unsigned int second :6; // 秒 1-60
unsigned int minute :6; // 分 1-60
unsigned int hour :5; // 时 1-24
unsigned int day :5; // 日 1-31
unsigned int month :4; // 月 1-12
unsigned int year :6; // 年 2000-2063
}NEW_NET_TIME, *LPNET_TIME;
///< 夏令时结构
typedef struct DSTPoint
{
int iYear;
int iMonth;
int iWeek; ///<周1:first to2 3 4 -1:last one 0:表示使用按日计算的方法[-1,4]
int iWeekDay; ///-57db
};
typedef struct SDK_NetWifiDevice
{
char sSSID[36]; //SSID Number
int nRSSI; //SEE SDK_RSSI_SINGNAL
int nChannel;
char sNetType[32]; //Infra, Adhoc
char sEncrypType[32]; //NONE, WEP, TKIP, AES
char sAuth[32]; //OPEN, SHARED, WEPAUTO, WPAPSK, WPA2PSK, WPANONE, WPA, WPA2
}SDK_NetWifiDevice;
typedef struct SDK_NetWifiDeviceAll
{
int nDevNumber;
SDK_NetWifiDevice vNetWifiDeviceAll[NET_MAX_AP_NUMBER];
}SDK_NetWifiDeviceAll;
///< 报警中心设置
typedef struct SDK_NetAlarmCenterConfig
{
bool bEnable; ///< 是否开启
char sAlarmServerKey[NET_NAME_PASSWORD_LEN]; ///< 报警中心协议类型名称,
///< 报警中心服务器
SDK_RemoteServerConfig Server;
bool bAlarm;
bool bLog;
}SDK_NetAlarmCenterConfig;
typedef struct SDK_NetAlarmServerConfigAll
{
SDK_NetAlarmCenterConfig vAlarmServerConfigAll[NET_MAX_ALARMSERVER_TYPE];
}SDK_NetAlarmServerConfigAll;
//互信互通
typedef struct SDK_CONFIG_NET_MEGA
{
bool bEnable;
bool bNetManEnable;
CONFIG_IPAddress ServerIP;
int iServerPort;
char sDeviceId[32];
char sUserName[24];
char sPasswd[32];
int iMaxCon;
int iVideoPort;
int iAudioPort;
int iMsgPort;
int iUpdatePort;
}SDK_CONFIG_NET_MEGA;
// 新望平台
typedef struct SDK_CONFIG_NET_XINGWANG
{
bool bEnable;
bool bSyncTime;
bool bSubStream;
CONFIG_IPAddress ServerIP;
int iServerPort;
int iDownLoadPort;
char sPasswd[32];
char szSID[32];
}SDK_CONFIG_NET_XINGWANG;
// 视搜平台
typedef struct SDK_CONFIG_NET_SHISOU
{
bool bEnable;
SDK_RemoteServerConfig Server;
char szSID[NET_MAX_USERNAME_LENGTH];
}SDK_CONFIG_NET_SHISOU;
// VVEYE平台
typedef struct SDK_CONFIG_NET_VVEYE
{
bool bEnable;
bool bCorpEnable; //只有在使用企业服务器时才需要设置Server
SDK_RemoteServerConfig Server;
char szDeviceName[NET_MAX_USERNAME_LENGTH];
}SDK_CONFIG_NET_VVEYE;
// 报警中心消息类型
enum SDK_AlarmCenterMsgType
{
SDK_ALARMCENTER_ALARM,
SDK_ALARMCENTER_LOG,
};
// 报警中心消息类型
enum SDK_AlarmCenterStatus
{
SDK_AC_START,
SDK_AC_STOP,
};
// 告警中心消息内容
typedef struct SDK_NetAlarmCenterMsg
{
CONFIG_IPAddress HostIP; ///< 设备IP
int nChannel; ///< 通道
int nType; ///< 类型 见AlarmCenterMsgType
int nStatus; ///< 状态 见AlarmCenterStatus
SDK_SYSTEM_TIME Time; ///< 发生时间
char sEvent[NET_MAX_INFO_LEN]; ///< 事件
char sSerialID[NET_MAX_MAC_LEN]; ///< 设备序列号
char sDescrip[NET_MAX_INFO_LEN]; ///< 描述
}SDK_NetAlarmCenterMsg;
/// 编码信息
typedef struct SDK_EncodeInfo
{
bool bEnable; ///< 使能项
bool bHaveAudio; ///< 是否支持音频
int iStreamType; ///< 码流类型,capture_channel_t
unsigned int uiCompression; ///< capture_comp_t的掩码
unsigned int uiResolution; ///< SDK_CAPTURE_SIZE_t的掩码
}SDK_EncodeInfo;
/// 编码能力
typedef struct CONFIG_EncodeAbility
{
unsigned int iMaxEncodePower; ///< 支持的最大编码能力
int iChannelMaxSetSync; ///< 每个通道分辨率是否需要同步 0-不同步, 1 -同步
unsigned int nMaxPowerPerChannel[NET_MAX_CHANNUM]; ///< 每个通道支持的最高编码能力
unsigned int ImageSizePerChannel[NET_MAX_CHANNUM]; ///< 每个通道支持的图像分辨率
unsigned int ExImageSizePerChannel[NET_MAX_CHANNUM]; ///< 每个通道支持的辅码流图像分辨率
SDK_EncodeInfo vEncodeInfo[SDK_CHL_FUNCTION_NUM]; ///< 编码信息,暂时最大就4中码流
SDK_EncodeInfo vCombEncInfo[SDK_CHL_FUNCTION_NUM]; ///< 组合编码信息,暂时最大就4中码流
int iMaxBps; ///< 最高码流Kbps
unsigned int ExImageSizePerChannelEx[NET_MAX_CHANNUM][SDK_CAPTURE_SIZE_EXT_V3_NR]; ///< 每个通道支持的辅码流图像分辨率
}CONFIG_EncodeAbility;
// 串口协议
enum SDK_CommProtocol
{
SDK_CONSOLE = 0,
SDK_KEYBOARD,
SDK_COM_TYPES,
};
/// 串口协议
typedef struct SDK_COMMFUNC
{
//每个协议最多由64个字符组成
int nProNum;
char vCommProtocol[100][32];
}SDK_COMMFUNC;
/// 云台协议
typedef struct SDK_PTZPROTOCOLFUNC
{
//每个协议最多由64个字符组成
int nProNum;
char vPTZProtocol[100][NET_MAX_PTZ_PROTOCOL_LENGTH];
}SDK_PTZPROTOCOLFUNC;
/// 区域遮挡能力集
typedef struct SDK_BlindDetectFunction
{
int iBlindConverNum; ///< 区域遮挡块数
}SDK_BlindDetectFunction;
/// 动检区域能力集
typedef struct SDK_MotionDetectFunction
{
int iGridRow;
int iGridColumn;
}SDK_MotionDetectFunction;
/// 支持的DDNS类型
typedef struct SDK_DDNSServiceFunction
{
int nTypeNum;
char vDDNSType[NET_MAX_DDNS_TYPE][64];
}SDK_DDNSServiceFunction;
/// 支持语言
typedef struct SDK_MultiLangFunction
{
//每个协议最多由64个字符组成
int nLangNum;
char vLanguageName[128][64];
}SDK_MultiLangFunction;
/// 支持的视频制式
typedef struct SDK_MultiVstd
{
//每个协议最多由3个字符组成
int nVstdNum;
char vVstdName[3][64];
}SDK_MultiVstd;
/// 编码功能
enum SDK_EncodeFunctionTypes
{
SDK_ENCODE_FUNCTION_TYPE_DOUBLE_STREAM, ///< 双码流功能
SDK_ENCODE_FUNCTION_TYPE_COMBINE_STREAM, ///< 组合编码功能
SDK_ENCODE_FUNCTION_TYPE_SNAP_STREAM, ///< 抓图功能
SDK_ENCODE_FUNCTION_TYPE_WATER_MARK, ///< 水印功能
SDK_ENCODE_FUNCTION_TYPE_IFRAME_RANGE, ///< I帧间隔
SDK_ENCODE_FUNCTION_TYPE_LOW_BITRATE, // 低码流
SDK_ENCODE_FUNCTION_TYPE_NR,
};
/// 报警功能
enum SDK_AlarmFucntionTypes
{
SDK_ALARM_FUNCTION_TYPE_MOTION_DETECT, ///< 动态检测
SDK_ALARM_FUNCTION_TYPE_BLIND_DETECT, ///< 视屏遮挡
SDK_ALARM_FUNCTION_TYPE_LOSS_DETECT, ///< 视屏丢失
SDK_ALARM_FUNCTION_TYPE_LOCAL_ALARM, ///< 本地报警
SDK_ALARM_FUNCTION_TYPE_NET_ALARM, ///< 网络报警
SDK_ALARM_FUNCTION_TYPE_IP_CONFLICT, ///< IP地址冲突
SDK_ALARM_FUNCTION_TYPE_NET_ABORT, ///< 网络异常
SDK_ALARM_FUNCTION_TYPE_STORAGE_NOTEXIST, ///< 存储设备不存在
SDK_ALARM_FUNCTION_TYPE_STORAGE_LOWSPACE, ///< 存储设备容量不足
SDK_ALARM_FUNCTION_TYPE_STORAGE_FAILURE, ///< 存储设备访问失败
SDK_ALARM_FUNCTION_TYPE_VIDEOANALYSE,///<视频分析
SDK_ALARM_FUNCTION_TYPE_NET_ABORT_EXTEND, //网络异常扩展
SDK_ALARM_FUNCTION_TYPE_IPC_ALARM, //IPC报警
SDK_ALARM_FUNCTION_TYPE_NR
};
/// 网络服务功能
enum SDK_NetServerTypes
{
SDK_NET_SERVER_TYPES_IPFILTER, ///< 白黑名单
SDK_NET_SERVER_TYPES_DHCP, ///< DHCP功能
SDK_NET_SERVER_TYPES_DDNS, ///< DDNS功能
SDK_NET_SERVER_TYPES_EMAIL, ///< Email功能
SDK_NET_SERVER_TYPES_MULTICAST, ///< 多播功能
SDK_NET_SERVER_TYPES_NTP, ///< NTP功能
SDK_NET_SERVER_TYPES_PPPOE,
SDK_NET_SERVER_TYPES_DNS,
SDK_NET_SERVER_TYPES_ARSP, ///< 主动注册服务
SDK_NET_SERVER_TYPES_3G, ///< 3G拨号
SDK_NET_SERVER_TYPES_MOBILE=10, ///< 手机监控
SDK_NET_SERVER_TYPES_UPNP, ///< UPNP
SDK_NET_SERVER_TYPES_FTP, ///< FTP
SDK_NET_SERVER_TYPES_WIFI, ///
bool vTipShowFunction[SDK_NO_TIP_SHOW_NR]; //报警标签显示SDK_TipShow>
bool vMobileCarFunction[SDK_MOBILEDVR_NR];//车载功能
bool vOtherFunction[SDK_OTHER_NR]; //其他功能OtherFunction
}SDK_SystemFunction;
typedef struct SDK_COMMATTRI
{
int iDataBits; // 数据位取值为5,6,7,8
int iStopBits; // 停止位
int iParity; // 校验位
int iBaudRate; // 实际波特率
}SDK_COMMATTRI;
// 串口配置
typedef struct SDK_CONFIG_COMM_X
{
char iProtocolName[32]; // 串口协议:“Console”
int iPortNo; // 端口号
SDK_COMMATTRI aCommAttri; // 串口属性
}SDK_CONFIG_COMM_X;
typedef struct SDK_CommConfigAll
{
SDK_CONFIG_COMM_X vCommConfig[SDK_COM_TYPES];
}SDK_CommConfigAll;
// 云台设置
typedef struct SDK_STR_CONFIG_PTZ
{
char sProtocolName[NET_MAX_PTZ_PROTOCOL_LENGTH]; // 协议名称
int ideviceNo; // 云台设备地址编号
int iNumberInMatrixs; // 在矩阵中的统一编号
int iPortNo; // 串口端口号 [1, 4]
SDK_COMMATTRI dstComm; // 串口属性
}SDK_STR_CONFIG_PTZ;
//所有通道云台协议
typedef struct SDK_STR_PTZCONFIG_ALL
{
SDK_STR_CONFIG_PTZ ptzAll[NET_MAX_CHANNUM];
}SDK_STR_PTZCONFIG_ALL;
//RS485
typedef struct SDK_STR_RS485CONFIG_ALL
{
SDK_STR_CONFIG_PTZ ptzAll[NET_MAX_CHANNUM];
}SDK_STR_RS485CONFIG_ALL;
typedef struct SDK_CONFIG_WORKSHEET
{
SDK_TIMESECTION tsSchedule[NET_N_WEEKS][NET_N_TSECT]; /*!< 时间段 */
}SDK_CONFIG_WORKSHEET;
/// 录像模式种类
enum SDK_RecordModeTypes
{
SDK_RECORD_MODE_CLOSED, ///< 关闭录像
SDK_RECORD_MODE_MANUAL, ///< 手动录像
SDK_RECORD_MODE_CONFIG, ///< 按配置录像
SDK_RECORD_MODE_NR,
};
///< 录像设置
typedef struct SDK_RECORDCONFIG
{
int iPreRecord; ///< 预录时间,为零时表示关闭
bool bRedundancy; ///< 冗余开关
bool bSnapShot; ///< 快照开关
int iPacketLength; ///< 录像打包长度(分钟)[1, 255]
int iRecordMode; ///< 录像模式,0 关闭,1 禁止 2 配置
SDK_CONFIG_WORKSHEET wcWorkSheet; ///< 录像时间段
unsigned int typeMask[NET_N_WEEKS][NET_N_TSECT]; ///< 录像类型掩码
}SDK_RECORDCONFIG;
//录像设置结构体
typedef struct SDK_RECORDCONFIG_ALL
{
SDK_RECORDCONFIG vRecordConfigAll[NET_MAX_CHANNUM+NET_MAX_CHANNUM];
}SDK_RECORDCONFIG_ALL;
///< 图片设置
typedef struct SDK_SnapshotConfig
{
int iPreSnap; ///< 预抓图片数
bool bRedundancy; ///< 冗余开关
int iSnapMode; ///< 录像模式,见RecordModeTypes
SDK_CONFIG_WORKSHEET wcWorkSheet; ///< 录像时间段
unsigned int typeMask[NET_N_WEEKS][NET_N_TSECT]; ///< 录像类型掩码,见enum RecordTypes
}SDK_SnapshotConfig;
typedef struct SDK_SnapshotConfigAll
{
SDK_SnapshotConfig vSnapshotConfigAll[NET_MAX_CHANNUM];
}SDK_SnapshotConfigAll;
//报警相关结构体
// 云台联动结构
typedef struct SDK_PtzLinkConfig
{
int iType; // 联动的类型
int iValue; // 联动的类型对应的值
}SDK_PtzLinkConfig;
#define CHANNELNAME_MAX_LEN 64 //通道名称最大长度
typedef struct SDK_EventHandler
{
unsigned int dwRecord; // 录象掩码
int iRecordLatch; // 录像延时:10?300 sec
unsigned int dwTour; // 轮巡掩码
unsigned int dwSnapShot; // 抓图掩码
unsigned int dwAlarmOut; // 报警输出通道掩码
unsigned int dwMatrix; // 矩阵掩码
int iEventLatch; // 联动开始延时时间,s为单位
int iAOLatch; // 报警输出延时:10?300 sec
SDK_PtzLinkConfig PtzLink[NET_MAX_CHANNUM]; // 云台联动项
SDK_CONFIG_WORKSHEET schedule; // 录像时间段
bool bRecordEn; // 录像使能
bool bTourEn; // 轮巡使能
bool bSnapEn; // 抓图使能
bool bAlarmOutEn; // 报警使能
bool bPtzEn;
// 云台联动使能
bool bTip; // 屏幕提示使能
bool bMail; // 发送邮件
bool bMessage; // 发送消息到报警中心
bool bBeep; // 蜂鸣
bool bVoice; // 语音提示
bool bFTP; // 启动FTP传输
bool bMatrixEn; // 矩阵使能
bool bLog; // 日志使能
bool bMessagetoNet; // 消息上传给网络使能
bool bShowInfo; // 是否在GUI上和编码里显示报警信息
unsigned int dwShowInfoMask; // 要联动显示报警信息的通道掩码
char pAlarmInfo[CHANNELNAME_MAX_LEN];//要显示的报警信息
bool bShortMsg; //发送短信
bool bMultimediaMsg; //发送彩信
}SDK_EventHandler;
enum SDK_ANALYSE_MODE
{
SDK_ANALYSE_TRIPWIRE = 0, //单绊线
SDK_ANALYSE_PERIMETER //周界检测
};
/** 周界检测模式 */
enum SDK_URP_PERIMETER_MODE_E
{
SDK_URP_PMODE_INTRUSION = 0, /**< 入侵 */
SDK_URP_PMODE_ENTER, /**< 进入 */
SDK_URP_PMODE_EXIT /**< 离开 */
};
/** 最大边界点数 */
#define SDK_MAX_BOUNDARY_POINT_NUM 8
#define SDK_MAX_POINT_NUM 4
#define SDK_NAME_BUF_SIZE 16
/** 坐标点 */
typedef struct URP_SDK_POINT_S
{
short X; /**< x */
short Y; /**< y */
}URP_SDK_POINT_S;
/** 线结构 */
typedef struct SDK_URP_LINE_S
{
URP_SDK_POINT_S stStartPt; /**< 线段起点 */
URP_SDK_POINT_S stEndPt; /**< 线段终点 */
}SDK_URP_LINE_S;
typedef struct SDK_URP_POLYGON_REGION_S
{
int iValid;
int iPointNum;
URP_SDK_POINT_S astPoint[SDK_MAX_BOUNDARY_POINT_NUM];
}SDK_URP_POLYGON_REGION_S;
/** URP周界检测边界点 */
typedef struct SDK_URP_PERIMETER_LIMIT_BOUNDARY_S
{
int iBoundaryPtNum; /**< 边界点数目 */
URP_SDK_POINT_S astBoundaryPts[SDK_MAX_BOUNDARY_POINT_NUM]; /**< 边界点集合 */
}SDK_URP_PERIMETER_LIMIT_BOUNDARY_S;
/** URP周界检测限制参数 */
typedef struct SDK_URP_PERIMETER_LIMIT_PARA_S
{
int iMinDist; /**< 最小像素距离 */
int iMinTime; /**< 最短时间 */
int iDirectionLimit; /**< 是否做方向限制 */
int iForbiddenDirection; /**< 禁止方向角度(单位: 角度) */
SDK_URP_PERIMETER_LIMIT_BOUNDARY_S stBoundary; /**< 周界边界区域 */
}SDK_URP_PERIMETER_LIMIT_PARA_S;
/** URP周界检测规则参数 */
typedef struct SDK_URP_PERIMETER_RULE_PARA_S
{
int iTypeLimit; /**< 目标类型限制 */
int iTypeHuman; /**< 目标类别:人(限定类型时使用) */
int iTypeVehicle; /**< 目标类别:车 */
int iMode; /**< 周界模式 */
SDK_URP_PERIMETER_LIMIT_PARA_S stLimitPara; /**< 周界限制参数 */
}SDK_URP_PERIMETER_RULE_PARA_S;
// ----------------------------------------------------------------------
// 绊线数据结构
/** URP单绊线最多条数 */
#define SDK_URP_MAX_TRIPWIRE_CNT 8
/** URP单绊线结构 */
typedef struct SDK_URP_TRIPWIRE_S
{
int iValid; /**< 是否有效 */
int iIsDoubleDirection; /**< 表示该绊线是否为双向绊线(0: 否, 1: 是) */
int iForbiddenDirection; /**< 单绊线禁止方向*/
SDK_URP_LINE_S stLine; /**< 单绊线位置 */
}SDK_URP_TRIPWIRE_S;
/** URP单绊线限制参数 */
typedef struct SDK_URP_TRIPWIRE_LIMIT_PARA_S
{
int iMinDist; /**< 最小像素距离 */
int iMinTime; /**< 最短时间 */
}SDK_URP_TRIPWIRE_LIMIT_PARA_S;
/** URP单绊线规则参数 */
typedef struct SDK_URP_TRIPWIRE_RULE_PARA_S
{
int iTypeLimit; /**< 目标类型限制 */
int iTypeHuman; /**< 目标类别:人(限定类型时使用) */
int iTypeVehicle; /**< 目标类别:车 */
SDK_URP_TRIPWIRE_S astLines[SDK_URP_MAX_TRIPWIRE_CNT]; /**< 单绊线 */
SDK_URP_TRIPWIRE_LIMIT_PARA_S stLimitPara; /**< 单绊线限制参数 */
}SDK_URP_TRIPWIRE_RULE_PARA_S;
/** URP目标输出灵敏度级别 */
enum SDK_SENSITIVITY_LEVEL_E
{
SDK_HIGH_LEVEL_SENSITIVITY, /**< 高灵敏度 */
SDK_MIDDLE_LEVEL_SENSITIVITY, /**< 中灵敏度 */
SDK_LOW_LEVEL_SENSITIVITY /**< 低灵敏度 */
};
/** 算法模块 */
enum SDK_MODULE_TYPE
{
SDK_MODULE_TYPE_PEA = 0,
SDK_MODULE_TYPE_OSC,
SDK_MODULE_TYPE_AVD,
SDK_MODULE_TYPE_ALL
};
// ----------------------------------------------------------------------
// 下面开始是自定义结构
typedef struct SDK_PEA_RULE_S
{
int iShowTrack; /// 是否显示轨迹
int iShowRule; /// 是否显示规则
int iLevel; /// 警戒级别(灵敏度)0:高级(默认值);1:中级;2:低级;
int iPerimeterEnable; /// 周界规则使能
SDK_URP_PERIMETER_RULE_PARA_S stPerimeterRulePara; /**< 周界检测 */
int iTripWireEnable; /// 单绊线规则使能
SDK_URP_TRIPWIRE_RULE_PARA_S stTripwireRulePara; /**< 单绊线检测 */
}SDK_PEA_RULE_S;
/// 算法能力结构
typedef struct SDK_CAPS /// 置1表示该通道支持对应的智能算法,置0表示不支持。
{
int dwPEA;
int dwAVD;
int dwVFD;
int dwAAI;
int dwOSC;
int iResv[3];
}SDK_CAPS;
typedef struct SDK_PEA_STATUS_S
{
int dwPerimeter; /// 入侵检测状态,包括了伴线和周界,,uint值是各个报警输入通道报警状态的掩码。
/// 低通道在低位,高通道在高位。报警置1,无报警置0,不存在的通道置0。
int iResv[4];
int avdStatue;
}SDK_PEA_STATUS_S;
//物品遗留-begin
#define NET_MAX_OSC_NUM 4
#define NET_MAX_POINT_NUM 4
#define NET_NAME_BUF_SIZE 16
typedef struct SDK_URP_OSC_SPECL_REGIONS_S
{
int nValid; //是否有效
char chName[NET_NAME_BUF_SIZE]; //区域名称
SDK_URP_POLYGON_REGION_S stOscRg; //要检测区域定义
SDK_URP_POLYGON_REGION_S astSubRgA; //检测区域中的无效子区域
SDK_URP_POLYGON_REGION_S astSubRgB; //检测区域中的无效子区域
SDK_URP_POLYGON_REGION_S astSubRgC; //检测区域中的无效子区域
}SDK_URP_OSC_SPECL_REGIONS_S;
typedef struct SDK_URP_OSC_LMT_PARA_S
{
int nTimeMin; //时间约束
int nSizeMin; //最小尺寸
int nSizeMax; //最大尺寸
}SDK_URP_OSC_LMT_PARA_S;
typedef struct SDK_URP_OSC_RULE_PARA_S
{
int nSceneType; //场景类型
int nCameraType; //相机类型
SDK_URP_OSC_SPECL_REGIONS_S astSpclRgs[NET_MAX_OSC_NUM]; //要处理的区域个数
SDK_URP_OSC_LMT_PARA_S stOscPara; //一些约束
}SDK_URP_OSC_RULE_PARA_S;
typedef struct SDK_OSC_RULE_S
{
int iShowTrack; /// 是否显示轨迹
int iShowRule; /// 是否显示规则
int iLevel; /// 警戒级别0:非警报(默认值);1:低级;2:中级;3: 高级
int iAbandumEnable; /// 物品遗留使能
SDK_URP_OSC_RULE_PARA_S stObjAbandumRulePara; /// 物品遗留参数
int iStolenEnable; /// 物品被盗使能
SDK_URP_OSC_RULE_PARA_S stObjStolenRulePara; /// 物品被盗参数
int iNoParkingEnable; /// 非法停车使能
SDK_URP_OSC_RULE_PARA_S stNoParkingRulePara; /// 非法停车参数
}SDK_OSC_RULE_S;
typedef struct SDK_AVD_RULE_S
{
int iLevel; /// 灵敏度档位,1-5档,数值越大越灵敏越易报警
int itBrightAbnmlEnable; ///< 亮度异常使能
int iClarityEnable; ///< 清晰度检测使能
int iNoiseEnable; ///< 噪声检测使能
int iColorEnable; ///< 偏色检测使能
int iFreezeEnable; ///< 画面冻结检测使能
int iNosignalEnable; ///< 信号缺失检测使能
int iChangeEnable; ///< 场景变换检测使能
int iInterfereEnable; ///< 人为干扰检测使能
int iPtzLoseCtlEnable; ///< PTZ失控检测使能
}SDK_AVD_RULE_S;
/** 坐标点 */
typedef struct SDK_URP_IMP_POINT_S
{
short s16X; /**< x */
short s16Y; /**< y */
}SDK_URP_IMP_POINT_S;
typedef struct SDK_CPC_RULE_S
{
SDK_URP_IMP_POINT_S stRulePoint[4]; ///检测规则,需要画满4个点
int s32Sizemin; ///最小像距(0,height/2)
int s32Sizemax; ///最大像距(sizemin, height/2)
int s32Countmax; ///最大目标数[1~15],
int s32Sensitivity; /// 灵敏度档位,1-5档,数值越大越灵敏越易报警
unsigned int u32Flag; ///标志位,用来判断进出,默认设0
int s32EnterDirection; ///进入的方向
}SDK_CPC_RULE_S;
//各种算法的规则配置集合
typedef struct SDK_RULECONFIG
{
SDK_PEA_RULE_S stRulePea; //周界检测与绊线配置
SDK_OSC_RULE_S stRuleOSC; //物品盗移、滞留,非法停车配置
SDK_AVD_RULE_S stRuleAVD;//异常视频信号诊断配置
SDK_CPC_RULE_S stRuleCPC; //人头计数算法配置
}SDK_RULECONFIG;
//一个通道的智能分析配置
typedef struct SDK_ANALYSECONFIG
{
bool bEnable; //是否启用视频分析功能
int moduleType; //使用的那种算法模块
SDK_EventHandler hEvent; //联动事件
SDK_RULECONFIG stRuleConfig; //各种算法的规则配置
}SDK_ANALYSECONFIG;
//所有通道的智能分析配置
typedef struct SDK_ANALYSECONFIG_ALL
{
SDK_ANALYSECONFIG vAnalyzeAll[NET_MAX_CHANNUM];
}SDK_ANALYSECONFIG_ALL;
//智能分析能力
typedef struct SDK_ANALYZEABILITY
{
UINT uIntelPEA; //智能PEA支持,位对应通道
UINT uAlgorithmPEA;//PEA支持的算法类型,例如拌线
UINT uIntelOSC; //智能OSC支持,位对应通道
UINT uAlgorithmOSC;//OSC支持的算法类型
UINT uIntelAVD; //智能AVD支持,位对应通道
UINT uAlgorithmAVD;//AVD支持的算法类型
UINT uIntelCPC; //人流量记数支持,位对应通道
UINT uAlgorithmCPC;//CPC支持的算法类型
}SDK_ANALYZEABILITY;
///< 动态检测设置
typedef struct SDK_MOTIONCONFIG
{
bool bEnable; // 动态检测开启
int iLevel; // 灵敏度
unsigned int mRegion[NET_MD_REGION_ROW]; // 区域,每一行使用一个二进制串
SDK_EventHandler hEvent; // 动态检测联动
}SDK_MOTIONCONFIG;
/// 全通道动态检测配置
typedef struct SDK_MOTIONCONFIG_ALL
{
SDK_MOTIONCONFIG vMotionDetectAll[NET_MAX_CHANNUM];
}SDK_MOTIONCONFIG_ALL;
///< 遮挡检测配置
typedef struct SDK_BLINDDETECTCONFIG
{
bool bEnable; ///< 遮挡检测开启
int iLevel; ///< 灵敏度:1?6
SDK_EventHandler hEvent; ///< 遮挡检测联动
}SDK_BLINDDETECTCONFIG;
/// 全通道遮挡检测配置
typedef struct SDK_BLINDDETECTCONFIG_ALL
{
SDK_BLINDDETECTCONFIG vBlindDetectAll[NET_MAX_CHANNUM];
}SDK_BLINDDETECTCONFIG_ALL;
///< 基本事件结构
typedef struct SDK_VIDEOLOSSCONFIG
{
bool bEnable; ///< 使能
SDK_EventHandler hEvent; ///< 处理参数
}SDK_VIDEOLOSSCONFIG;
/// 所有通道的基本时间结构
typedef struct SDK_VIDEOLOSSCONFIG_ALL
{
SDK_VIDEOLOSSCONFIG vGenericEventConfig[NET_MAX_CHANNUM];
}SDK_VIDEOLOSSCONFIG_ALL;
///< 报警输入配置
typedef struct SDK_ALARM_INPUTCONFIG
{
bool bEnable; ///< 报警输入开关
int iSensorType; ///< 传感器类型常开 or 常闭
SDK_EventHandler hEvent; ///< 报警联动
}SDK_ALARM_INPUTCONFIG;
///< 所有通道的报警输入配置
typedef struct SDK_ALARM_INPUTCONFIG_ALL
{
SDK_ALARM_INPUTCONFIG vAlarmConfigAll[NET_MAX_CHANNUM];
}SDK_ALARM_INPUTCONFIG_ALL;
///< 网路报警
typedef struct SDK_NETALARMCONFIG
{
bool bEnable; ///< 使能
SDK_EventHandler hEvent; ///< 处理参数
}SDK_NETALARMCONFIG;
/// 所有通道的网路报警结构
typedef struct SDK_NETALARMCONFIG_ALL
{
SDK_NETALARMCONFIG vNetAlarmConfig[NET_MAX_CHANNUM];
}SDK_NETALARMCONFIG_ALL;
///< 本地报警输出配置
typedef struct SDK_AlarmOutConfig
{
int nAlarmOutType; ///< 报警输出类型: 配置,手动,关闭
int nAlarmOutStatus; ///< 报警状态: 0:打开 1;闭合
}SDK_AlarmOutConfig;
//< 硬盘容量不足事件剩余容量类型
enum SDK_StorageLowSpaceType
{
SDK_PERSENT = 0,
SDK_MB,
SDK_GB,
};
///< 硬盘容量不足事件结构
typedef struct SDK_StorageLowSpaceConfig
{
bool bEnable;
int iLowerLimit; ///< 硬盘剩余容量下限, 百分数
SDK_EventHandler hEvent; ///< 处理参数
bool bRecordTimeEnable;
int iRecordTime; ///<录像天数
int iLowerLimitSpace; ///< 硬盘剩余容量MB或者GB为单位
int EnableType; ///< 0为用百分比,1为用MB,见枚举StorageLowSpaceType
}SDK_StorageLowSpaceConfig;
///< 所有通道的报警输出配置
typedef struct SDK_AlarmOutConfigAll
{
SDK_AlarmOutConfig vAlarmOutConfigAll[NET_MAX_CHANNUM];
}SDK_AlarmOutConfigAll;
/// 所有通道的解码器地址设置V2版本
typedef struct SDK_AbilitySerialNo
{
char serialNo[NET_MAX_SERIALNO_LENGTH];
char productType[NET_MAX_SERIALNO_LENGTH];
}SDK_AbilitySerialNo;
///< 驱动器信息结构
typedef struct SDK_DriverInformation
{
int iDriverType; ///< 驱动器类型
bool bIsCurrent; ///< 是否为当前工作盘
unsigned int uiTotalSpace; ///< 总容量,MB为单位
unsigned int uiRemainSpace; ///< 剩余容量,MB为单位
int iStatus; ///< 错误标志,文件系统初始化时被设置
int iLogicSerialNo; ///< 逻辑序号
SDK_SYSTEM_TIME tmStartTimeNew; ///< 新录像时间段的开始时间
SDK_SYSTEM_TIME tmEndTimeNew; ///< 新录像时间段的结束时间
SDK_SYSTEM_TIME tmStartTimeOld; ///< 老录像时间段的开始时间
SDK_SYSTEM_TIME tmEndTimeOld; ///< 老录像时间段的结束时间
}SDK_DriverInformation;
enum
{
SDK_MAX_DRIVER_PER_DISK = 4, ///< 每个磁盘最多的分区数
SDK_MAX_DISK_PER_MACHINE = 8, ///< 最多支持8块硬盘
};
//硬盘管理
typedef struct SDK_STORAGEDISK
{
int iPhysicalNo;
int iPartNumber; // 分区数
SDK_DriverInformation diPartitions[SDK_MAX_DRIVER_PER_DISK];
}SDK_STORAGEDISK;
typedef struct SDK_StorageDeviceInformationAll
{
int iDiskNumber;
SDK_STORAGEDISK vStorageDeviceInfoAll[SDK_MAX_DISK_PER_MACHINE];
}SDK_StorageDeviceInformationAll;
/// 存储设备控制类型
enum SDK_StorageDeviceControlTypes
{
SDK_STORAGE_DEVICE_CONTROL_SETTYPE, ///< 设置类型
SDK_STORAGE_DEVICE_CONTROL_RECOVER, ///< 恢复错误
SDK_STORAGE_DEVICE_CONTROL_PARTITIONS, ///< 分区操作
SDK_STORAGE_DEVICE_CONTROL_CLEAR, ///< 清除操作
SDK_STORAGE_DEVICE_CONTROL_NR,
};
/// 清除磁盘数据类型
enum SDK_StorageDeviceClearTypes
{
SDK_STORAGE_DEVICE_CLEAR_DATA, ///< 清除录像数据
SDK_STORAGE_DEVICE_CLEAR_PARTITIONS, ///< 清除分区
SDK_STORAGE_DEVICE_CLEAR_NR,
};
/// 驱动器类型
enum SDK_FileSystemDriverTypes
{
SDK_DRIVER_READ_WRITE = 0, ///< 读写驱动器
SDK_DRIVER_READ_ONLY = 1, ///< 只读驱动器
SDK_DRIVER_EVENTS = 2, ///< 事件驱动器
SDK_DRIVER_REDUNDANT = 3, ///< 冗余驱动器
SDK_DRIVER_SNAPSHOT = 4, ///< 快照驱动器
SDK_DRIVER_TYPE_NR = 5, ///< 驱动器类型个数
SDK_DRIVER_UNUSED = 0xff, ///< 没有使用的驱动器结构
};
/// 存储设备控制
typedef struct SDK_StorageDeviceControl
{
int iAction; ///< 见enum SDK_StorageDeviceControlTypes
int iSerialNo; ///< 磁盘序列号
int iPartNo; ///< 分区号
int iType; ///< enum SDK_StorageDeviceClearTypes或者SDK_FileSystemDriverTypes
int iPartSize[4/*MAX_DRIVER_PER_DISK*/]; ///< 各个分区的大小
}SDK_StorageDeviceControl;
/// 设备类型
typedef enum SDK_DeviceType
{
SDK_DEVICE_TYPE_DVR, ///< 普通DVR设备
SDK_DEVICE_TYPE_NVS, ///< NVS设备
SDK_DEVICE_TYPE_IPC, ///< IPC设备
SDK_DEVICE_TYPE_HVR, ///<混合dvr
SDK_DEVICE_TYPE_IVR, ///<智能dvr
SDK_DEVICE_TYPE_MVR, ///<车载dvr
SDK_DEVICE_TYPE_NR
}SDK_DeviceType;
/// 设备信息
typedef struct _H264_DVR_DEVICEINFO
{
char sSoftWareVersion[64]; ///< 软件版本信息
char sHardWareVersion[64]; ///< 硬件版本信息
char sEncryptVersion[64]; ///< 加密版本信息
SDK_SYSTEM_TIME tmBuildTime;///< 软件创建时间
char sSerialNumber[64]; ///< 设备序列号
int byChanNum; ///< 视频输入通道数
int iVideoOutChannel; ///< 视频输出通道数
int byAlarmInPortNum; ///< 报警输入通道数
int byAlarmOutPortNum; ///< 报警输出通道数
int iTalkInChannel; ///< 对讲输入通道数
int iTalkOutChannel; ///< 对讲输出通道数
int iExtraChannel; ///< 扩展通道数
int iAudioInChannel; ///< 音频输入通道数
int iCombineSwitch; ///< 组合编码通道分割模式是否支持切换
int iDigChannel; ///<数字通道数
unsigned int uiDeviceRunTime; ///<系统运行时间
SDK_DeviceType deviceTye; ///设备类型
char sHardWare[64]; ///<设备型号
char uUpdataTime[20]; ///<更新日期 例如 2013-09-03 14:15:13
unsigned int uUpdataType; ///<更新内容
int nLanguage;//国家的语言ID,0:英文/ 1:中文
char sCloudErrCode[NET_MAX_PATH_LENGTH];//云登陆具体错误内容
int status[32];
//判断新过来的连接是不是通过代理转发的,如果是那么按照服务器
//返回的限制条件来限制。
//status[0] 路数限制:0代表不限制, n代表限制n路
//status[1]码流限制。0 :不限制。1限制不能观看主码流。
//status[2]限制时间。0:不限制。n:限制n分钟。
//status[3]限制码率,目前分为四档。0:不限制。1:限制为CIF 6帧 100K ,后续待定
//status[4]保留位,后续扩充。
//其中status[0]和status[1]在此处体现。
//status[2]和status[3]在传输码流的过程中体现
}H264_DVR_DEVICEINFO,*LPH264_DVR_DEVICEINFO;
//主动服务回调数据
typedef struct H264_DVR_ACTIVEREG_INFO
{
char deviceSarialID[64];//设备序列号,如果大于64位则赋值0
H264_DVR_DEVICEINFO deviceInfo;//设备信息
char IP[IP_SIZE]; //外网IP
}H264_DVR_ACTIVEREG_INFO;
///< 自动维护设置
typedef struct SDK_AutoMaintainConfig
{
int iAutoRebootDay; ///< 自动重启设置日期
int iAutoRebootHour; ///< 重启整点时间 [0, 23]
int iAutoDeleteFilesDays; ///< 自动删除文件时间[0, 30]
}SDK_AutoMaintainConfig;
/// 默认配置种类
enum SDK_DefaultConfigKinds
{
SDK_DEFAULT_CFG_GENERAL, // 普通配置
SDK_DEFAULT_CFG_ENCODE, // 编码配置
SDK_DEFAULT_CFG_RECORD, // 录像配置
SDK_DEFAULT_CFG_NET_SERVICE, // 网络服务
SDK_DEFAULT_CFG_NET_COMMON, // 通用网络
SDK_DEFAULT_CFG_ALARM, // 报警
SDK_DEFAULT_CFG_PTZCOMM, // 云台,串口
SDK_DEFAULT_CFG_USERMANAGER, // 用户管理
SDK_DEFAULT_CFG_PREVIEW, // 预览配置
SDK_DEFAULT_CFG_CAMERA_PARAM, // 网络摄像头配置
SDK_DEFAULT_CFG_END,
};
/// 恢复的默认配置种类
typedef struct SDK_SetDefaultConfigTypes
{
bool vSetDefaultKinds[SDK_DEFAULT_CFG_END];
}SDK_SetDefaultConfigTypes;
typedef struct H264_DVR_CLIENTINFO{
int nChannel; //通道号
int nStream; //0表示主码流,为1表示子码流
int nMode; //0:TCP方式,1:UDP方式,2:多播方式,3 - RTP方式,4-音视频分开(TCP)
int nComType; //只对组合编码通道有效, 组合编码通道的拼图模式
void* hWnd;
#ifndef OS_IOS
H264_DVR_CLIENTINFO()
{
hWnd=0;
}
#endif
}*LPH264_DVR_CLIENTINFO;
// 媒体查询类型(Media Search Type)
typedef enum EMSType
{
EMSType_none = 0, // 未指定;兼容原类型定义SDK_File_Type
EMSType_h264 = 1, // 录像(h264)
EMSType_jpg = 2, // 图片 (jpg)
EMSType_mp4 = 3, // MP4录像 (mp4)
EMSType_idximg = 4, // 索引图片 (idximg)
}EMSType;
// 媒体查询子类型(Media Search SubType)
typedef enum EMSSubType
{
EMSSubType_ALL = 0x3FFFFFF,
EMSSubType_ALERT = 0, // 外部报警录像/图片('A')
EMSSubType_DYNAMIC = 12, // 视频侦测录像/图片('M')
EMSSubType_HAND = 7, // 手动录像/手动抓图('H')
EMSSubType_SPT_KEY = 10, // 运动相机关键录像('K')
EMSSubType_KEY = 10, // 普通设备关键录像('K')
EMSSubType_URGENT = 21, // 紧急录像('V')
EMSSubType_ORIGINAL = 17, // 原始录像(注意此种Type类型为mp4)('R')
EMSSubType_INVASION = 8, // 入侵('I')
EMSSubType_STRANDED = 18, // 盗移、滞留('S')
EMSSubType_FACE = 5, // 人脸识别录像('F')
EMSSubType_CARNO = 13, // 车牌识别('N')
EMSSubType_CHANGE = 6, // 场景切换('G')
}EMSSubType;
// 媒体查询返回子类型-位标识(Media Search SubType)
typedef enum EMRType
{
EMRType_ALERT = 0x00, // 外部报警录像/图片
EMRType_DYNAMIC = 0x01, // 视频侦测录像/图片
EMRType_HAND = 0x04, // 手动录像/手动抓图
EMRType_SPT_KEY = 0x05, // 运动相机关键录像
EMRType_KEY = 0x09, // 普通设备关键录像
EMRType_URGENT = 0x06, // 紧急录像
EMRType_ORIGINAL = 0x07, // 原始录像
EMRType_INVASION = 0x05, // 入侵
EEMRType_STRANDED = 0x06, // 盗移、滞留
EMRType_FACE = 0x07, // 人脸识别录像
EMRType_CARNO = 0x08, // 车牌识别
EMRType_CHANGE = 0x06, // 场景切换
}EMRType;
typedef enum SDK_File_Type
{
SDK_RECORD_ALL = 0, // 全部录像(查询类型:h264/子类型:*)
SDK_RECORD_ALARM = 1, // 外部报警录像(查询类型:h264/子类型:A)
SDK_RECORD_DETECT = 2, // 视频侦测录像(查询类型:h264/子类型:M)
SDK_RECORD_REGULAR = 3, // 普通录像(查询类型:h264/子类型:*)
SDK_RECORD_MANUAL = 4, // 手动录像(查询类型:h264//子类型:H)
SDK_RECORD_KEY = 5, // 关键录像(查询类型:h264/子类型:K)
SDK_RECORD_URGENT = 6, // 紧急录像(查询类型:h264/子类型:V)
SDK_RECORD_ORIGINAL = 7, // 原始录像(查询类型:mp4/子类型:R)
SDK_PIC_ALL = 10, // 全部图片(查询类型:jpg/子类型:*)
SDK_PIC_ALARM = 11, // 外部报警图片(查询类型:jpg/子类型:A)
SDK_PIC_DETECT = 12, // 视频侦测图片(查询类型:jpg/子类型:M)
SDK_PIC_REGULAR = 13, // 普通图片(查询类型:jpg/子类型:R)
SDK_PIC_MANUAL = 14, // 手动图片(查询类型:jpg/子类型:H)
SDK_PIC_IDXIMG = 15, // 索引图片(查询类型:jpg/子类型:*)
SDK_PIC_KEY = 16, // 关键图片(查询类型:jpg/子类型:K)
SDK_PIC_INDUCTION = 17, // 感应图片(查询子类型:P)
}SDK_File_Type;
typedef struct SMSSearchType
{
unsigned int subType:26; // 详见EMSSubType
unsigned int type:6; // 详见EMSType
// SMSSearchType()
// {
// this->type = EMSType_h264;
// this->subType = EMSSubType_ALL;
// };
//
// // 新的赋值方式,只查询一种(推荐使用)
// SMSSearchType(EMSType t, EMSSubType st)
// {
// this->type = t;
// if(EMSSubType_ALL == st)
// {
// this->subType = EMSSubType_ALL;
// }
// else
// {
// this->subType = (0x1 << st);
// }
// };
//
// // 新的赋值方式,叠加查询多种类型(推荐使用)
// // st = (1 << EMRType_INVASION) | (1 << EMSSubType_STRANDED)
// // 表示查询入侵&盗移录像
// SMSSearchType(EMSType t, unsigned int st)
// {
// this->type = t;
// this->subType = st;
// };
//
// // 老的赋值方式(兼容老版本)
// SMSSearchType(SDK_File_Type t)
// {
// this->type = EMSType_none;
// this->subType = t;
// };
//
// SMSSearchType(const unsigned int &t)
// {
// memcpy(this, &t, sizeof(t));
// };
//
// void operator=(const SDK_File_Type t)
// {
// this->type = EMSType_none;
// this->subType = t;
// };
// void operator=(const int &t)
// {
// memcpy(this, &t, sizeof(t));
// };
// void operator=(const unsigned int &t)
// {
// memcpy(this, &t, sizeof(t));
// };
// unsigned int Value()
// {
// unsigned int t;
// memcpy(&t, this, sizeof(t));
// return t;
// };
}SMSSearchType;
//查询录像条件
typedef struct H264_DVR_FINDINFO
{
int nChannelN0; //通道号
unsigned int nFileType; //文件类型, 见SMSSearchType
H264_DVR_TIME startTime;//开始时间
H264_DVR_TIME endTime; //结束时间
char szFileName[32]; //文件名,为空的话,系统处理,有值,系统采用
void *hWnd;
int StreamType; //查询的码流类型,主码流:0,辅码流:1
#ifndef OS_IOS
H264_DVR_FINDINFO()
{
hWnd=0;
StreamType =0;
}
#endif
}H264_DVR_FINDINFO;
//录像文件返回结构体
typedef struct H264_DVR_FILE_DATA
{
int ch; //通道号
int size; //文件大小
char sFileName[108]; //文件名
SDK_SYSTEM_TIME stBeginTime;//文件开始时间
SDK_SYSTEM_TIME stEndTime; //文件结束时间
void *hWnd; //窗口句柄
int StreamType; //码流类型是回放主码流还是辅助码流
#ifndef OS_IOS
H264_DVR_FILE_DATA()
{
hWnd=0;
StreamType =0;
};
#endif
}H264_DVR_FILE_DATA;
//图片下载
typedef struct H264_DVR_FILE_DATA_IMG_LIST
{
int ch; //通道号
int nOrderType; //正倒序标记
int nFileNum; //文件数量
char sFileDirName[108]; //文件名
//char szFileListMsk[10][16]; //掩码(下载序列)
SDK_SYSTEM_TIME stBeginTime;//文件开始时间
SDK_SYSTEM_TIME stEndTime; //文件结束时间
}H264_DVR_FILE_DATA_IMG_LIST;
//回放动作
enum SDK_PlayBackAction
{
SDK_PLAY_BACK_PAUSE, /*= 0 正常 < 0 异常
int elecLevel; //参考电平值
int luminance; //平均亮度
char pVersion[64];//xm 2a版本
char reserve[32];//保留
}SDK_CameraAbility;
//本地播放控制
enum SDK_LoalPlayAction
{
SDK_Local_PLAY_PAUSE, /*
char ProbeNum2; //条件布防:两个下拉框,每个下拉框从 1号到10号探测器选择 ;默认两个为 <1号探测器>
char nProbeType; //条件:下拉框 可选择3种为 <禁止> 默认为 <禁止>
char nGuardType; //闲置布防, 参照GUARDTYEP
int AlarmTime; //警笛开启时间:三位数字从000-999 默认为:180
int nGuardArea; //有线防区类型:八位数字,每位最小0最大3,即00000000 到33333333; 默认:00000000;
char szRemConAddr[4][4]; //遥控器1-4号地址 :八位16进制字符允许空(即0-9 A-F),默认为空;
char szLinDevAddr[6][4]; //联运设备地1-6地址:八位16进制字符允许空(即0-9 A-F),默认为空;
char szProbeAddr[10][4]; //探测器1-10号地址:八位16进制字符允许空(即0-9 A-F),默认为空;
//定时布撤防
char szGuardTime[3][9]; //定时布撤防,每组都为char [8] 类型 即00 00 00 00,表达由开始时分到结束时分,不需要年月日期
}SDK_CONFIG_KAINENG_DEVINFO;
/***联动设置***/
//联动动作枚举
typedef enum SDK_KNAlarmLink
{
SDK_LINK_EMPTY = 0,
SDK_LINK_SWITH,
SDK_LINK_10S,
SDK_LINK_30S,
SDK_LINK_60S,
SDK_LINK_200S,
SDK_LINK_600S,
SDK_LINK_METHOD_1,
SDK_LINK_METHOD_2,
SDK_LINK_MAX,
}SDK_KNALARMLINK;
typedef struct SDK_CONFIG_KAINENG_LINKINFO
{
char eLink[10][7]; //联动设置,取值为联动动作枚举
}SDK_CONFIG_KAINENG_LINKINFO;
//凯能定制,3个界面信息全在这里。
typedef struct SDK_CONFIG_KAINENG_INFO
{
SDK_CONFIG_KAINENG_USERINFO UserInfo;
SDK_CONFIG_KAINENG_DEVINFO DevInfo;
SDK_CONFIG_KAINENG_LINKINFO LinkInfo;
}SDK_CONFIG_KAINENG_INFO;
//搜索设备协议
typedef enum SDK_TransferProtocol_V2
{
SDK_TRANSFER_PROTOCOL_NETIP,
SDK_TRANSFER_PROTOCOL_ONVIF,
SDK_TRANSFER_TRANSFER_PROTOCOL_MAC,
SDK_TRANSFER_PROTOCOL_NAT,
SDK_TRANSFER_PROTOCOL_DAHUA,
SDK_TRANSFER_PROTOCOL_RTSP,
SDK_TRANSFER_PROTOCOL_NR_V2,
SDK_TRANSFER_PROTOCOL_ONVIF_DEFAULT = 128,
SDK_TRANSFER_PROTOCOL_ONVIF_NR_V2
}SDK_TransferProtocol_V2;
typedef struct SDK_EncodeStaticParamV2
{
int profile; //当前静态编码
int reserved1[4]; //保留字段
}SDK_EncodeStaticParamV2;
/*
== DVR静态编码能力集,现在3种
== 0 不支持 1 支持baseline 2 支持main profile 4 支持high profile
== 掩码操作
*/
typedef struct SDK_EncStaticParamAbility
{
unsigned int encStaticParam;
}SDK_EncStaticParamAbility;
//安徽创世C7平台配置
typedef struct SDK_C7PlatformConfig
{
char pServerAddr[64];//平台地址,IP地址或域名
int servPort; //平台端口
char pPUID[32]; //PUID
char pPassword[32]; //密码
char pStatus[64]; //接入状态,在LocalSDK中是可读可写的,其它地方是只读
char pResv[60]; //保留
}SDK_C7PlatformConfig;
///网络键盘
typedef struct SDK_NetKeyboardConfig
{
bool Enable; ///< 是否开启
char sTransProtocol[4]; //传输协议
int ListenPort; //监听端口
char sParserProtocol[32];
int deviceaddr; //设备地址
}SDK_NetKeyboardConfig;
////// 网络键盘协议
typedef struct SDK_NetKeyboardAbility
{
//每个协议最多由64个字符组成
int nTransPNum;
char vTransProtocol[32][NET_MAX_PTZ_PROTOCOL_LENGTH];
int nParserNum;
char vParserProtocol[32][NET_MAX_PTZ_PROTOCOL_LENGTH];
}SDK_NetKeyboardAbility;
//28181协议配置
typedef struct SDK_ASB_NET_VSP_CONFIG
{
bool bCsEnable; //使能标记
char szCsIP[64]; //服务器地址
short sCsPort; //服务器端口
short sUdpPort; //本地绑定udp端口
char szServerNo[64]; //服务器序列号
char szServerDn[64]; //服务器所在的域名称
char szDeviceNO[64]; //设备序列号
char szConnPass[64]; //设备接入密码
int iHsIntervalTime; //心跳间隔时间,单位是秒
int iRsAgedTime; //重新发送注册时间间隔,单位为秒
char Camreaid[NET_MAX_CHANNUM][64]; //设备中摄像头ID
int CamreaLevel[NET_MAX_CHANNUM]; //报警等级
char Alarmid[NET_MAX_CHANNUM][64]; //设备中摄像头ID
int AlarmLevel[NET_MAX_CHANNUM]; //报警等级
unsigned int uiAlarmStateGpinEnable; //外部报警使能
unsigned int uiAlarmStateLoseEnable; //视频丢失告警使能
unsigned int uiAlarmStateMotionEnable;//视频动态侦测告警使能
unsigned int uiAlarmStateBlindEnable; //屏幕遮挡告警使能
unsigned int uiAlarmStatePerformanceEnable; //系统异常告警使能
unsigned int uiAlarmStateConnectEnable; //用户连接告警使能
}SDK_ASB_NET_VSP_CONFIG;
//手机服务配置
typedef struct SDK_PMSConfig
{
bool Enable; ///< 是否开启
char servname[64];
int port;
char boxid[128];
char resume[24]; //保留
}SDK_PMSConfig;
//屏幕提示信息
typedef struct SDK_OSDInfoConfig
{
SDK_VIDEO_WIDGET OSDInfoWidget;
char ppInfo[NET_MAX_LINE_PER_OSD_AREA][NET_CHANNEL_NAME_MAX_LEN];
}SDK_OSDInfoConfig ;
enum SDK_wordEncType
{
SDK_wordEnc_GB2312, //汉字编码GB2312
SDK_wordEnc_Unicode, //万国码 Unicode
SDK_wordEnc_UTF8, //UTF-8
SDK_wordEnc_NR,
};
//所有通道的屏幕提示信息
typedef struct SDK_OSDInfoConfigAll
{
SDK_OSDInfoConfig vOSDInfoAll[NET_MAX_CHANNUM];
int strEnc;//编码格式,默认为UTF-8,不做任何处理;主要用于客户特殊需求,枚举参见SDK_wordEncType
}SDK_OSDInfoConfigAll;
//
typedef struct SDK_KaiCongAlarmConfig
{
bool Enable; ///< 是否开启
char ServerName[NET_NAME_PASSWORD_LEN]; ///< 服务名
int Port; ///< 端口号
char UserName[NET_NAME_PASSWORD_LEN]; ///< 用户名
char Password[NET_NAME_PASSWORD_LEN]; ///< 密码
}SDK_KaiCongAlarmConfig;
//
typedef struct SDK_VideoChannelManage
{
int nHVRCap;
int curMode;
bool bhide[MAX_HVR_CHNCAP_CHN];
SDK_CAPTURE_HVRCAPV2 HVRCap[MAX_HVR_CHNCAP_CHN];
}SDK_VideoChannelManage ;
//PTZ控制能力集
typedef struct SDK_PTZControlAbility
{
unsigned int nPTZPosition;
}SDK_PTZControlAbility;
typedef struct SDK_PositionPoint
{
int iPointStart_x;
int iPointStart_y;
int iPointEnd_x;
int iPointEnd_y;
}SDK_PositionPoint;
typedef struct SDK_XMHeartbeatConfig
{
bool bEnable; ///< 是否开启
int iInterval; ///< 保活间隔时间
char ServerName[NET_NAME_PASSWORD_LEN]; ///< 服务名
int Port; ///< 端口号
char UserName[NET_NAME_PASSWORD_LEN]; ///< 用户名
char Password[NET_NAME_PASSWORD_LEN]; ///< 密码
char resume[24];
}SDK_XMHeartbeatConfig;
typedef struct SDK_MonitorPlatformConfig
{
int Enable; ///< 是否开启
char servname[NET_NAME_PASSWORD_LEN];
int port;
char resume[24];
char agentid[128]; //客户端id,深广平台使用(以SSJC开头)
char type[128]; //
}SDK_MonitorPlatformConfig;
enum SDK_IMG_TYPE
{
SDK_IMG_TYPE_DEFAULT,
SDK_IMG_TYPE_1,
SDK_IMG_TYPE_2,
SDK_IMG_TYPE_NR,
};
//网络摄像头扩展参数
typedef struct SDK_CameraParamEx
{
SDK_GainCfg broadTrends; //宽动态
int style; //enum SDK_IMG_TYPE
unsigned int exposureTime;//实际生效的曝光时间
int Dis ;/**电子防抖设置 0:关闭 1:开启**/
int Ldc; //镜头畸变校正 0:关闭 1:开启**/
int AeMeansure; //**测光模式校正 0:平均测光 1:中央测光**/
int LowLuxMode; //微光模式 mode:0 关闭 1开启 ==only imx291
int res[49]; //冗余
}SDK_CameraParamEx;
// 摄像头所有扩展参数
typedef struct SDK_CameraParamExAll
{
SDK_CameraParamEx vCameraParamExAll[NET_MAX_CHANNUM];
}SDK_CameraParamExAll;
//网络服务定制平台通用配置,以后定制都用这个
typedef struct SDK_NetPlatformCommonCfg
{
int Enable;
int Port; ///< 端口号
char ServerName[NET_NAME_PASSWORD_LEN]; ///< 服务名
char ID[NET_NAME_PASSWORD_LEN];
char UserName[NET_NAME_PASSWORD_LEN]; ///< 用户名
char Password[NET_NAME_PASSWORD_LEN]; ///< 密码
char resume[128]; ///预留
}SDK_NetPlatformCommonCfg;
enum SDK_INFO_NET_LINK_STATUS
{
SDK_INFO_NET_LINK_OK = 0,
SDK_INFO_NET_LINK_FAILED = 1,
SDK_INFO_NET_LINK_NO_DEVICE = 2,
SDK_INFO_NET_LINK_INVALID = 9,
};
enum SDK_POSITIONING_DIRECTION
{
SDK_POS_DIRECTION_EAST = 'E',
SDK_POS_DIRECTION_WEST = 'W',
SDK_POS_DIRECTION_SOUTH = 'S',
SDK_POS_DIRECTION_NORTH = 'N'
};
typedef struct SDK_POSITIONING_POS//经纬度
{
int degree; //以(度/1000)为单位
char direction; //方位 取值如枚举值POSITIONING_DIRECTION所示
char res[3];
}SDK_POSITIONING_POS;
//GPS状态
typedef struct SDK_GPSStatusInfo
{
int positioningStatus; //定位状态,取值如枚举SDK_INFO_NET_LINK_STATUS所述
SDK_POSITIONING_POS longitudePos; //经度
SDK_POSITIONING_POS latitudePos; //纬度
char rev[12];
}SDK_GPSStatusInfo;
//wifi状态
typedef struct SDK_WifiStatusInfo
{
int connectStatus; //wifi连接状态 如枚举SDK_INFO_NET_LINK_STATUS所述
int strength; //信号强度
char rev[24];
}SDK_WifiStatusInfo;
//3G状态
typedef struct SDK_WirelessStatusInfo
{
int connectStatus; //3G连接状态 如枚举SDK_INFO_NET_LINK_STATUS所述
int strength; //信号强度
char rev[24];
}SDK_WirelessStatusInfo;
//主动注册状态
typedef struct SDK_DASStatusInfo
{
int connectStatus; //DAS连接状态 如枚举SDK_INFO_NET_LINK_STATUS所述
char rev[28];
}SDK_DASStatusInfo;
typedef struct SDK_RecordStorageInfo
{
unsigned int bStart;//是否录像标志位
SDK_SYSTEM_TIME beginTime;//录像开始时间
SDK_SYSTEM_TIME endTime;//录像结束时间
unsigned int storageCapacity;//硬盘总容量
unsigned int useCapacity;//使用容量
int res[16];//冗余
}SDK_RecordStorageInfo;
/// 解码延时等级
enum SDK_DecodeDeleyTypes
{
SDK_DecodeDeley_0 = 0,
SDK_DecodeDeley_1,
SDK_DecodeDeley_2,
SDK_DecodeDeley_3,
SDK_DecodeDeley_4,
SDK_DecodeDeley_5,
SDK_DecodeDeley_6,
SDK_DecodeDeley_TYPE_NR,
};
typedef struct SDK_DecodeDeleyTimePrame
{
unsigned int DecodeDeleyTime[SDK_DecodeDeley_TYPE_NR];
}SDK_DecodeDeleyTimePrame;
// 数字通道
typedef struct SDK_DecodeParam
{
int iMaxDeleyTime[NET_MAX_CHANNUM]; // 最大的解码延时
}SDK_DecodeParam;
typedef struct SDK_RecordStateInfo
{
int nchannel;
int RecordState;
}SDK_RecordStateInfo;
//定制视频颜色结构
typedef struct SDK_VIDEOCOLOR_PARAM_EX
{
int BrightnessRef; ///< 亮度ref1,取值0-100。
int ContrastRef; ///< 对比度ref1,取值0-100。
int ContrastThRef; ///< 对比度阀值ref1,取值0-100。
int ContrastSlopeRef; ///< 对比度斜率ref1,取值0-100。
int DarkBlfRef;
int DarkNfRef;
int DarkEcPthRef;
int DarkEcMthRef;
int DarkDcRef;
int CbGain; //high low middle
int CrGain; //higg low middle
int reserved; //保留
}SDK_VIDEOCOLOR_PARAM_EX;
typedef struct SDK_VIDEOCOLOR_PARAM_CUSTOM
{
SDK_VIDEOCOLOR_PARAM_EX VideoColor[3];
int Saturation; ///< 饱和度,取值0-100。
int Gain; ///< 增益,取值0-100。bit7置位表示自动增益,其他位被忽略。
int Acutance; ///< 锐度,取值0-100
int AeWight; //背光补偿
}SDK_VIDEOCOLOR_PARAM_CUSTOM;
enum SDK_FileControlType
{
SDK_FILE_DEL, //删除文件
SDK_FILE_DIR_DEL, //删除文件夹
SDK_FILE_DIR_CLEAR, //清空文件夹
SDK_FILE_NR,
};
typedef struct SDK_NetFileControl
{
int iAction; //enum FileControlType
char strfile[256];
}SDK_NetFileControl;
enum SDK_DecChnStateType
{
SDK_DEC_STA_NONE, //无用
SDK_DEC_STA_NOCONFIG, //未配置
SDK_DEC_STA_NOLOGIN, //未登陆
SDK_DEC_STA_NOCONNECT, //未连接
SDK_DEC_STA_CONNECTED, //已连接
SDK_DEC_STA_LOGIN_FAILED, //登录失败
};
typedef struct SDK_DigitStateInfo
{
int nchannel;
int DigitState; //SDK_DecChnStateType
}SDK_DigitStateInfo;
typedef struct SDK_TitleNameInfo
{
int nchannel;
char titleName[256];
}SDK_TitleNameInfo;
/*
==SDK_TransferProtocol_V2
==第一位代表SDK_TRANSFER_PROTOCOL_ONVIF_DEFAULT = 128,以此内推
*/
typedef struct SDK_AbilityMask
{
unsigned int AbilityPram;
}SDK_AbilityMask;
enum SDK_Music_Play_Action
{
SDK_MUSIC_ACTION_PLAY,
SDK_MUSIC_ACTION_STOP,
SDK_MUSIC_ACTION_PAUSE,
SDK_MUSIC_ACTION_CONTINUE
};
typedef struct SDK_LocalMusicControl
{
int iAction; //参考SDK_Music_Play_Action
char sFileName[20];
}SDK_LocalMusicControl;
/// 音频文件列表信息
typedef struct SDK_MusicFileList
{
int iNumFiles; ///< 文件数量
char sFileName[8][20];
}SDK_MusicFileList;
enum SDK_CAR_BOOT_TYPE
{
SDK_CAR_BOOT_TYPE_SPARK, //点火熄火开关机
SDK_CAR_BOOT_TYPE_TIMING, //定时开关机
SDK_CAR_BOOT_TYPE_NR,
};
//点火开关机延时配置
typedef struct SDK_CarSparkWork
{
int bootDelayMinute; //开机延时分钟数
int shutDelayMinute; //关机延时分钟数
char resv[24]; //保留
}SDK_CarSparkWork;
//车载定时开关机配置
typedef struct SDK_CarTimingWork
{
SDK_TIMESECTION workSection1; //工作时间段1
SDK_TIMESECTION workSection2; //工作时间段2
char resv[32]; //保留
}SDK_CarTimingWork;
typedef struct SDK_CarBootTypeConfig
{
int bootType; //如枚举 SDK_CAR_BOOT_TYPE 所述
SDK_CarSparkWork sparkWorkConfig; //点火开关机配置
SDK_CarTimingWork timingWorkConfig; //定时开关机时间段1
char resv[48];
}SDK_CarBootTypeConfig;
//单个IPC
typedef struct SDK_ALARM_IPCCONFIG
{
bool bEnable; ///< 报警输入开关
int iSensorType; ///< 传感器类型常开 or 常闭
SDK_EventHandler hEvent; ///< 报警联动
}SDK_ALARM_IPCCONFIG;
///< 所有数字通道的报警配置
typedef struct SDK_IPCAlarmConfigAll
{
SDK_ALARM_IPCCONFIG vAlarmConfigAll[NET_DECORDR_CH];
}SDK_IPCAlarmConfigAll;
//百度云
typedef struct SDK_BaiduCloudCfg
{
bool enable;
char APIKey[NET_NAME_TOKEN_LEN]; //应用API密钥
char SecretKey[NET_NAME_TOKEN_LEN]; //应用密钥
char AuthorizationCode[NET_NAME_TOKEN_LEN]; //授权码
char accessToken[NET_NAME_TOKEN_LEN]; //访问权限码
char refreshToken[NET_NAME_TOKEN_LEN]; //刷新权限码
char deviceID[NET_NAME_TOKEN_LEN]; //设备ID
char userCode[NET_NAME_TOKEN_LEN]; //用户授权码
char qrcodeUrl[NET_NAME_TOKEN_LEN]; //二维码
char streamID[NET_NAME_TOKEN_LEN]; //流ID
char describe[NET_NAME_TOKEN_LEN]; //设备名称
int state; //状态
SDK_SYSTEM_TIME refreshTime; //上次刷新Token时间
int channelMain[NET_MAX_CHANNUM]; //是否开启标记
int channelExtra[NET_MAX_CHANNUM]; //是否开启标记
int recordFileMode; //配置录像模式
int recordFileSize; //录像文件大小
int recordFileTime; //录像最长时间
char resume[128]; ///预留
}SDK_BaiduCloudCfg;
//手机订阅数
typedef struct SDK_PhoneInfoNum
{
int nNum;
}SDK_PhoneInfoNum;
typedef struct SDK_LOGIN_CFG//修改前端ip登录用
{
char sUserName[NET_MAX_USER_LENGTH]; ///< 登陆名字
char sPassword[NET_MAX_USER_LENGTH]; ///< 登陆密码
int iEncryptType; ///< 密码加密方式 固定值 1
}SDK_LOGIN_CFG;
typedef struct
{
int ch;
int devtype;
SDK_CONFIG_NET_COMMON netcfg;
SDK_LOGIN_CFG loginPram;
}SDK_IPSetCfg;
//二维
typedef struct SDK_DimenCode
{
int size;
unsigned char code[3920];// 177*177/32*4=3920,局部变量
}SDK_DimenCode;
typedef struct SDK_DimenCodeAll
{
SDK_DimenCode sn;
SDK_DimenCode appIOS;
SDK_DimenCode appAndroid;
SDK_DimenCode otherInfo; //客户自定义信息
}SDK_DimenCodeAll;
//中国电信手机看店平台
typedef struct SDK_MobileWatchCfg
{
int Enable;
char DevID[NET_NAME_ID_LEN]; // 设备编码
char DevKey[NET_NAME_ID_LEN]; // 设备验证码
char ManufacturerNo[NET_NAME_ID_LEN]; // 厂商编号
char Mode[NET_NAME_ID_LEN]; // 设备型号
char GroupAddr[NET_NAME_URL_LEN]; // 集团平台地址
char ProvinceAddr[NET_NAME_URL_LEN]; // 省平台地址
char NatIP[NET_NAME_ID_LEN]; // 设备主服务器接入地址
int NatPort; // 设备主服务器接入端口
char BackupNatIP[NET_NAME_ID_LEN]; // 设备备用服务器接入地址
int BackupNatPort; // 设备备用服务器接入端口
char TurnIP[NET_NAME_ID_LEN]; // TurnServer服务器地址
int TurnPort; // TurnServer服务器端口
char BackupTurnIP[NET_NAME_ID_LEN]; // TurnServer备份服务器地址
int BackupTurnPort; // TurnServer备份服务器端口
char FtpIP[NET_NAME_ID_LEN]; // 图片上传FTP服务器地址
int FtpPort; // 图片上传FTP服务器端口
char FtpAccount[NET_NAME_ID_LEN]; // 图片上传FTP服务器帐号
char FtpPassword[NET_NAME_ID_LEN]; // 图片上传FTP服务器密码
char resume[NET_NAME_URL_LEN]; // 预留
}SDK_MobileWatchCfg;
typedef struct SDK_BrowserLanguageType
{
int type;
}SDK_BrowserLanguageType;
typedef struct SDK_TimeZone
{
int minuteswest; //跟UTC时间的差值,单位分钟,可以为负
int FistFlag; //用于保证第一次使用的时候时间不变
}SDK_TimeZone;
enum SDK_TimeSynTypes
{
SDK_TST_OFF = 0,
SDK_TST_TIME_UTC,
SDK_TST_TIME_LOCAL,
SDK_TST_TIME_ALL,
SDK_TST_NR,
};
// 数字通道时间同步
typedef struct SDK_TimeSynParam
{
int iTimeModel[NET_MAX_CHANNUM]; //参考SDK_TimeSynTypes
}SDK_TimeSynParam;
typedef struct SDK_CustomizeOEMInfo
{
unsigned int typeMask;//类型: BITMSK(BURN_OEM_ID),BITMSK(BURN_OEM_PRODUCT),BITMSK(BURN_OEM_SERIAL)
unsigned int oemID;
unsigned int oemProduct;
unsigned int oemSerial;
}SDK_CustomizeOEMInfo;
typedef struct SDK_DigitDevInfo
{
bool enable; //配置是否可用,本地设备使用
int nCapture;//模拟通道数
int nAudio;//音频通道数
int videoFormat;//视频制式
CONFIG_EncodeAbility ability;//编码能力
}SDK_DigitDevInfo;
typedef struct SDK_EncodeChDisplay
{
unsigned int displayChanelMask; //IE显示的编码配置通道号掩码
}SDK_EncodeChDisplay;
//点间巡航
typedef struct SDK_TourState
{
bool bRunning;
int lineID; //点间巡航线路编号
}SDK_TourState;
//巡迹
typedef struct SDK_PatternState
{
bool bRunning;
int lineID; //巡迹线路编号 (未使用)
}SDK_PatternState;
//线扫
typedef struct SDK_ScanState
{
bool bRunning;
int lineID; //线扫线路编号 (未使用)
}SDK_ScanState;
//水平旋转
typedef struct SDK_PanonState
{
bool bRunning;
int lineID; //水平旋转线路编号 (未使用)
}SDK_PanonState;
//开机转到指定预置点
typedef struct SDK_PresetState
{
bool bEnable;
int iPresetID;
}SDK_PresetState;
//断电前位置
typedef struct SDK_PoweroffState
{
bool bEnable;
int iPresetID;
}SDK_PoweroffState;
//一个通道的云台操作状态
typedef struct SDK_PtzState
{
SDK_TourState tourState;
SDK_PatternState patternState;
SDK_ScanState scanState;
SDK_PanonState panonState;
SDK_PresetState presetState;
SDK_PoweroffState poweroffState;
}SDK_PtzState;
//重启后恢复之前的云台操作状态
typedef struct SDK_ResumePtzState
{
bool bEnable; //是否启用设备重启后恢复云台状态功能
SDK_PtzState ptzStateAll[NET_MAX_CHANNUM];
}SDK_ResumePtzState;
typedef struct SDK_AHDEncodeLMask
{
unsigned int AHDLMask;
}SDK_AHDEncodeLMask;
/// 速度报警类型
enum SDK_SpeedAlarmTypes
{
SDK_SPEED_ALARM_HIGH, // 高速报警
SDK_SPEED_ALARM_LOW, // 低速报警
SDK_SPEED_ALARM_NR
};
///< 速度报警配置
typedef struct SDK_SpeedAlarmConfig
{
bool bEnable; ///< 速度报警开启
int iSpeed; ///< 速度
SDK_EventHandler hEvent; ///< 速度报警联动参数
}SDK_SpeedAlarmConfig;
/// 全部类型的速度报警配置
typedef struct SDK_SpeedAlarmConfigAll
{
SDK_SpeedAlarmConfig vSpeedAlarmAll[SDK_SPEED_ALARM_NR];
}SDK_SpeedAlarmConfigAll;
typedef struct SDK_CorrespondentOwnInfo
{
char brand[64];
char pModel[32];
char pFirmwareVersion[32];
char pHardwareId[32];
int port;
}SDK_CorrespondentOwnInfo;
typedef struct SDK_OSDInfo
{
int index;//设置通道标题和时间标题之外的区域,取值0和1
int nX;//范围0-1000
int nY;//范围0-1000
int nChannel;//要设置的通道
char pOSDStr[128];//要叠加的字符串
}SDK_OSDInfo;
typedef struct SDK_AppDownloadLink
{
bool IOSEnable; //是否显示iphone客户端二维码
bool AndroidEnable;//是否显示安卓客户端二维码
bool SNEnable; //是否显示序列号对应的二维码
bool OtherEnable; //是否显示客户自定义二维码
char inkIOS[128];
char linkAndroid[128];
char nameOther[128]; //客户自定义二维码名称
char linkOther[128]; //客户自定义二维码
}SDK_AppDownloadLink;
typedef struct SDK_UserMap
{
int size;
USER_INFO UserCfg[64];
}SDK_UserMap;
//上传串口数据到指定服务器
typedef struct SDK_NetTransCommData
{
bool bEnable; ///< 是否开启
int SerialType; //串口类型,0表示RS232,1表示RS485
int ServerType; ///协议类型名称,0表示TCP,1表示UDP
char ServerAddr[NET_NAME_PASSWORD_LEN]; //域名或者IP地址。
int ServerPort; //端口;
int ReportTime; //状态消息发送间隔时间,单位分钟
char LastReportTime[16]; //最后一次报告时间(客户增加配置)
char KeyPadNu[32]; //设备编号(客户增加配置)
char ConnStatus[16]; //连接状态(客户增加配置)
}SDK_NetTransCommData;
typedef struct SDK_PhoneInfo
{
char command[NET_NAME_PASSWORD_LEN];
char type[12];
char asid[128];
char username[NET_NAME_PASSWORD_LEN];
char password[NET_NAME_PASSWORD_LEN];
char acme[NET_NAME_PASSWORD_LEN];
char resume[24];
}SDK_PhoneInfo;
enum
{
SDK_MAX_VERSION_NUM = 20,
};
typedef struct SDK_CloudUpgradeVersion
{
char name[128];// 版本名
char date[12];//版本日期,格式:"2014-08-26"
unsigned int length; // 升级文件长度
}SDK_CloudUpgradeVersion;
typedef struct SDK_CloudUpgradeList
{
int num;
SDK_CloudUpgradeVersion versions[SDK_MAX_VERSION_NUM];
}SDK_CloudUpgradeList;
//启动客户demo
typedef struct SDK_NetUseProgram
{
bool bEnable; //是否开启
char UserName[NET_NAME_PASSWORD_LEN]; ///< 用户名
char Password[NET_NAME_PASSWORD_LEN]; ///< 密码
int Port; ///< 端口号
char ServerAddr[NET_NAME_PASSWORD_LEN]; //域名或者IP地址。
char Describe[NET_MAX_RIGTH_NUM]; //设备名称
}SDK_NetUseProgram;
typedef struct I_VERSION_INFO_T
{
char name[128];// 版本名
char date[12];//版本日期,格式:"2014-08-26"
unsigned int length; // 升级文件长度
}I_VERSION_INFO_T;
//wifi模式相关配置,用于行车记录仪自动切换AP模式
typedef struct SDK_NetWifiMode
{
int autoSwitchAPMode; //取值 1:自动切换成AP模式(家用模式) 0:不自动切换
int reserve[7];
}SDK_NetWifiMode;
//消费类产品的录像灯的状态
typedef struct SDK_FbExtraStateCtrl
{
int ison;
}SDK_FbExtraStateCtrl;
typedef struct SDK_AutoSwitch
{
int nStartTime;
int nStopTime;
int nStartDay;
int nStopDay;
bool bEnable;
}SDK_AutoSwitch;
typedef struct SDK_AutoSwitchAll
{
SDK_AutoSwitch Aswitch[10];
}SDK_AutoSwitchAll;
typedef struct SDK_tagPoint
{
int x;
int y;
}SDK_Point;
typedef struct SDK_TitleDot
{
int width;
int height;
char pDotBuf[NET_MAX_TITLE_DOT_BUF_LEN];
}SDK_TitleDot;
typedef struct SDK_PowerSocketSet
{
int nSwitch;
int nLight;
}SDK_PowerSocketSet;
typedef struct SDK_ClientInfo
{
char Description[NET_NAME_PASSWORD_LEN];
char Uuid[NET_NAME_PASSWORD_LEN];
char Phone[NET_NAME_PASSWORD_LEN];
char LoginTime[NET_NAME_PASSWORD_LEN];
char Number[NET_NAME_PASSWORD_LEN];
int Permission;
bool DeleThisClient;
}SDK_ClientInfo;
typedef struct SDK_ClientInfoAll
{
SDK_ClientInfo info[10];
}SDK_ClientInfoAll;
typedef struct SDK_Authority
{
int Level;
int Ability;
}SDK_Authority;
typedef struct SDK_Arm
{
int Guard;
}SDK_Arm;
typedef struct SDK_AlarmInfo_V2
{
char Descrip[64];
char SerialID[64];
char Type[32];
char iEvent[20];
char iStatus[20];
SDK_SYSTEM_TIME SysTime;
}SDK_AlarmInfo_V2;
/// 用户登陆方式
enum SDK_LoginType
{
H264_DVR_LOGIN_TYPE_WEB, ///< WEB登陆(默认)
H264_DVR_LOGIN_TYPE_LOCALUPGRADE, ///< 升级工具(局域网升级)登陆
H264_DVR_LOGIN_TYPE_CLOUDUPGRADE, ///< 云升级登陆
H264_DVR_LOGIN_TYPE_PCCLIENT, ///< PC客户端登陆
H264_DVR_LOGIN_TYPE_MOBILE, ///< 移动终端(IPhone)登陆
H264_DVR_LOGIN_TYPE_FUTRUE_HOME, //未来家庭客户端登陆
H264_DVR_LOGIN_TYPE_XM030,//xmeye客户端登陆
H264_DVR_LOGIN_TYPE_NR, ///< 登陆类型
};
typedef struct SDK_Xpms_Search_AlarmInfo_Req
{
char Uuid[100];
char authCode[100];
SDK_SYSTEM_TIME StarTime; //报警信息查询起始时间
SDK_SYSTEM_TIME EndTime; //报警信息查询结束时间,全0表示当前时间
int Channel; //Channel < 0 表示全部查询,通道号是从0开始的
int AlarmType; //报警类型(暂时无用)
int Number; //请求要查的报警条数 ,Number <= 0 表示查全部
int Index; //需要从查询的结果中哪一条开始取
char Res[32];
}SDK_XPMS_SEARCH_ALARMINFO_REQ;
typedef struct SDK_Xpms_Search_AlarmPic_Req
{
char Uuid[100];
char authCode[100];
#ifdef WIN32
__int64 ID;
#else
long long ID; //报警信息ID号
#endif
char Res[32];
}SDK_XPMS_SEARCH_ALARMPIC_REQ;
// 北京鸿泰恒平台
typedef struct SDK_CONFIG_NET_BJHONGTAIHENG
{
bool bEnable;
char ServerUrl[64]; //服务器地址
char DevID[16]; //设备id
char Password[16]; //设备验证码
char DevModel[16]; //设备型号
char SerialNo[20]; //设备序列号
}SDK_CONFIG_NET_BJHONGTAIHENG;
typedef enum
{
SDK_LocalAlarm = (int)0x00001,
SDK_MotionDetect = (int)0x00002,
}SDK_AlarmRecType;
//云存储配置相关结构体
typedef struct SDK_CloudRecordConfig
{
int EnableMsk; //0全不存,1是定时存,2报警存,3定时&& 报警
int StreamType; //码流类型
int AlarmRecTypeMsk; //需要上传录像的报警类型,AlarmRecType类型掩码
SDK_CONFIG_WORKSHEET wcWorkSheet; //普通录像需存储的时间段
}SDK_CloudRecordConfig;
typedef struct SDK_CloudRecordConfigAll
{
SDK_CloudRecordConfig vRecordConfigAll[NET_MAX_CHANNUM];
}SDK_CloudRecordConfigAll;
// 空闲动作
typedef struct SDK_PtzIdleState
{
bool bEnable; // 空闲动作使能位
int iTime; // 空闲时间 单位: 秒
int iIdleState; // 空闲动作类型
int iId; // 相应空闲动作类型的动作编号
}SDK_PtzIdleState;
typedef struct SDK_PtzIdleStateAll
{
SDK_PtzIdleState pPtzIdleStateAll[NET_MAX_CHANNUM];
}SDK_PtzIdleStateAll;
typedef struct SDK_CameraClearFog
{
bool enable; //0 打开,1 不打开
int level ; // 强度等级[0,100]
char rev[4];
}SDK_CameraClearFog;
typedef struct SDK_CameraClearFogAll
{
SDK_CameraClearFog vCameraClearFogAll[NET_MAX_CHANNUM];
}SDK_CameraClearFogAll;
//机器人马达控制
typedef struct SDK_CameraMotorCtrl
{
bool UDDireOverturn; //上下方向翻转
bool LRDireOverturn; //左右方向翻转
bool UDRestOverturn; //上下限位翻转
bool LRRestOverturn; //左右限位翻转
int rev[8];
}SDK_CameraMotorCtrl;
typedef struct SDK_EncodeAddBeep
{
int Enable; //置1 视频编码每隔30秒beep声,置0没有此功能
char res[4];
}SDK_EncodeAddBeep;
typedef struct SDK_DataLinkConfig
{
int DoProgramEnable;
int NIP2Enable;
}SDK_DataLinkConfig;
//安装位置
typedef enum{
SDK_FISHEYE_APP_CEIL = 0, //天花板
SDK_FISHEYE_APP_TABL = 1, //桌上
SDK_FISHEYE_APP_WALL = 2, //墙上
}SDK_FISHEYE_APP_TYPE_E;
//鱼眼模式
typedef enum{
SDK_FISHEYE_SECENE_ORIG = 0,
SDK_FISHEYE_SECENE_R = 1,
SDK_FISHEYE_SECENE_P180_ALL = 2,
SDK_FISHEYE_SECENE_P180_ONE = 3,
SDK_FISHEYE_SECENE_P180_TWO = 4,
SDK_FISHEYE_SECENE_P360_FULL = 5,
SDK_FISHEYE_SECENE_P360_SEPE = 6,
SDK_FISHEYE_SECENE_P360_HALF = 7,
SDK_FISHEYE_SECENE_ROP_R = 8,
SDK_FISHEYE_SECENE_RORR_R = 9,
SDK_FISHEYE_SECENE_RRRR_R = 10,
SDK_FISHEYE_SECENE_RRP_R = 11,
SDK_FISHEYE_SECENE_P360_FE = 12,
}SDK_FISHEYE_SECENE_E;
typedef struct SDK_FishEyeParam
{
int appType; //如枚举FISHEYE_APP_TYPE_E
int secene; //如枚举FISHEYE_SECENE_E
int duty; // 灯泡亮度 0~100级
unsigned int reserv[7];
}SDK_FishEyeParam;
/////////////////////////硬校正时使用的信息帧内容//////////////////////////
typedef struct SDK_FishEyeFrameHW
{
unsigned char secene; // 参考SDK_FISHEYE_SECENE_E定义,
// 目前只有SDK_FISHEYE_SECENE_P360_FE需要校正
unsigned char resv[3]; // 预留
}SDK_FishEyeFrameHW;
/////////////////////////软校正信息//////////////////////////
typedef enum FISHEYE_LENS_TYPE_E
{
SDK_FISHEYE_LENS_GENERAL = 0,
SDK_FISHEYE_LENS_360VR = 1,
SDK_FISHEYE_LENS_360LVR = 2,
SDK_FISHEYE_LENS_180VR = 3,
SDK_FISHEYE_LENS_DUAL_360VR = 4,
SDK_FISHEYE_LENS_DUAL_180VR = 5,
}FISHEYE_LENS_TYPE_E;
typedef struct SDK_FishEyeFrameSW
{
char version; //结构体的版本号(如果修改下面的成员导致app需要对新老程序分开处理时,则需要让扩展部将参数设置工具中的版本号加1,并修改设备上的默认配置)
char lensType; //镜头类型,如枚举E_FISH_LENS_TYPE
short centerOffsetX; //圆心偏差横坐标 单位:像素点
short centerOffsetY; //圆心偏差纵坐标 单位:像素点
short radius; //半径 单位:像素点
short imageWidth; //圆心校正时的图像宽度 单位:像素点
short imageHeight; //圆心校正时的图像高度 单位:像素点
char viewAngle; //视角 0:俯视 1:平视
char viewMode; //显示模式 0:360VR
char resv[10]; // 预留
}SDK_FishEyeFrameSW;
/////////////////////////普通镜头畸变矫正信息帧内容//////////////////////////
typedef struct SDK_FishEyeFrameCM
{
unsigned char cameraType;
unsigned char resv[7]; // 预留
}SDK_FishEyeFrameCM;
//是否叠加OSD logo
typedef struct SDK_SetLogo
{
int Enable;
int reserve[8];
}SDK_SetLogo;
typedef struct SDK_SparshHeartbeat
{
bool bEnable; ///是否启用
int IntevalTime; ///间隔上报时间
char AlarmType[NET_NAME_PASSWORD_LEN]; ///名称
}SDK_SparshHeartbeat;
typedef struct SDK_SDevicesState
{
int num; //设备数量
char uuid[32][32];//最大32个序列号
int state[32]; //0:不在线,1:在线
}SDK_SDevicesState;
typedef enum SDK_EncMode
{
WIFI_ENC_OPEN = 0,
WIFI_ENC_AES = 1,
WIFI_ENC_TKIP = 2,
WIFI_ENC_WEP =3
}SDK_EncMode;
typedef struct SDK_SWifiInfo
{
char wifiSsid[64];
char wifiPassword[64];
char wifiMac[64]; // 以:分隔的十六进制字符串
char wifiGateWay[64]; // 网关
char wifiSubmark[64]; // 子网掩码
char wifiDNS1[64]; // DNS1
char wifiDNS2[64]; // DNS2
int wifiEncMode; // 加密方式--EncMode
char mobileIp[32];
char mobileMac[32];
}SDK_SWifiInfo;
//客户的nas服务配置
typedef struct SDK_SPVMN_NAS_SERVER
{
char ServerIP[16];
int Port;
char RootDir[256];
char DowloadIP[16];
char DowloadPath[256];
}SDK_SPVMN_NAS_SERVER;
//IE端请求获取升级版本信息
typedef struct SDK_CloudUpgradeVersionReq
{
char uuid[20]; //设备序列号
char devID[32]; //设备类型的ID号
char curVersion[16]; //当前版本日期
char Language[32]; //语言类型
char devType; //类型
char expect; //0表示最新版本1表示查询重要版本
char manual; //1表示手动查询,0表示自动查询
char rev;
}SDK_CloudUpgradeVersionReq;
//后端回复给IE端获取的升级版本信息
typedef struct SDK_CloudUpgradeVersionRep
{
char FileName[128]; //文件名,下载请求时需填这个值
char DevID[32]; //设备类型的ID号
char Date[16]; //版本日期
int FileSize; //升级文件的大小
int FileLevel; //版本重要程度
char ChangeLog[512]; //change log,加到512字节,日志可能有很多
}SDK_CloudUpgradeVersionRep;
//web端发送给后端的升级程序请求
typedef struct SDK_CloudUpgradeStartReq
{
char uuid[20]; //设备序列号
char DevID[32]; //设备类型ID号
char FileName[128]; //升级文件名
char Date[16]; //版本日期
bool manual; //1表示用户手动的升级,0表示自动升级,手机端该值一般传1即可
}SDK_CloudUpgradeStartReq;
//ipv6
typedef struct SDK_IPAddressV6
{
bool bEnable; //是否启用ipv6
char pLocalLinkAddr[32]; //本地链路地址
char pAddr[64]; //ipv6地址
char pGateway[64]; //网关
int iPrefix; //ipv6前缀长度
} SDK_IPAddressV6;
typedef struct SDK_OnlineUpgradeCfg
{
char cEnable; //是否启用在线升级功能
char pServerAddr[63];
int serverPort;
int iFirmwareCheckMode; //是否自动检测有没有新固件,如枚举ENUM_CHECK_FIRMWARE_FREQ
char cAutoUpgrade; //自动升级到新版本
char cAutoUpgradeImp; //只自动升级重要更新
char cIgnoreAllVersion; //忽略所有版本的页面提示
char cIgnoreCurVersion; //忽略当前版本的页面提示,发现更新的版本后也只提示一次
unsigned int IgnoreCurTime; //忽略掉的当前版本的时间,与 bIgnoreCurVersion联用
char cJustImpVersion; //只有重要版本提示
char rev[3];
} SDK_OnlineUpgradeCfg;
//家用产品433报警联动项配置
typedef struct SDK_ConsSensorAlarmCfg
{
bool bEnable; // 动态检测开启
SDK_EventHandler hEvent; // 动态检测联动
} SDK_ConsSensorAlarmCfg;
///<硬盘出错事件结构
typedef struct SDK_StorageFailConfig
{
bool bEnable;
SDK_EventHandler hEvent; ///< 处理参数
bool bRebootEnable; //系统重启全能:hutianhao
int bRebooted; //是否出错重启过;0:未出错重启过;非0:出错重启过
}SDK_StorageFailConfig;
//CMS客户端端发来的画面分割条件
typedef struct SDK_SplitControl
{
int iSplitChannel;//分割通道
int iSplitWinType;//分割类型(如:四通道)
char rev[4];
}SDK_SplitControl;
// 数据上传通道回调函数原型
typedef void (CALL_METHOD *fUploadDataCallBack) (long lLoginID, long UploadType, char *pBuffer, unsigned long dwBufSize, unsigned long dwUser);
// 透明串口回调函数原形
typedef void (CALL_METHOD *fTransComCallBack) (long lLoginID, long lTransComType, char *pBuffer, unsigned long dwBufSize, unsigned long dwUser);
//服务器断开回调原形
typedef void (CALL_METHOD *fDisConnect)(long lLoginID, char *pchDVRIP, long nDVRPort, unsigned long dwUser);
//原始数据回调原形
typedef int(CALL_METHOD *fRealDataCallBack) (long lRealHandle, long dwDataType, unsigned char *pBuffer,long lbufsize,long dwUser);
typedef int(CALL_METHOD *fRealDataCallBack_V2) (long lRealHandle, const PACKET_INFO_EX *pFrame, unsigned int dwUser);
// 回放录像进度回调原形
typedef void(CALL_METHOD *fDownLoadPosCallBack) (long lPlayHandle, long lTotalSize, long lDownLoadSize, long dwUser);
//消息(报警,主动注册)回调原形
/*
1.报警,pBuf说明,
SDK_AlarmInfo alarmInfo;
memcpy ( &alarmInfo, pBuf, dwBufLen );
2.主动注册,pBuf说明,
H264_DVR_ACTIVEREG_INFO activeInfo;
memcpy ( &alarmInfo, pBuf, dwBufLen );
*/
typedef bool (CALL_METHOD *fMessCallBack)(long lLoginID, char *pBuf,
unsigned long dwBufLen, long dwUser);
//升级设备程序回调原形
/*
nSendSize = -1 说明升级完成
nSendSize = -2 说明升级出错
nTotalSize = -1时, nSendSize:1-99返回升级进度
nTotalSize =0时,nSendSize = H264_DVR_NOENOUGH_MEMORY-H264_DVR_INVALID_WIFI_DRIVE 升级错误具体码
其他就是发送进度
云升级增加了这一步:nTotalSize=-2时,nSendSize:0 - 100=下载进度,没有发送进度
*/
typedef void(CALL_METHOD *fUpgradeCallBack) (long lLoginID, long lUpgradechannel,
int nTotalSize, int nSendSize, long dwUser);
// 语音对讲的音频数据回调函数原形
typedef void (CALL_METHOD *pfAudioDataCallBack)(long lVoiceHandle, char *pDataBuf,
long dwBufSize, char byAudioFlag, long dwUser);
//本地播放结束回调原形
typedef void (CALL_METHOD * fLocalPlayFileCallBack)(long lPlayHand, long nUser);
//信息帧回调设置
typedef void (CALL_METHOD *InfoFramCallBack)(long lPlayHand, long nType, LPCSTR pBuf,long nSize, long nUser);
//子连接断线回调
typedef void (CALL_METHOD *fSubDisConnectCallBack)(long lLoginID, SubConnType type, long nChannel, long dwUser);
#ifdef WIN32
//RigisterDraw回调原形
typedef void (CALL_METHOD * fPlayDrawCallBack)(long lPlayHand,HDC hDc,long nUser);
#else//linux没用到这个回调
typedef void (CALL_METHOD * fPlayDrawCallBack)(long lPlayHand,void* hDc,long nUser);
#endif // WIN32
/*
描述:SDK初始化
参数:
cbDisConnect[out]:断线回调函数
dwUser[in]:回调函数参数
返回值:
=1: 成功
<=0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_Init(fDisConnect cbDisConnect, unsigned long dwUser);
/*
描述:SDK退出清理
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_Cleanup();
/*
描述:获取错误信息
返回值:
错误码
*/
H264_DVR_API long CALL_METHOD H264_DVR_GetLastError();
/*
描述:设置登录设备超时时间和尝试次数
参数:
nWaitTime[in]:单位ms不设置时默认5000ms,
nTryTimes[in]:次数,不设置时默认3次
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SetConnectTime(long nWaitTime, long nTryTimes);
/*
描述:登陆设备
参数:
sDVRIP[in]: ip
wDVRPort[in]: 端口
sUserName[in]: 用户名
sPassword[in]: 密码
lpDeviceInfo[out]:返回设备信息
error[out]: 返回登陆错误码
socketType[in]: 登陆方式
返回值:
>0或<0:成功
=0: 失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_Login(char *sDVRIP, unsigned short wDVRPort, char *sUserName, char *sPassword,
LPH264_DVR_DEVICEINFO lpDeviceInfo, int *error,int socketType DEF_PARAM(0));
/*
描述:登陆设备扩展接口
参数:
sDVRIP[in]: ip
wDVRPort[in]: 端口
sUserName[in]: 用户名
sPassword[in]: 密码
lpDeviceInfo[out]:返回设备信息
nType[in]: 登陆类型,0==web 1 ==升级工具 2 == 搜索工具 102 == 外部加密,内部就不用加密了
error[out]: 返回登陆错误码
返回值:
>0或<0:成功
=0: 失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_LoginEx(char *sDVRIP, unsigned short wDVRPort, char *sUserName, char *sPassword,
LPH264_DVR_DEVICEINFO lpDeviceInfo, int nType, int *error);
/*
描述:登陆接口V2版本,可以指定客户端类型登陆
参数:
sDVRIP[in]: ip
wDVRPort[in]: 端口
sUserName[in]: 用户名
sPassword[in]: 密码
lpDeviceInfo[out]:返回设备信息
nType[in]: 登陆类型,见enum SDK_LoginType
error[out]: 返回登陆错误码
socketType[in]: 登陆方式
返回值:
>0或<0:成功
=0: 失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_LoginEx_V2(char *sDVRIP, unsigned short wDVRPort, char *sUserName, char *sPassword,
LPH264_DVR_DEVICEINFO lpDeviceInfo, int nType, int *error,int socketType);
/*
描述:客户云登陆接口
参数:
sDVRIP[in]: 设备序列号
wDVRPort[in]: 端口
sUserName[in]: 用户名
sPassword[in]: 密码
lpDeviceInfo[out]:返回设备信息
error[out]: 返回登陆错误码
uuid[in]: uuid
返回值:
>0或<0:成功
=0: 失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_Login_Cloud(char *sDVRIP, unsigned short wDVRPort, char *sUserName, char *sPassword,
LPH264_DVR_DEVICEINFO lpDeviceInfo, int *error,char* uuid);
/*
描述:向设备注销,登出设备
参数:
lLoginID[in]:登陆句柄
返回值:
=1:成功
=0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_Logout(long lLoginID);
/*
描述:设置接收DVR信息回调, 例如报警信息,以ID号区分
参数:
cbAlarmcallback[out]:回调函数
lUser[in]: 回调函数参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SetDVRMessCallBack(fMessCallBack cbAlarmcallback, unsigned long lUser);
/*
描述:建立报警上传通道
参数:
lLoginID[in]:登陆句柄
返回值:
=1:成功
=0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_SetupAlarmChan(long lLoginID);
/*
描述:关闭报警上报
参数:
lLoginID[in]:登陆句柄
返回值:
=1:成功
=0:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_CloseAlarmChan(long lLoginID);
/*
描述:远程获取配置参数
参数:
lLoginID[in]: 登陆句柄
dwCommand[in]: 控制命令,见enum SDK_CONFIG_TYPE
nChannelNO[in]: -1代表全通道,0-n代表单个通道
lpOutBuffer[out]: 接收缓冲
dwOutBufferSize[in]: 接收缓冲大小
lpBytesReturned[out]:返回的数据大小
waittime[in]: 等待时间
返回值:
=1:成功
<0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_GetDevConfig(long lLoginID, unsigned long dwCommand, int nChannelNO, char * lpOutBuffer, unsigned long dwOutBufferSize, unsigned long* lpBytesReturned,int waittime DEF_PARAM(1000));
/*
描述:远程设置配置参数
参数:
lLoginID[in]: 登陆句柄
dwCommand[in]: 控制命令,见enum SDK_CONFIG_TYPE
nChannelNO[in]: -1代表全通道,0-n代表单个通道
lpInBuffer[out]: 输入缓冲
dwInBufferSize[in]: 输入缓冲大小
waittime[in]: 等待时间
返回值:
=1:成功
<0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_SetDevConfig(long lLoginID, unsigned long dwCommand, int nChannelNO, char * lpInBuffer, unsigned long dwInBufferSize, int waittime DEF_PARAM(1000));
/*
描述:跨网段设置设备配置,目前只支持对网络配置进行设置
参数:
dwCommand[in]: E_SDK_CONFIG_SYSNET
nChannelNO[in]: 1临时保存,其他为永久保存
lpInBuffer[in]: SDK_CONFIG_NET_COMMON_V3结构体地址
dwInBufferSize[in]:sizeof(SDK_CONFIG_NET_COMMON_V3)
waittime[in]: 等待时间
返回值:
=0:成功
<0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_SetConfigOverNet(unsigned long dwCommand, int nChannelNO, char * lpInBuffer, unsigned long dwInBufferSize, int waittime DEF_PARAM(1000));
/*
描述:日志查询
参数:
lLoginID[in]:登陆句柄
pFindParam[in]:查询条件
pRetBuffer[out]:日志返回信息
lBufSize[in]:接收日志信息大小
waittime:等待时间
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_FindDVRLog(long lLoginID, SDK_LogSearchCondition *pFindParam, SDK_LogList *pRetBuffer, long lBufSize, int waittime DEF_PARAM(2000));
/*
描述:打开实时预览
参数:
lLoginID[in]: 登陆句柄
lpClientInfo[in]:播放信息
返回值:
>0或<0:成功,预览播放句柄
=0:失败,经常出现的错误码分析例如-11202见文档
*/
H264_DVR_API long CALL_METHOD H264_DVR_RealPlay(long lLoginID, LPH264_DVR_CLIENTINFO lpClientInfo);
/*
描述:停止实时预览
参数:
lRealHandle[in]: 预览播放句柄
lpClientInfo[in]:播放信息
返回值:
>0或<0:成功
=0:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StopRealPlay(long lRealHandle,void*hWnd DEF_PARAM(0));
/*
描述:控制实时预览
参数:
lRealHandle[in]:预览播放句柄
bPause[in]: 暂停或继续 1-暂停 0-继续
返回值:
=1:成功
=0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_PauseRealPlay(long lRealHandle, bool bPause);
/*
描述:设置数据回调
参数:
lRealHandle[in]:预览播放句柄
cbRealData[out]:实时数据回调
dwUser[in]: 回调函数参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SetRealDataCallBack(long lRealHandle,fRealDataCallBack cbRealData, long dwUser);
/*
描述:数据经过码流分析过,带有帧的具体信息,其他与H264_DVR_SetRealDataCallBack相同
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SetRealDataCallBack_V2(long lRealHandle,fRealDataCallBack_V2 cbRealData, long dwUser);
/*
描述:清除回调函数,该函数需要在H264_DVR_StopRealPlay前调用
参数:
lRealHandle[in]:预览播放句柄
cbRealData[in]: 实时回调函数
dwUser[in]: 实时回调函数参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_DelRealDataCallBack(long lRealHandle,fRealDataCallBack cbRealData, long dwUser);
/*
描述:清除回调函数V2版本
参数:
lRealHandle[in]:预览播放句柄
cbRealData[in]: 实时回调函数V2版本
dwUser[in]: 实时回调函数参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_DelRealDataCallBack_V2(long lRealHandle,fRealDataCallBack_V2 cbRealData, long dwUser);
/*
描述:按文件名查询录像
参数:
lLoginID[in]:登陆句柄
lpFindInfo[in]:查询条件
lpFileData[out]:查询结果
lMaxCount[in]:查询的最大录像数量
findcount[out]:查询到的录像数量
waittime[in]:等待时间
返回值:
=1:成功
=0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_FindFile(long lLoginID, H264_DVR_FINDINFO* lpFindInfo, H264_DVR_FILE_DATA *lpFileData, int lMaxCount, int *findcount, int waittime DEF_PARAM(5000));
/*
描述:按时间查询录像文件
参数:
lLoginID[in]:登陆句柄
lpFindInfo[in]:查询条件
lpFileData[out]:查询结果
waittime[in]:等待时间
返回值:
=1:成功
=0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_FindFileByTime(long lLoginID, SDK_SearchByTime* lpFindInfo, SDK_SearchByTimeResult *lpFileData, int waittime DEF_PARAM(10000));
/*
描述:按文件名回放录像
参数:
lLoginID[in]: 登陆句柄
sPlayBackFile[in]: 回放的文件参数
cbDownLoadPos[out]:进度回调,用户通知用户设备是否已经将数据发送完毕,回调中的lDownLoadSize=-1代表数据发送完毕
客户如果想实时显示进度,应该从码流里面获取时间来计算网络部分不分析码流,如果以当前接收数据大小/总大小来计算进度的话不是很准,应该以当前时间,根据开始时间和结束时间来计算进度
fDownLoadDataCallBack[out]:回放数据回调
dwDataUser[in]: 数据回调参数
返回值:
>0或<0:成功
=0: 失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_PlayBackByName(long lLoginID, H264_DVR_FILE_DATA *sPlayBackFile, fDownLoadPosCallBack cbDownLoadPos, fRealDataCallBack fDownLoadDataCallBack, long dwDataUser);
/*
描述:按文件名回放录像
参数:
lLoginID[in]: 登陆句柄
sPlayBackFile[in]: 回放的文件参数
cbDownLoadPos[out]:进度回调,用户通知用户设备是否已经将数据发送完毕,回调中的lDownLoadSize=-1代表数据发送完毕
客户如果想实时显示进度,应该从码流里面获取时间来计算网络部分不分析码流,如果以当前接收数据大小/总大小来计算进度的话不是很准,应该以当前时间,根据开始时间和结束时间来计算进度
fDownLoadDataCallBack[out]:回放数据回调,数据经过码流分析
dwDataUser[in]: 数据回调参数
返回值:
>0或<0:成功
=0: 失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_PlayBackByName_V2(long lLoginID, H264_DVR_FILE_DATA *sPlayBackFile, fDownLoadPosCallBack cbDownLoadPos, fRealDataCallBack_V2 fDownLoadDataCallBack, long dwDataUser);
/*
描述:按时间回放录像
参数:
lLoginID[in]: 登陆句柄
lpFindInfo[in]: 查询录像条件
cbDownLoadPos[out]:进度回调,用户通知用户设备是否已经将数据发送完毕,回调中的lDownLoadSize=-1代表数据发送完毕
fDownLoadDataCallBack[out]:回放数据回调
dwDataUser[in]: 数据回调参数
返回值:
>0或<0:成功
=0: 失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_PlayBackByTime(long lLoginID, H264_DVR_FINDINFO* lpFindInfo, fDownLoadPosCallBack cbDownLoadPos, fRealDataCallBack fDownLoadDataCallBack, long dwDataUser);
/*
描述:按时间回放录像Ex,进度回调和数据回调用不同的回调参数,其他与H264_DVR_PlayBackByTime相同
*/
H264_DVR_API long CALL_METHOD H264_DVR_PlayBackByTimeEx(long lLoginID, H264_DVR_FINDINFO* lpFindInfo,fRealDataCallBack fDownLoadDataCallBack, long dwDataUser,
fDownLoadPosCallBack cbDownLoadPos, long dwPosUser);
/*
描述:fDownLoadDataCallBack数据回调出来的数据的码流分析过,其他与H264_DVR_PlayBackByTimeEx相同
*/
H264_DVR_API long CALL_METHOD H264_DVR_PlayBackByTime_V2(long lLoginID, H264_DVR_FINDINFO* lpFindInfo,fRealDataCallBack_V2 fDownLoadDataCallBack, long dwDataUser,
fDownLoadPosCallBack cbDownLoadPos, long dwPosUser);
/*
描述:停止录像回放
参数:
lPlayHandle[in]:回放句柄
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StopPlayBack(long lPlayHandle);
/*
描述:回放控制
参数:
lPlayHandle[in]:回放句柄
lControlCode[in]:控制命令,见enum SDK_PlayBackAction
lCtrlValue[in]:控制值
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_PlayBackControl(long lPlayHandle, long lControlCode,long lCtrlValue);
/*
描述:按文件名下载,用户可以不使用回调,自己通过H264_DVR_GetDownloadPos获取进度
参数:
lLoginID[in]: 登陆句柄
sPlayBackFile[in]: 下载的录像信息
sSavedFileName[in]: 保存的文件路径
cbDownLoadPos[out]:下载进度回调
dwDataUser[in]: 回调函数参数
fDownLoadDataCallBack[out]:数据回调
返回值:
<0或>0:成功
=0: 失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_GetFileByName(long lLoginID,H264_DVR_FILE_DATA *sPlayBackFile,char *sSavedFileName,
fDownLoadPosCallBack cbDownLoadPos DEF_0_PARAM, long dwDataUser DEF_0_PARAM,fRealDataCallBack fDownLoadDataCallBack DEF_0_PARAM);
/*
描述:按文件名下载V2版本,数据回调是经过码流分析过,其他与H264_DVR_GetFileByName相同
*/
H264_DVR_API long CALL_METHOD H264_DVR_GetFileByName_V2(long lLoginID,H264_DVR_FILE_DATA *sPlayBackFile,char *sSavedFileName,
fDownLoadPosCallBack cbDownLoadPos DEF_0_PARAM, long dwDataUser DEF_0_PARAM,fRealDataCallBack_V2 fDownLoadDataCallBack_V2 DEF_0_PARAM);
/*
描述:按时间下载V2版本
参数:
lLoginID[in]: 登陆句柄
lpFindInfo[in]: 录像查询条件
sSavedFileDIR[in]: 录像文件保存路径
bMerge[in]: 文件是否合并
cbDownLoadPos[out]: 进度回调,用户通知用户设备是否已经将数据发送完毕,回调中的lDownLoadSize=-1代表数据发送完毕
dwDataUser[in]: 回调函数参数
fDownLoadDataCallBack[in]:数据回调
返回值:
>0或<0:成功
=0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_GetFileByTime(long lLoginID, H264_DVR_FINDINFO* lpFindInfo, char *sSavedFileDIR, bool bMerge DEF_PARAM(0),
fDownLoadPosCallBack cbDownLoadPos DEF_0_PARAM, long dwDataUser DEF_0_PARAM,fRealDataCallBack fDownLoadDataCallBack DEF_0_PARAM);
/*
描述:数据回调出来的数据的码流分析过,其他与H264_DVR_GetFileByTime相同
*/
H264_DVR_API long CALL_METHOD H264_DVR_GetFileByTime_V2(long lLoginID, H264_DVR_FINDINFO* lpFindInfo, char *sSavedFileDIR, bool bMerge
,fDownLoadPosCallBack cbDownLoadPos DEF_0_PARAM,long dwDataUser DEF_0_PARAM,fRealDataCallBack_V2 fDownLoadDataCallBack_V2 DEF_0_PARAM);
/*
描述:停止下载文件
参数:
lFileHandle[in]:下载文件句柄
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StopGetFile(long lFileHandle);
/*
描述:下载控制
参数:
lPlayHandle[in]: 下载句柄
lControlCode[in]:控制命令,见enum SDK_PlayBackAction
bDown[in]: 是否位下载,默认为1
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_GetFileControl(long lPlayHandle, long lControlCode, bool bDown DEF_PARAM(1));
/*
描述:获取下载进度
参数:
lFileHandle[in]:下载句柄
返回值:
>=0:下载进度
<0: 失败
*/
H264_DVR_API int CALL_METHOD H264_DVR_GetDownloadPos(long lFileHandle);
/*
描述:本地升级
参数:
lLoginID[in]: 登陆句柄
sFileName[in]:升级文件路径
nType[in]: 升级类型,1-开始升级 0-终止升级
cbUpgrade[in]:升级进度回调
dwUser[in]: 回调函数参数
返回值:
>0或<0: 成功
=0: 失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_Upgrade(long lLoginID, char *sFileName, int nType DEF_0_PARAM, fUpgradeCallBack cbUpgrade DEF_0_PARAM, long dwUser DEF_0_PARAM);
/*
描述:得到升级状态
参数:
lUpgradeHandle[in]:升级句柄
返回值:
1:成功
2:正在升级
3:失败
*/
H264_DVR_API int CALL_METHOD H264_DVR_GetUpgradeState(long lUpgradeHandle);
/*
描述:释放升级句柄
参数:
lUpgradeHandle[in]:升级句柄
返回值:
=1:成功
=0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_CloseUpgradeHandle(long lUpgradeHandle);
/*
描述:云台控制
参数:
lLoginID[in]: 登陆句柄
nChannelNo[in]: 通道号
lPTZCommand[in]:控制命令,见enum PTZ_ControlType
bStop[in]: 是否是停止
lSpeed[in]: 速度
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_PTZControl(long lLoginID,int nChannelNo, long lPTZCommand, bool bStop DEF_PARAM(0), long lSpeed DEF_PARAM(4));
/*
描述:1、设置,删除,转到预置点时:lParam1为预置点值
2、加入预置点到巡航,删除巡航中预置点时:lParam1为巡航线路值,lParam2为预置点值,lParam3为时间间隔
3、开始巡航,停止巡航,清除巡航线路时:lParam1为巡航线路值
4、云台方向设置时:lParam1为水平步长,lParam2为垂直步长
参数:
lLoginID[in]: 登陆句柄
nChannelNo[in]: 通道号
lPTZCommand[in]:控制命令,见enum PTZ_ControlType
lParam1[in]: 参数1
lParam2[in]: 参数2
lParam3[in]: 参数3
bStop[in]: 是否是停止
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_PTZControlEx(long lLoginID,int nChannelNo, long lPTZCommand,
long lParam1, long lParam2, long lParam3, bool bStop DEF_0_PARAM);
/*
描述:设备控制
参数:
lLoginID[in]:登陆句柄
type[in]: 控制类型,0 重启设备,1 清除日志 2 关机 3.恢复记录日志 4.停止记录日志
waittime[in]:等待时间
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_ControlDVR(long lLoginID, int type, int waittime DEF_PARAM(2000));
/*
描述:搜索局域网内的设备
参数:
szBuf[out]: 接收缓冲
nBufLen[in]: 接收缓冲大小,sizeof(SDK_CONFIG_NET_COMMON_V2)*n
pRetLen[in]: 返回的大小
nSearchTime[in]:等待时间
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SearchDevice(char* szBuf, int nBufLen, int* pRetLen, int nSearchTime);
typedef void ( CALL_METHOD *pfSearchDeviceCallBack)(SDK_CONFIG_NET_COMMON_V2 *pNetCom , unsigned long userData);
//
/*
描述:搜索局域网内的设备,搜索局域网内的设备V2版本
参数:
pfNetCom[out]: 回调函数
userData[in]: 回调参数
nSearchTime[in]:等待时间
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SearchDevice_V2(pfSearchDeviceCallBack pfNetCom,unsigned long userData, int nSearchTime);
/*
描述:开始对讲
参数:
lLoginID[in]: 登陆句柄
pVcb[out]: 接收对讲数据回调
dwDataUser[in]:回调函数参数
返回值:
>0或<0: 成功
=0: 失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_StartVoiceCom_MR(long lLoginID, pfAudioDataCallBack pVcb, long dwDataUser);
/*
描述:发送对讲数据
参数:
lVoiceHandle[in]:对讲句柄
pSendBuf[in]: 对讲数据
lBufSize[in]: 对讲数据大小
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_VoiceComSendData(long lVoiceHandle, char *pSendBuf, long lBufSize);
/*
描述:停止对讲
参数:
lVoiceHandle[in]:对讲句柄
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StopVoiceCom(long lVoiceHandle);
/*
描述:设置对讲音频编码方式,用户可以不设置,默认为G711A编码
参数:
lLoginID[in]: 登陆句柄
pTalkMode[in]: 通道号,-1代表全通道,0-n代表单个通道
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SetTalkMode(long lLoginID, SDK_AudioInFormatConfig* pTalkMode);
/*
描述:设置录像模式
参数:
lLoginID[in]: 登陆句柄
nChannelNo[in]: 通道号,-1代表全通道,0-n代表单个通道
lRecordType[in]:录像模式,见enum SDK_RecordModeTypes
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StartDVRRecord(long lLoginID, int nChannelNo ,long lRecordType);
/*
描述:关闭录像
参数:
lLoginID[in]: 登陆句柄
nChannelNo[in]: 通道号,-1代表全通道,0-n代表单个通道
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StopDVRRecord(long lLoginID, int nChannelNo);
/*
描述:设置设备系统时间
参数:
lLoginID[in]:登陆句柄
pSysTime[in]:时间
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SetSystemDateTime(long lLoginID, SDK_SYSTEM_TIME *pSysTime);
/*
描述:得到设备的工作状态
参数:
lLoginID[in]: 登陆句柄
pWorkState[out]:设备的工作状态
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_GetDVRWorkState(long lLoginID, SDK_DVR_WORKSTATE *pWorkState);
/*
描述:网络键盘,具体使用方法见ClientDemo
参数:
lLoginID[in]: 登陆句柄
pKeyBoardData[in]:网络键盘参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_ClickKey(long lLoginID, SDK_NetKeyBoardData *pKeyBoardData);
/*
描述:对硬盘进行分区,格式化等等操作
参数:
lLoginID[in]: 登陆句柄
pStorageCtl[in]:操作参数
返回值:
=1: 成功
<=0:失败
*/
H264_DVR_API int CALL_METHOD H264_DVR_StorageManage(long lLoginID, SDK_StorageDeviceControl *pStorageCtl);
/*
描述:发送网络报警信息
参数:
lLoginID[in]: 登陆句柄
pAlarmInfo[in]:网络报警参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SendNetAlarmMsg(long lLoginID, SDK_NetAlarmInfo *pAlarmInfo);
/*
描述:设备端抓图,即抓设备端发过来的即时的一张图片的内存buf
1.需要设备配置里面有抓图配置选项该接口才有效
2.如果满足1,默认抓出来的分辨率是D1,如果想抓跟视频分辨率一样的图片,就需要修改编码设置里的抓图分辨率,
如果编码设置没有抓图分辨率选项,则需要定制支持该项的程序
参数:
lLoginID[in]: 登陆句柄
nChannel[in]: 通道号
sFileName[in]:保存路径
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_CatchPic(long lLoginID, int nChannel, char *sFileName);
/*
描述:设备端抓图,即抓设备端发过来的即时的一张图片的内存buf,外部生成文件
1.需要设备配置里面有抓图配置选项该接口才有效
2.如果满足1,默认抓出来的分辨率是D1,如果想抓跟视频分辨率一样的图片,就需要修改编码设置里的抓图分辨率,
如果编码设置没有抓图分辨率选项,则需要定制支持该项的程序
参数:
lLoginID[in]:登陆句柄
nChannel[in]:通道号
pBuffer[out]:接收缓冲
nBufLen[in]:接收缓冲的大小
pPicLen[in]:实际返回的大小
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_CatchPicInBuffer(long lLoginID, int nChannel, char *pBuffer, int nBufLen, int *pPicLen);
/*
描述:启动报警中心监听(具体用法见AlarmCenter demo)
参数:
nPort[in]: 监听端口号
cbAlarmCenter[out]:数据回调
dwDataUser[in]: 回调函数参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StartAlarmCenterListen(int nPort, fMessCallBack cbAlarmCenter, unsigned long dwDataUser);
/*
描述:关闭报警中心监听(具体用法见AlarmCenter demo)
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StopAlarmCenterListen();
/*
描述:通过串口向设备写数据
参数:
lLoginID[in]:登陆句柄
nType[in]: 串口类型
pBuffer[in]: 数据
nBufLen[in]: 数据长度
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SerialWrite(long lLoginID, SERIAL_TYPE nType, char *pBuffer, int nBufLen);
/*
描述:通过串口从设备读数据
参数:
lLoginID[in]: 登陆句柄
nType[in]: 串口类型
pBuffer[out]: 接收数据
nBufLen[in]: 接收数据长度
pReadLen[out]:收到的数据长度
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SerialRead(long lLoginID, SERIAL_TYPE nType, char *pBuffer, int nBufLen, int *pReadLen);
/*
描述:获取DDNS信息,具体用法见ClientDemo
参数:
searchmode[in]:搜索信息
pDevicInfo[out]:DDNS信息
maxDeviceNum[in]:最大设备数
nretNum[out]:得到的设备数
返回值:
=1:成功
<0:失败
*/
//H264_DVR_API int CALL_METHOD H264_DVR_GetDDNSInfo(SearchMode &searchmode, DDNS_INFO *pDevicInfo, int maxDeviceNum, int &nretNum);
/*
描述:强制I帧
参数:
lLoginID[in]:登陆句柄
nChannel[in]:通道号
nStream[in]: 码流类型,0表示主码流,为1表示子码流
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_MakeKeyFrame(long lLoginID, int nChannel, int nStream);
/*
描述:获取OEM信息
参数:
lLoginID[in]: 登陆句柄
pOEMInfo[out]: OEM信息
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_GetOEMInfo(long lLoginID, SDK_OEMInfo *pOEMInfo);
/*
描述:创建透明串口通道
参数:
lLoginID[in]: 登陆句柄
TransInfo[in]: 透明串口参数
cbTransCom[out]: 设备数据回调
lUser[in]: 回调函数参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_OpenTransComChannel(long lLoginID, TransComChannel *TransInfo, fTransComCallBack cbTransCom, unsigned long lUser);
/*
描述:关闭透明串口通道
参数:
lLoginID[in]: 登陆句柄
nType[in]: 透明串口类型
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_CloseTransComChannel(long lLoginID, SERIAL_TYPE nType);
/*
描述:获取本地ui图片
参数:
lLoginID[in]: 登陆句柄
saveFileName[in]:图片保存路径
type[in]: 保存图片类型,1:为全图片 2:活动区域图片
*/
H264_DVR_API bool CALL_METHOD H264_DVR_CatchPicUI(long lLoginID,char *saveFileName,int type DEF_PARAM(1));
#ifdef WIN32
/*
描述:打开通道音频,预览/回放/本地播放一个函数
参数:
lHandle[in]:播放句柄
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_OpenSound(long lHandle);
/*
描述:关闭通道音频,预览/回放/本地播放一个函数
参数:
lHandle[in]:播放句柄
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_CloseSound(long lHandle);
/*
描述:抓本地图片,预览/回放/本地播放一个函数
参数:
lHandle[in]:播放句柄
szSaveFileName[in]:保存图片路径
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_LocalCatchPic(long lHandle,char*szSaveFileName);
/*
描述:打开对讲
参数:
lLoginID[in]:登陆句柄
返回值:
true: 成功
false:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_StartLocalVoiceCom(long lLoginID);
/*
描述:开始本地录像
参数:
lRealHandle[in]:播放句柄
szSaveFileName[in]:录像路径
type[in]:录像类型
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StartLocalRecord(long lRealHandle,char*szSaveFileName,long type=0);
/*
描述:关闭本地录像
参数:
lRealHandle[in]:播放句柄
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StopLocalRecord(long lRealHandle);
/*
描述:播放本地文件
参数:
pFileName[in]: 录像文件路径
hWnd[in]: 播放窗口句柄
drawCallBack[out]:回调函数
user[in]: 回调函数参数
返回值:本地播放句柄
>0或<0:成功
=0: 失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_StartLocalPlay(char*pFileName,void* hWnd,fPlayDrawCallBack drawCallBack=0,long user=0);
/*
描述:关闭本地播放
参数:
lPlayHandle[in]:本地播放句柄
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StopLocalPlay(long lPlayHandle);
/*
描述:获取播放位置(百分比),用于回放和本地播放,回放时传窗口句柄该接口才有效
参数:
lPlayHandle[in]:回放句柄或本地播放句柄
返回值:播放进度
*/
H264_DVR_API float CALL_METHOD H264_DVR_GetPlayPos(long lPlayHandle);
/*
描述:设置播放位置(百分比),用于回放,本地播放(本地回放时传窗口句柄该接口才有效)
参数:
lPlayHandle[in]:回放句柄或本地播放句柄
fRelativPos[in]:播放进度
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SetPlayPos(long lPlayHandle,float fRelativPos);
/*
描述:播放控制(播放,停止,恢复,快发,慢放)
参数:
lPlayHandle[in]:回放句柄或本地播放句柄
action[in]: 播放控制类型
lCtrlValue[in]: 控制速度
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_LocalPlayCtrl(long lPlayHandle,SDK_LoalPlayAction action,long lCtrlValue);
/*
描述:设置本地播放结束回调
参数:
lPlayHandle[in]:回放句柄或本地播放句柄
callBack[out]: 播放结束回调
user[in]: 回调函数参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SetFileEndCallBack(long lPlayHandle,fLocalPlayFileCallBack callBack,long user);
/*
描述:设置信息帧回调
参数:
lPlayHandle[in]:实时播放句柄或者回放句柄或本地播放句柄
callback[out]: 信息帧回调
user[in]: 回调函数参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SetInfoFrameCallBack(long lPlayHandle,InfoFramCallBack callback,long user);
/*
描述:获取本地颜色,预览/回放/本地播放一个函数
参数:
lHandle[in]: 实时播放句柄或者回放句柄或本地播放句柄
nRegionNum[in]: 显示区域,如果只有一个显示区域(通常情况)设为0
pBrightness[out]:亮度
pContrast[out]: 对比度
pSaturation[out]:饱和度
pHue[out]: 色调
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_LocalGetColor(long lHandle, DWORD nRegionNum, LONG *pBrightness, LONG *pContrast, LONG *pSaturation, LONG *pHue);
/*
描述:本地颜色控制,预览/回放/本地播放一个函数
参数:
lHandle[in]: 实时播放句柄或者回放句柄或本地播放句柄
nRegionNum[in]: 显示区域,如果只有一个显示区域(通常情况)设为0
pBrightness[in]:亮度
pContrast[in]: 对比度
pSaturation[in]:饱和度
pHue[in]: 色调
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_LocalSetColor(long lHandle, DWORD nRegionNum, LONG nBrightness, LONG nContrast, LONG nSaturation, LONG nHue);
#endif
/*
描述:设置本地ip,socket通信套接字绑定的ip
参数:
szIP[in]:ip
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SetLocalBindAddress(char*szIP);
/*
描述:开启上报数据,包括车载信息经纬度/录像状态/数字通道连接状态/通道标题
参数:
lLoginID[in]:登陆句柄
upLoadType[in]:上报数据类型
callBack[out]:上报数据回调
lUser[in]:回调函数参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StartUploadData(long lLoginID,UploadDataType upLoadType,fUploadDataCallBack callBack,long lUser);
/*
描述:停止上报数据
参数:
lLoginID[in]:登陆句柄
upLoadType[in]:上报数据类型
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StopUploadData(long lLoginID,UploadDataType upLoadType);
/*
描述:开始主动注册
参数:
nPort[in]:监听端口号,0<=nPort<=65535
cbFunc[out]: 注册上线回调函数
dwDataUser[in]:回调函数参数
返回值:
true:成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StartActiveRigister(int nPort, fMessCallBack cbFunc, unsigned long dwDataUser);
/*
描述:关闭主动注册
返回值:
true:成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StopActiveRigister();
/*
描述:检测子连接异常断开
参数:
callBack[out]:子连接断开回调
userData[in]: 回调函数参数
返回值:
=1:成功
=0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_SetSubDisconnectCallBack(fSubDisConnectCallBack callBack,DWORD userData);
/*
描述:设置保活时间,perKeeplifeTime(心跳间隔):默认10秒,detectDisconTime(断线检测时间):默认60秒
参数:
lLoginID[in]: 登陆句柄
perKeeplifeTime[in]: 保活时间
detectDisconTime[in]:断线检测时间
返回值:
=1:成功
=0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_SetKeepLifeTime(long lLoginID,unsigned int perKeeplifeTime,unsigned int detectDisconTime);
/*
描述:MAC是否得到加密
参数:
pMac[in]:MAC地址
返回值:
true: 加密
false:没有加密
*/
H264_DVR_API bool CALL_METHOD H264_DVR_CheckEncrypt(char *pMac);
/*
描述:设备搜索到的设备,与设备在同一个局域网的设备,设备去搜索,然后返回结果(H264_DVR_SearchDevice这个接口是sdk本身去搜索,两者返回的结果是一致的)
参数:
lLoginID[in]: 登陆句柄
pDevlist[out]: 设备列表
transferProtocol[in]:传输协议,见enum SDK_TransferProtocol_V2
waittime[in]: 等待时间
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_SearchDeviceEX(long lLoginID,SDK_NetDevList *pDevlist,SDK_TransferProtocol_V2 transferProtocol DEF_PARAM(SDK_TRANSFER_PROTOCOL_NETIP),int waittime DEF_PARAM(15000));
/*
描述:云台快速定位,使用前判断是否支持
参数:
lLoginID[in]: 登陆句柄
nChannel[in]: 通道号
pPositionPoint[in]:位置
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_PTZPostion(long lLoginID,int nChannel,SDK_PositionPoint *pPositionPoint);
/*
描述:NVR和其连接的前端对讲,该功能需要特殊定制程序
参数:
lLoginID[in]:登陆句柄
nChannel[in]:通道号
waittime[in]:等待时间
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StartDevTalk(long lLoginID,int nChannel,int waittime DEF_PARAM(2000));
/*
描述:停止NVR和其连接的前端对讲
参数:
lLoginID[in]:登陆句柄
nChannel[in]:通道号
waittime[in]:等待时间
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_StopDevTalk(long lLoginID,int nChannel,int waittime DEF_PARAM(2000));
/*
描述:查询硬盘录像信息
参数:
lLoginID[in]: 登陆句柄
lpFindInfo[in]: 查询条件
lpFileData[out]:查找到的录像数据,外部开内存
waittime[in]: 查询超时时间
返回值:
=1:成功
=0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_RecordInfo(long lLoginID, SDK_SearchByTime* lpFindInfo, SDK_RecordStorageInfo *lpRecordData, int waittime DEF_PARAM(15000));
/*
描述:控制设备上文件
参数:
lLoginID[in]: 登陆句柄
lpFileControl[in]:需要控制的文件和控制命令
waittime[in]: 等待时间
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_ControlFile(long lLoginID,SDK_NetFileControl *lpFileControl,int waittime DEF_PARAM(15000));
/*
描述:查询录像设备里面音频文件,最大8个
参数:
lLoginID[in]: 登陆句柄
lpFileList[out]:查找到的音频数据
waittime[in]: 等待时间
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_FindAudioFile(long lLoginID, SDK_MusicFileList* lpFileList, int waittime DEF_PARAM(5000));
/*
描述:控制播放设备上音频文件
参数:
lLoginID[in]: 登陆句柄
lpMusicControl[in]:需要播放的文件和控制命令
waittime[in]: 等待时间
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_ControlAudio(long lLoginID, SDK_LocalMusicControl *lpMusicControl, int waittime DEF_PARAM(2000));
/*
描述:修改云穿透服务器地址
参数:
ntype[in]: 备用参数
pUserData[in]:服务器地址
nlen[in]: 备用参数
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_UserData(int ntype,char *pUserData, long nlen);
/*
描述:开始云升级
参数:
lLoginID[in]:登陆句柄
sUpgradeVer[in]:升级的文件信息
返回值:
=0:成功
<0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_Upgrade_Cloud(long lLoginID, SDK_CloudUpgradeVersion *sUpgradeVer, int nType DEF_0_PARAM, fUpgradeCallBack cbUpgrade DEF_0_PARAM, long dwUser DEF_0_PARAM);
/*
描述:新的云升级
参数:
lLoginID[in]:登陆句柄
sUpgradeVer[in]:升级的文件信息
返回值:
=0:成功
<0:失败
相关函数:H264_DVR_GetUpgradeVersion
*/
H264_DVR_API long CALL_METHOD H264_DVR_Upgrade_Cloud_V2(long lLoginID, SDK_CloudUpgradeStartReq *sUpgradeVer, int nType DEF_0_PARAM, fUpgradeCallBack cbUpgrade DEF_0_PARAM, long dwUser DEF_0_PARAM);
/*
描述:停止云升级
参数:
lHandle[in]:云升级句柄
返回值:
=0:成功
<0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_StopUpgrade_Cloud(long lHandle);
/*
功能:查询某个设备的外网ip
参数:
uuid[in]:设备序列号
ip[out]: 外网ip
返回值:
=1: 成功
<=0:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_Get_OutNet_IP(const char *uuid, char* ip);
/*
描述:设置云升级服务器地址和端口
参数:
ip[in]: 服务器地址
port[in]:端口
返回值:
=0: 成功
<0:失败
*/
typedef void (*IDownProcess)(int nProcess,int userData);
typedef void (*IDownData)(unsigned char* data, unsigned int length, int nUserData);
H264_DVR_API int CALL_METHOD H264_DVR_SetServerAddr(const char *ip, int port);
#ifndef WIN32
/*
描述:得到升级文件列表
参数:
id[in]:id号
VersionList[out]:接收数据缓冲,大小sizeof(I_VERSION_INFO_T)*n
num[out]:获取到的升级文件数量
返回值:
=0:成功
<0:失败
*/
//H264_DVR_API int CALL_METHOD H264_DVR_GetUpgradeFileList(const char *id, char *VersionList,int &num);
/*
描述:下载升级文件到本地
参数:
strSaveFilePath[in]:保存的下载文件路径
id[in]: id号
date: 升级文件日期
name: 升价文件名称
length: 升级文件大小
ProgressCallback[out]:升级文件下载进度回调
IDownData[out]: 升级文件下载数据回调
userData[out]: 回调函数参数
返回值:
=0:成功
<0:失败
*/
H264_DVR_API int CALL_METHOD H264_DVR_StartDownload(const char* strSaveFilePath, const char *id, const char *date,const char *name,unsigned int length,IDownProcess ProgressCallback,IDownData DataCallback,int userData);
/*
描述:取消下载升级文件
返回值:
=0:成功
<0:失败
*/
H264_DVR_API int CALL_METHOD H264_DVR_CancelDownload();
/*
描述:获取云穿透服务器ip
参数:
_serverip[out]:云穿透服务器ip
返回值:
true: 成功
false:失败
*/
H264_DVR_API bool CALL_METHOD H264_DVR_GetServerIp(char* _serverip);
H264_DVR_API int CALL_METHOD H264_DVR_AuthDevice_Init(char *uuid,char *ip,int port);
H264_DVR_API int CALL_METHOD H264_DVR_AuthDevice_Register();
H264_DVR_API int CALL_METHOD H264_DVR_AuthDevice_UnRegister();
H264_DVR_API int CALL_METHOD H264_DVR_AuthDevice_GetUpdateServer(char *ip,int size);
H264_DVR_API int CALL_METHOD H264_DVR_AlarmInit(char* uuid,char*ip,char* serIP);
typedef int (*MpsDevAuth)(char *buffer,int size); //鉴权
typedef int (*MpsDevDataRecv)(char *buffer,int size,int clientID); //数据由客户端发给设备
H264_DVR_API int CALL_METHOD H264_DVR_AlarmPush(char* buffer,int size);
H264_DVR_API int CALL_METHOD H264_DVR_AlarmStart(char* uuid,char* serIP,MpsDevAuth AuthCb, MpsDevDataRecv DataRecvCb);
/*
描述:获取穿透库的版本信息
参数:
version[out]:穿透库版本信息
size[i]: 大小
*/
H264_DVR_API void CALL_METHOD H264_VV_NAT_GetVersion(char *version, int size);
/*
描述:强制走转发
参数:
skipP2P[in];1-强制转发;0-按正常检测机制流程
*/
H264_DVR_API void CALL_METHOD H264_Direct_Proxy(int skipP2P);
/*
描述:判断设备是精品还是非精品
返回值:
=1:精品设备
=0:普通设备
*/
H264_DVR_API int CALL_METHOD H264_XM_Unique();
/*
描述:得到报警推送对象指针,供手机开发用
返回值:
mps报警推送库IMpsAlarmClient对象指针
*/
H264_DVR_API void* get_MpsAlarmClient_Instance();
/*
描述:得到配置的json格式
参数:
lLoginID[in]: 登陆句柄
dwCommand[in]: json名
nChannelNO[in]: 通道号,-1:得到全通道配置,0-n:得到单个通道的配置,从0开始
lpOutBuffer[out]: 接收json缓冲
dwOutBufferSize[in]: 接收缓冲大小
lpBytesReturned[out]:得到的缓冲大小(字节)
waittime[in]: 等待时间
返回值:
=1:成功
<0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_GetDevConfig_Json(long lLoginID, const char* dwCommand, int nChannelNO,char * lpOutBuffer,unsigned long dwOutBufferSize,unsigned long* lpBytesReturned,int waittime DEF_PARAM(1000));
/*
描述:设置配置的json格式
参数:
lLoginID[in]: 登陆句柄
dwCommand[in]: json名
nChannelNO[in]: 通道号,-1:得到全通道配置,0-n:得到单个通道的配置,从0开始
lpOutBuffer[in]: 设置的json字符串
waittime[in]: 等待时间
返回值:
=1:成功
<0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_SetDevConfig_Json(long lLoginID,const char* dwCommand, int nChannelNO, char * lpInBuffer,int waittime DEF_PARAM(1000));
typedef void (*PFunOnWifiConfigResult)(int nResult, SDK_CONFIG_NET_COMMON_V2 *pConfig);
/*
描述:开始wifi一键配置
参数:
pInfo[i]: 配置wifi的一些基本信息
pOnResult[out]:配置wifi成功后返回的设备网络参数
返回值:
=1:成功
<0:失败
*/
H264_DVR_API int CALL_METHOD H264_DVR_StartWifiConfig(SDK_SWifiInfo *pInfo, PFunOnWifiConfigResult pOnResult);
/*
描述:停止wifi一键配置
*/
H264_DVR_API void CALL_METHOD H264_DVR_StopWifiConfig();
/*
描述:更改认证库用户名和密码
参数:
userName[in]:用户名
password[in]:密码
返回值:
=0:成功
<0:失败
*/
H264_DVR_API int CALL_METHOD H264_DVR_SetAuthUserInfo(const char *userName, const char *password);
/*
描述:既可以获取也可以配置设备参数
参数:
lLoginID[in]: 登陆句柄
nCmdReq[in]: 请求命令
szCmd[in]: json名称
lpOutBuffer[out]: 接收json缓冲
dwOutBufferSize[in]: 接收缓冲大小(字节)
lpBytesReturned[out]:接收到的json大小
nTimeout[in]: 等待时间
pInParam[in]: 配置时使用的json字符串
nInParamLen[in]: 配置时json大小(字节)
返回值:
=0:成功
<0:失败
*/
H264_DVR_API long CALL_METHOD H264_DVR_CmdGeneral(long lLoginID, int nCmdReq, const char *szCmd, void *lpOutBuffer, unsigned long dwOutBufferSize, unsigned long* lpBytesReturned, int nTimeout, char *pInParam DEF_PARAM(0), int nInParamLen DEF_PARAM(0), int nCmdRes DEF_PARAM(-1));
#endif
/*
描述:获取云升级的设备信息
参数:
lLoginID[int]:登录句柄
versionInfo [int] :请求升级的信息
lpOutBuffer[out];设备版本的信息
dwOutBufferSize[out]:设备版本的大小
lpBytesReturned[out]:接收到的大小
waittime:等待时间
返回值:
=0:成功
<0:失败
相关函数:H264_DVR_Upgrade_Cloud_V2
*/
H264_DVR_API long CALL_METHOD H264_DVR_GetUpgradeVersion(long lLoginID,SDK_CloudUpgradeVersionReq* versionInfo,
char * lpOutBuffer,unsigned long dwOutBufferSize,unsigned long* lpBytesReturned,int waittime/*=500*/);
/*
描述:得到升级信息
参数:
versionInfo [int] :请求升级的信息
verResp[out]:json 格式的响应
返回值:
=0:成功
<0:失败
*/
H264_DVR_API int CALL_METHOD H264_DVR_GetUpgradeFileList_V2(SDK_CloudUpgradeVersionReq* versionInfo,char* verResp);
/*
描述:下载升级文件到本地
参数:
strSaveFilePath[in]: 保存的下载文件路径
uuid[in]: 设备填uuid,客户端可以填用户名
devID[in]: H264_DVR_GetUpgradeFileList_V2 接口返回的dev id 号
filename[in]: H264_DVR_GetUpgradeFileList_V2 接口返回的file name
VerData[in]: 版本日期
manual[in]: 1表示用户主动操作,0表示设备定时操作
ProgressCallback[out]: 文件数据回调
DataCallback[out]: 进度回调
userData[out]: 回调函数参数
返回值:
=0:成功
<0:失败
*/
H264_DVR_API int CALL_METHOD H264_DVR_StartDownload_V2(const char* strSaveFilePath,
const char *uuid, const char *devID,const char *filename,const char* VerData,
unsigned int length,IDownProcess ProgressCallback,IDownData DataCallback,int userData);
typedef int (*OnFoundDevCB)(char * uuid,int state,int userData);
/*
描述:查询多个设备是否在线V2版本
参数:
pStates[out]: 要查询的多个设备信息,会返回设备状态
nTimeout[in]: 等待时间
decCb[out]: 设备在线与否的回调
userData[out]:回调参数
返回值:
=0:成功
<0:失败
*/
H264_DVR_API int CALL_METHOD H264_DVR_Check_Device_Exist_V2(SDK_SDevicesState *pStates, int nTimeout,OnFoundDevCB decCb,int userData);
/*
描述:设置二次开发云访问uuid
参数:
uuid[in]: 客户uuid
*/
H264_DVR_API bool CALL_METHOD H264_DVR_Set_UUid(char* uuid);
typedef struct SDK_AlarmArea
{
unsigned short x0;
unsigned short y0;
unsigned short x1;
unsigned short y1;
}SDK_AlarmArea;
typedef struct SDK_AlarmAreaInfo
{
unsigned char version;
unsigned char count;
unsigned char res[2];
SDK_AlarmArea area[6];
unsigned char res1[12];
}SDK_AlarmAreaInfo;
typedef struct SNetCFG
{
char ip[64];
char gateway[64];
char subMask[64];
char dns1[64];
char dns2[64];
}SNetCFG;
#endif