package com.ard.work.sdk.hb.lib; import com.sun.jna.Callback; import com.sun.jna.Library; import com.sun.jna.Pointer; import com.sun.jna.Structure; import com.sun.jna.ptr.IntByReference; import java.util.Arrays; import java.util.List; public interface HBNetSDK extends Library { //HBNetSDK INSTANCE = Native.load("/home/ard/jar/ard-work/lib/hb/linux64/libnetsdk.so", HBNetSDK.class); // ==================== 常量定义 ==================== int HB_SERIALNO_LEN = 48; int HB_NAME_LEN = 32; int HB_PWD_LEN = 16; int HB_MAX_CHANNUM = 128; int HB_IP_LEN = 16; int HB_MAX_ALARMIN = 128; int HB_MAX_ALARMOUT = 128; int HB_MAX_HARDDISK = 16; int HB_MAX_DAYS = 8; int HB_MAX_TIMESEGMENT = 2; int HB_MAX_SHELTERNUM = 4; int HB_MAX_USER = 16; int HB_MAX_RIGHT = 32; int HB_TELNUM_LEN = 32; int HB_MAX_ALARMCOUNT = 16; int HB_MAX_PTZ_NUM = 100; int HB_MAX_PTZ_NAMELEN = 10; // 自定义云台协议相关常量 int MAX_KEYNUM = 19; // 最大按键数量 int MAX_KEYSIZE = 24; // 按键码最大长度 // ==================== PTZ相关常量 ==================== int MAX_PTZ_NUM = 100; // 最大云台协议数量 int MAX_PTZ_NAMELEN = 10; // 云台协议名称最大长度 // ==================== 录像相关常量 ==================== int HB_MAX_CARD_NUMLEN = 32; // 卡号最大长度 // ==================== 软件版本相关常量 ==================== int HB_SOFTWAREVER_LEN = 64; // 软件版本号长度 int HB_SOFTBUILDDATE_LEN = 32; // 软件生成日期长度 int HB_PANELVER_LEN = 32; // 前面板版本长度 int HB_HARDWAREVER_LEN = 32; // 硬件版本号长度 // ==================== 网络相关常量 ==================== int HB_NET_MACADDR_LEN = 6; // MAC地址长度 int HB_NET_ETHERNET_NUM = 2; // 以太网口数量 int HB_NET_PPPOEUSER_LEN = 32; // PPPOE用户名长度 int HB_NET_PPPOEPWD_LEN = 16; // PPPOE密码长度 int HB_NET_PATHNAME_LEN = 128; // 路径名长度 // ==================== 移动侦测相关常量 ==================== int HB_MOTION_SCOPE_WIDTH = 22; // 移动侦测区域宽度 int HB_MOTION_SCOPE_HIGHT = 18; // 移动侦测区域高度 // ==================== 报警相关常量 ==================== int MAX_DISKNUM = 16; // 最大硬盘数量 // ==================== 错误码定义 ==================== int HB_NET_NOERROR = 0; int HB_NET_PASSWORD_ERROR = -1; int HB_NET_NOENOUGHPRI = -2; int HB_NET_NOINIT = -3; int HB_NET_CHANNEL_ERROR = -4; int HB_NET_OVER_MAXLINK = -5; int HB_NET_VERSIONNOMATCH = -6; int HB_NET_NETWORK_FAIL_CONNECT = -7; int HB_NET_NETWORK_SEND_ERROR = -8; int HB_NET_NETWORK_RECV_ERROR = -9; int HB_NET_NETWORK_RECV_TIMEOUT = -10; int HB_NET_NETWORK_ERRORDATA = -11; int HB_NET_ORDER_ERROR = -12; int HB_NET_OPERNOPERMIT = -13; int HB_NET_COMMANDTIMEOUT = -14; int HB_NET_ERRORSERIALPORT = -15; int HB_NET_ERRORALARMPORT = -16; int HB_NET_PARAMETER_ERROR = -17; int HB_NET_CHAN_EXCEPTION = -18; int HB_NET_NODISK = -19; int HB_NET_ERRORDISKNUM = -20; int HB_NET_DISK_FULL = -21; int HB_NET_DISK_ERROR = -22; int HB_NET_NOSUPPORT = -23; int HB_NET_BUSY = -24; int HB_NET_MODIFY_FAIL = -25; int HB_NET_PASSWORD_FORMAT_ERROR = -26; int HB_NET_DISK_FORMATING = -27; int HB_NET_DVRNORESOURCE = -28; int HB_NET_DVROPRATEFAILED = -29; int HB_NET_OPENHOSTSOUND_FAIL = -30; int HB_NET_DVRVOICEOPENED = -31; int HB_NET_TIMEINPUTERROR = -32; int HB_NET_NOSPECFILE = -33; int HB_NET_CREATEFILE_ERROR = -34; int HB_NET_FILEOPENFAIL = -35; int HB_NET_OPERNOTFINISH = -36; int HB_NET_GETPLAYTIMEFAIL = -37; int HB_NET_PLAYFAIL = -38; int HB_NET_FILEFORMAT_ERROR = -39; int HB_NET_DIR_ERROR = -40; int HB_NET_ALLOC_RESOUCE_ERROR = -41; int HB_NET_AUDIO_MODE_ERROR = -42; int HB_NET_NOENOUGH_BUF = -43; int HB_NET_CREATESOCKET_ERROR = -44; int HB_NET_SETSOCKET_ERROR = -45; int HB_NET_MAX_NUM = -46; int HB_NET_USERNOTEXIST = -47; int HB_NET_WRITEFLASHERROR = -48; int HB_NET_UPGRADEFAIL = -49; int HB_NET_CARDHAVEINIT = -50; int HB_NET_PLAYERFAILED = -51; int HB_NET_MAX_USERNUM = -52; int HB_NET_GETLOCALIPANDMACFAIL = -53; int HB_NET_NOENCODEING = -54; int HB_NET_IPMISMATCH = -55; int HB_NET_MACMISMATCH = -56; int HB_NET_UPGRADELANGMISMATCH = -57; int HB_NET_USERISALIVE = -58; int HB_NET_UNKNOWNERROR = -59; int HB_NET_IPERR = -101; int HB_NET_MACERR = -102; int HB_NET_PSWERR = -103; int HB_NET_USERERR = -104; int HB_NET_USERISFULL = -105; int NO_PERMISSION = 0xf0; // ==================== 录像类型 ==================== int HB_REC_MANUAL = 1; int HB_REC_SCHEDULE = 2; int HB_REC_MOTION = 4; int HB_REC_ALARM = 8; int HB_REC_ALL = 0xff; // ==================== 查找文件返回值 ==================== int HB_NET_FILE_SUCCESS = 1000; int HB_NET_FILE_NOFIND = 1001; int HB_NET_ISFINDING = 1002; int HB_NET_NOMOREFILE = 1003; int HB_NET_FILE_EXCEPTION = 1004; // ==================== 协议版本 ==================== int HB_NET_PROTOCOL_V1 = 0x10; int HB_NET_PROTOCOL_V2 = 0x20; // ==================== 云台控制命令 ==================== int TILT_UP = 0x0001000c; int TILT_DOWN = 0x0001000d; int PAN_LEFT = 0x0001000e; int PAN_RIGHT = 0x0001000f; int FOCUS_NEAR = 0x00010014; int FOCUS_FAR = 0x00010015; int ZOOM_IN = 0x00010016; int ZOOM_OUT = 0x00010017; int IRIS_OPEN = 0x00010018; int IRIS_CLOSE = 0x00010019; int PAN_AUTO = 0x0001001c; int LIGHT_PWRON = 0x00010024; int WIPER_PWRON = 0x00010025; int TM_COM_GUI_BRUSH = 0x0001002e; int SET_PRESET = 0x0001001a; int CLE_PRESET = 18; int GOTO_PRESET = 0x0001001b; int ALL_STOP = 0x00010028; // ==================== 播放控制命令 ==================== int HB_NET_PLAYSTART = 1; int HB_NET_PLAYSTOP = 2; int HB_NET_PLAYPAUSE = 3; int HB_NET_PLAYRESTART = 4; int HB_NET_PLAYFAST = 5; int HB_NET_PLAYSLOW = 6; int HB_NET_PLAYNORMAL = 7; int HB_NET_PLAYFRAME = 8; int HB_NET_PLAYSTARTAUDIO = 9; int HB_NET_PLAYSTOPAUDIO = 10; int HB_NET_PLAYBACK = 21; int HB_NET_PLAYBYSLIDER = 22; // ==================== 配置命令 ==================== int HB_NET_GET_VEFF = 0x04; int HB_NET_SET_VEFF = 0x05; int HB_NET_GET_ALARM = 0x19; int HB_NET_SET_ALARM = 0x1A; int HB_NET_GET_MANURECORD_STAT = 0x21; int HB_NET_SET_MANURECORD_STAT = 0x20; int HB_NET_GET_WORK_STAT = 0x22; int HB_NET_GET_DEVICECFG = 0x26; int HB_NET_SET_DEVICECFG = 0x27; int HB_NET_GET_NETCFG = 0x28; int HB_NET_SET_NETCFG = 0x29; int HB_NET_GET_PICCFG = 0x2A; int HB_NET_SET_PICCFG = 0x2B; int HB_NET_GET_COMPRESSCFG = 0x2C; int HB_NET_SET_COMPRESSCFG = 0x2D; int HB_NET_GET_RECORDCFG = 0x2E; int HB_NET_SET_RECORDCFG = 0x2F; int HB_NET_GET_DECODERCFG = 0x30; int HB_NET_SET_DECODERCFG = 0x31; int HB_NET_GET_ALARMINCFG = 0x32; int HB_NET_SET_ALARMINCFG = 0x33; int HB_NET_GET_ALARMOUTCFG = 0x34; int HB_NET_SET_ALARMOUTCFG = 0x35; int HB_NET_GET_TIMECFG = 0x36; int HB_NET_SET_TIMECFG = 0x37; int HB_NET_GET_USERCFG = 0x38; int HB_NET_SET_USERCFG = 0x39; int HB_NET_GET_SERIALCFG = 0x3A; int HB_NET_SET_SERIALCFG = 0x3B; int HB_NET_GET_DDNSCFG = 0x60; int HB_NET_SET_DDNSCFG = 0x61; int HB_NET_GET_PPPOE = 0x62; int HB_NET_SET_PPPOE = 0x63; int HB_NET_GET_SERVERCFG = 0x64; int HB_NET_SET_SERVERCFG = 0x65; int HB_NET_GET_SERIALID = 0x68; int HB_NET_SET_SERIALID = 0x67; int HB_NET_GET_DEVTYPE = 0x71; int HB_NET_GET_PRESETPOLL = 0x74; int HB_NET_SET_PRESETPOLL = 0x73; int HB_NET_GET_VIDEOSYS = 0x76; int HB_NET_SET_VIDEOSYS = 0x75; int HB_NET_GET_BUZSTAT = 0x81; int HB_NET_SET_BUZSTAT = 0x80; int HB_NET_GET_IFRAMERATE = 0x84; int HB_NET_SET_IFRAMERATE = 0x89; int HB_NET_GET_WIRELESSCFG = 0x88; int HB_NET_SET_WIRELESSCFG = 0x87; int HB_NET_GET_NTPCFG = 0x91; int HB_NET_SET_NTPCFG = 0x90; int HB_NET_GET_SMTPCFG = 0x93; int HB_NET_SET_SMTPCFG = 0x92; int HB_NET_GET_POLLCFG = 0x95; int HB_NET_SET_POLLCFG = 0x94; int HB_NET_GET_VIDEOMATRIX = 0x97; int HB_NET_SET_VIDEOMATRIX = 0x96; int HB_NET_GET_VCOVERDETECT = 0x98; int HB_NET_SET_VCOVERDETECT = 0x99; int HB_NET_GET_REALDEFENCECFG = 0xA5; int HB_NET_SET_REALDEFENCECFG = 0xA6; int HB_NET_GET_ZEROVENCCFG = 0xA8; int HB_NET_SET_ZEROVENCCFG = 0xA9; int HB_NET_GET_DSTTIME = 0xAA; int HB_NET_SET_DSTTIME = 0xAB; int HB_NET_GET_FTPUPGRADECFG = 0xAC; int HB_NET_SET_FTPUPGRADECFG = 0xAD; int HB_NET_GET_FTPRECORDCFG = 0xAE; int HB_NET_SET_FTPRECORDCFG = 0xAF; int HB_NET_GET_IPCWORKPARAM = 0xB0; int HB_NET_SET_IPCWORKPARAM = 0xB1; int HB_NET_GET_ALARMPORTATTR = 0xC9; int HB_NET_GET_NVRALARMINCFG = 0xCA; int HB_NET_SET_NVRALARMINCFG = 0xCB; int HB_NET_GET_NVRALARMOUTCFG = 0xCC; int HB_NET_SET_NVRALARMOUTCFG = 0xCD; int HB_NET_GET_NVRALARMINSTAT = 0xCE; int HB_NET_GET_NVRCHLCFG = 0xD2; int HB_NET_SET_NVRCHLCFG = 0xD3; int HB_NET_GET_NVRRECORDCFG = 0xD4; int HB_NET_SET_NVRRECORDCFG = 0xD5; int HB_NET_GET_NVRMTDTTCFG = 0xD6; int HB_NET_SET_NVRMTDTTCFG = 0xD7; int HB_NET_GET_ABNORALARMCFG = 0xD8; int HB_NET_SET_ABNORALARMCFG = 0xD9; int HB_NET_GET_NVRRESOLUTION = 0xDC; int HB_NET_SET_NVRRESOLUTION = 0xDD; int HB_NET_GET_SNAPSHOTCFG = 0xE4; int HB_NET_SET_SNAPSHOTCFG = 0xE5; int HB_NET_GET_CHLPARAMSUPPORT = 0xE6; int HB_NET_GET_USERINFO = 0xE8; int HB_NET_SET_USERINFO = 0xE9; int HB_NET_GET_PLATFORMCFG = 0xF0; int HB_NET_SET_PLATFORMCFG = 0xF1; int COMM_ALARM = 0x1100; int COMM_CONNECT = 0x1200; // ==================== 升级状态 ==================== int HB_NET_UPGRADE_FAIL = 0; int HB_NET_UPGRADE_VER_ERR = -1; int HB_NET_UPGRADE_TRAN_SUC = 100; int HB_NET_UPGRADE_SUC = 101; // ==================== 导入导出状态 ==================== int HB_IMPORT_OK = 0x01; int HB_TRANS_FILE_ERR = 0x02; int HB_FILE_VERSION_ERR = 0x03; // ==================== 枚举类型定义 ==================== enum HB_NET_LINKMODE_E { HB_NET_TCP(0), HB_NET_UDP(1), HB_NET_MULTICAST(2); private int value; HB_NET_LINKMODE_E(int value) { this.value = value; } public int getValue() { return value; } } enum HB_NET_DATATYPE_E { HB_NET_STREAMDATA(2), HB_NET_BACKUPEND(3), HB_NET_SYSHEAD(64); private int value; HB_NET_DATATYPE_E(int value) { this.value = value; } public int getValue() { return value; } } enum HB_NET_RECTYPE_E { HB_NET_RECMANUAL(1), HB_NET_RECSCHEDULE(2), HB_NET_RECMOTION(4), HB_NET_RECALARM(8), HB_NET_REC_ALL(0xff); private int value; HB_NET_RECTYPE_E(int value) { this.value = value; } public int getValue() { return value; } } enum HB_NET_DEVTYPE_E { HB_7000T(0), HB_8000T(1), HB_8200T(2), HB_8000ATM(3), HB_8600T(4), HB_6200T(5), HB_8004AH(6), HB_8004AI(7), HB_7000H(8), HB_7200H(9), HB_7000M(12), HB_8000M(13), HB_8200M(14), HB_7000L(15), HB_2201TL(16), HB_2600T(17), HB_2600TB(18), HB_2600TC(19), HB_9300(20), HB_9400(21), HB_9824N16H(1000), HB_9832N16H(1001), HB_9904(1002), HB_9908(1003), HB_9912(1004), HB_9916(1005), HB_9932(1006), HB_7904(1007), HB_7908(1008), HB_7912(1009), HB_7916(1010); private int value; HB_NET_DEVTYPE_E(int value) { this.value = value; } public int getValue() { return value; } } enum HB_NET_MEMSIZE_E { HB_M8(0), HB_M16(1), HB_M32(2), HB_M64(3), HB_M128(4), HB_M256(5), HB_M512(6), HB_M1024(7); private int value; HB_NET_MEMSIZE_E(int value) { this.value = value; } public int getValue() { return value; } } enum LOG_PRI_TYPE { LOG_PRI_ALL(-1), LOG_PRI_ERROR(0), LOG_PRI_ALARM(1), LOG_PRI_OPERATE(2), LOG_PRI_MAX(3); private int value; LOG_PRI_TYPE(int value) { this.value = value; } public int getValue() { return value; } } enum LOG_OPERATE_TYPE { LOG_OP_ALL(-1), LOG_OP_POWERON(0), LOG_OP_SHUTDOWN(1), LOG_OP_EXC_SHUTDOWN(2), LOG_OP_REBOOT(3), LOG_OP_LOGIN(4), LOG_OP_LOGOUT(5), LOG_OP_SETCONFIG(6), LOG_OP_FRONTEND_SETCONFIG(7), LOG_OP_UPGRADE(8), LOG_OP_FRONTEND_UPGRADE(9), LOG_OP_RECORD_START(10), LOG_OP_RECORD_STOP(11), LOG_OP_PTZ(12), LOG_OP_MANUAL_ALARM(13), LOG_OP_FORMAT_DISK(14), LOG_OP_FILE_PLAYBACK(15), LOG_OP_EXPORT_CONFIGFILE(16), LOG_OP_LMPORT_CONFIGFILE(17), LOG_OP_FREXPORT_CONFIGFILE(18), LOG_OP_FRLMPORT_CONFIGFILE(19), LOG_OP_BACKUP_REC(20), LOG_OP_DEFAULT(21), LOG_OP_SETTIME(22), LOG_OP_TRANSCOM_OPEN(23), LOG_OP_TRANSCOM_CLOSE(24), LOG_OP_TALKBACK_START(25), LOG_OP_TALKBACK_STOP(26), LOG_OP_TYPE_NONE(27), LOG_OP_TYPE_MANUAL(28), LOG_OP_TYPE_TIME(29), LOG_OP_TYPE_MOTION(30), LOG_OP_TYPE_SENSOR(31), LOG_OP_TYPE_MOTION_OR_SENSOR(32), LOG_OP_TYPE_MOTION_AND_SENSOR(33), LOG_OP_REMOTE_LOGIN(34), LOG_OP_REMOTE_LOGOUT(35), LOG_OP_TYPE_MAX(36); private int value; LOG_OPERATE_TYPE(int value) { this.value = value; } public int getValue() { return value; } } enum LOG_ALARM_TYPE { LOG_ALM_ALL(-1), LOG_ALM_LOCAL_SENSORIN(0), LOG_ALM_LOCAL_SENSOROUT(1), LOG_ALM_FRONTEND_SENSORIN(2), LOG_ALM_FRONTEND_SENSOROUT(3), LOG_ALM_MOTION_START(4), LOG_ALM_MOTION_STOP(5), LOG_ALM_MAIL_UPLOAD(6), LOG_ALM_TYPE_MAX(7); private int value; LOG_ALARM_TYPE(int value) { this.value = value; } public int getValue() { return value; } } enum LOG_ERROR_TYPE { LOG_ERR_ALL(-1), LOG_ERR_VIDEOLOST(0), LOG_ERR_HD_ERROR(1), LOG_ERR_HD_FULL(2), LOG_ERR_LOGIN_FAIL(3), LOG_ERR_TEMP_HI(4), LOG_ERR_HD_PFILE_INDEX(5), LOG_ERR_HD_DEV_FATAL(6), LOG_ERR_IP_CONFLICT(7), LOG_ERR_NET_EXCEPTION(8), LOG_ERR_REC_EXCEPTION(9), LOG_ERR_FRONTEND_EXCEPTION(10), LOG_ERR_TIME_EXCEPTION(11), LOG_ERR_FRONTBOARD_EXCEPTION(12), LOG_ERR_TYPE_MAX(13); private int value; LOG_ERROR_TYPE(int value) { this.value = value; } public int getValue() { return value; } } enum HB_NET_IVA_ALARM_TYPE_E { HB_NET_IVA_FACE_BLOCK(0), HB_NET_IVA_FACE_NOSIGNAL(1), HB_NET_IVA_FACE_UNUSUAL(2), HB_NET_IVA_FACE_NORMAL(3), HB_NET_IVA_PANEL_BLOCK(40), HB_NET_IVA_PANEL_NOSIGNAL(41), HB_NET_IVA_PANEL_PASTE(42), HB_NET_IVA_PANEL_KEYBOARD(43), HB_NET_IVA_PANEL_KEYMASK(44), HB_NET_IVA_PANEL_CARDREADER(45), HB_NET_IVA_PANEL_TMIEOUT(46), HB_NET_IVA_ENTER(47), HB_NET_IVA_EXIT(48), HB_NET_IVA_MONEY_BLOCK(80), HB_NET_IVA_MONEY_NOSIGNAL(81), HB_NET_IVA_MONEY_UNUSUAL(82), HB_NET_IVA_ENVI_BLOCK(120), HB_NET_IVA_ENVI_NOSIGNAL(121), HB_NET_IVA_ENVI_GATHER(122), HB_NET_IVA_ENVI_MANYPEOPLEINREGION(123), HB_NET_IVA_ENVI_LINGERING(124), HB_NET_IVA_ENVI_LIEDOWN(125), HB_NET_IVA_ENVI_FORBIDREGION(126), HB_NET_IVA_ENVI_LEAVEOBJECT(127); private int value; HB_NET_IVA_ALARM_TYPE_E(int value) { this.value = value; } public int getValue() { return value; } } enum HB_NET_HDCCOUNT_DIRECTION_E { HBGK_HDCCOUNT_DIR1(0), HBGK_HDCCOUNT_DIR2(1); private int value; HB_NET_HDCCOUNT_DIRECTION_E(int value) { this.value = value; } public int getValue() { return value; } } // ==================== 回调函数接口 ==================== interface PHB_NET_STREAMDATA_PROC extends Callback { void invoke(long lRealHandle, HB_NET_DATACALLBACK pStreamData); } interface PHB_NET_VOICEDATA_PROC extends Callback { void invoke(long lVoiceComHandle, Pointer lpData); } interface PHB_NET_ALARM_PROC extends Callback { void invoke(long lCommand, Pointer lpAlarmInfo); } interface PHB_NET_SERIALDATA_PROC extends Callback { void invoke(long lSerialHandle, Pointer lpData); } interface PHB_NET_IVADATA_PROC extends Callback { void invoke(long lIVAHandle, Pointer lpData); } interface PHB_NET_LOGIN_PROC extends Callback { boolean invoke(long lUserID, String sDevIP, Pointer pDevInfo, Pointer pContext); } // ==================== 基础结构体 ==================== public static class HB_NET_TIME extends Structure { public int dwYear; public int dwMonth; public int dwDay; public int dwHour; public int dwMinute; public int dwSecond; public int dwMillisecond; public int dwRes; public HB_NET_TIME() { super(); } @Override protected List getFieldOrder() { return Arrays.asList("dwYear", "dwMonth", "dwDay", "dwHour", "dwMinute", "dwSecond", "dwMillisecond", "dwRes"); } } public static class HB_NET_VIDEOPARAM extends Structure { public int dwBrightValue; public int dwContrastValue; public int dwSaturationValue; public int dwHueValue; @Override protected List getFieldOrder() { return Arrays.asList("dwBrightValue", "dwContrastValue", "dwSaturationValue", "dwHueValue"); } } public static class HB_NET_SCHEDTIME extends Structure { public byte byEnable; public byte byStartHour; public byte byStartMin; public byte byStartSec; public byte byStopHour; public byte byStopMin; public byte byStopSec; public byte byRes; @Override protected List getFieldOrder() { return Arrays.asList("byEnable", "byStartHour", "byStartMin", "byStartSec", "byStopHour", "byStopMin", "byStopSec", "byRes"); } } public static class HB_NET_RECT extends Structure { public short wTopLeftX; public short wTopLeftY; public short wWidth; public short wHeight; @Override protected List getFieldOrder() { return Arrays.asList("wTopLeftX", "wTopLeftY", "wWidth", "wHeight"); } } public static class HB_NET_IVA_POINT extends Structure { public short x; public short y; @Override protected List getFieldOrder() { return Arrays.asList("x", "y"); } } public static class HB_NET_IVA_RECT extends Structure { public int left; public int top; public int right; public int bottom; @Override protected List getFieldOrder() { return Arrays.asList("left", "top", "right", "bottom"); } } // ==================== 设备信息 ==================== public static class HB_NET_DEVICEINFO extends Structure { public int dwSize; public byte[] sSerialNumber = new byte[HB_SERIALNO_LEN]; public byte[] sDvrName = new byte[HB_NAME_LEN]; public byte[] sChanName = new byte[HB_MAX_CHANNUM * HB_NAME_LEN]; public byte byAlarmInPortNum; public byte byAlarmOutPortNum; public byte byDiskNum; public byte byProtocol; public byte byChanNum; public byte byEncodeType; public byte[] byRes = new byte[10]; public HB_NET_DEVICEINFO() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "sSerialNumber", "sDvrName", "sChanName", "byAlarmInPortNum", "byAlarmOutPortNum", "byDiskNum", "byProtocol", "byChanNum", "byEncodeType", "byRes"); } } // ==================== 预览相关 ==================== public static class HB_NET_STREAMCALLBACKDATA extends Structure { public int dwSize; public int dwDataType; // HB_NET_DATATYPE_E public Pointer pFrame; public int dwDataSize; public Pointer pContext; public HB_NET_STREAMCALLBACKDATA() { super(); dwSize = size(); } public HB_NET_STREAMCALLBACKDATA(Pointer p) { super(p); read(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwDataType", "pFrame", "dwDataSize", "pContext"); } } public static class HB_NET_CLIENTINFO extends Structure { public int dwSize; public int lChannel; public int lStreamType; public int lLinkMode; // HB_NET_LINKMODE_E public byte[] sMultiCastIP = new byte[32]; public PHB_NET_STREAMDATA_PROC pfnCallback; public Pointer pContext; public int[] dwRes = new int[2]; public HB_NET_CLIENTINFO() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "lChannel", "lStreamType", "lLinkMode", "sMultiCastIP", "pfnCallback", "pContext", "dwRes"); } } /** * 数据回调结构体 - 对应 C++ 的 HB_NET_DATACALLBACK */ public static class HB_NET_DATACALLBACK extends Structure { public int dwSize; public int dwDataType; // 2-视频流数据, 64-系统头数据 public Pointer pFrame; // 数据指针 public int dwDataSize; // 数据长度 public Pointer pContext; // 用户上下文 public HB_NET_DATACALLBACK() { super(); dwSize = size(); } public HB_NET_DATACALLBACK(Pointer p) { super(p); read(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwDataType", "pFrame", "dwDataSize", "pContext"); } } /** * 数据回调参数结构体 - 对应 C++ 的 HB_NET_DATACALLBACKPARAM */ public static class HB_NET_DATACALLBACKPARAM extends Structure { public int dwSize; public PHB_NET_STREAMDATA_PROC pfnCallback; // 回调函数 public Pointer pContext; // 用户上下文 public int dwRes; // 保留 public HB_NET_DATACALLBACKPARAM() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "pfnCallback", "pContext", "dwRes"); } } public static class HB_NET_STREAMDATA_SAVE_PARAM extends Structure { public int dwSize; public int dwTransType; public String pFileName; public int dwRes; public HB_NET_STREAMDATA_SAVE_PARAM() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwTransType", "pFileName", "dwRes"); } } // ==================== 云台控制 ==================== public static class HB_NET_PTZCTRL extends Structure { public int dwSize; public int dwChannel; public int dwPTZCmd; public int dwIndex; public int dwSpeed; public int dwRes; public HB_NET_PTZCTRL() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwChannel", "dwPTZCmd", "dwIndex", "dwSpeed", "dwRes"); } } public static class HB_NET_PTZ_TRANS extends Structure { public int dwSize; public int dwChannel; public String pPTZCodeBuf; public int dwBufSize; public int dwRes; public HB_NET_PTZ_TRANS() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwChannel", "pPTZCodeBuf", "dwBufSize", "dwRes"); } } public static class HB_NET_DECODERCUSTOMIZE extends Structure { public int dwSize; public byte[][] CommandKey = new byte[MAX_KEYNUM][MAX_KEYSIZE]; public byte CheckSum; public byte PortNum; public byte PreSet; public byte CheckSumMode; public byte KeyLen; public byte KeyNum; public byte[] byRes = new byte[2]; public int dwRes; public HB_NET_DECODERCUSTOMIZE() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "CommandKey", "CheckSum", "PortNum", "PreSet", "CheckSumMode", "KeyLen", "KeyNum", "byRes", "dwRes"); } } public static class HB_NET_PTZTYPE extends Structure { public int dwSize; public byte byType; public byte byChannel; public byte[] byRes = new byte[6]; public int dwPTZnum; public byte[] ptztype = new byte[MAX_PTZ_NUM * MAX_PTZ_NAMELEN]; public int dwRes; public HB_NET_PTZTYPE() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "byType", "byChannel", "byRes", "dwPTZnum", "ptztype", "dwRes"); } } // ==================== 录像查找和回放 ==================== public static class HB_NET_FILEFINDCOND extends Structure { public int dwSize; public int dwChannel; public int dwFileType; // HB_NET_RECTYPE_E public int dwUseCardNO; public HB_NET_TIME struStartTime; public HB_NET_TIME struStopTime; public byte[] sCardNumber = new byte[HB_MAX_CARD_NUMLEN]; public int dwRes; public HB_NET_FILEFINDCOND() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwChannel", "dwFileType", "dwUseCardNO", "struStartTime", "struStopTime", "sCardNumber", "dwRes"); } } public static class HB_NET_FINDDATA extends Structure { public int dwSize; public HB_NET_TIME struStartTime; public HB_NET_TIME struStopTime; public int dwFileSize; public int dwChannel; public int dwFileType; public int dwRes; public HB_NET_FINDDATA() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "struStartTime", "struStopTime", "dwFileSize", "dwChannel", "dwFileType", "dwRes"); } } public static class HB_NET_PLAYBACKCOND extends Structure { public int dwSize; public int dwChannel; public HB_NET_TIME struStartTime; public HB_NET_TIME struStopTime; public PHB_NET_STREAMDATA_PROC pfnDataProc; public Pointer pContext; public int dwType; public int dwRes; public HB_NET_PLAYBACKCOND() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwChannel", "struStartTime", "struStopTime", "pfnDataProc", "pContext", "dwType", "dwRes"); } } public static class HB_NET_PLAYBACKCTRL extends Structure { public int dwSize; public int dwCmd; public String pInBuffer; public int dwInLen; public Pointer pOutBuffer; public IntByReference lpOutLen; public int dwRes; public HB_NET_PLAYBACKCTRL() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwCmd", "pInBuffer", "dwInLen", "pOutBuffer", "lpOutLen", "dwRes"); } } public static class HB_NET_FILEGETCOND extends Structure { public int dwSize; public int dwChannel; public int dwFileType; // HB_NET_RECTYPE_E public HB_NET_TIME struStartTime; public HB_NET_TIME struStopTime; public PHB_NET_STREAMDATA_PROC pfnDataProc; public Pointer dwContext; public String pSaveFilePath; public int dwRes; public HB_NET_FILEGETCOND() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwChannel", "dwFileType", "struStartTime", "struStopTime", "pfnDataProc", "dwContext", "pSaveFilePath", "dwRes"); } } // ==================== 配置相关 ==================== public static class HB_NET_SCHEDULE_VIDEOPARAM extends Structure { public byte byStartMin; public byte byStartHour; public byte byEndMin; public byte byEndHour; public int dwRes; public HB_NET_VIDEOPARAM VideoParam; @Override protected List getFieldOrder() { return Arrays.asList("byStartMin", "byStartHour", "byEndMin", "byEndHour", "dwRes", "VideoParam"); } } public static class HB_NET_VIDEOEFFECT extends Structure { public int dwSize; public int dwChannel; public HB_NET_SCHEDULE_VIDEOPARAM[] Schedule_VideoParam = new HB_NET_SCHEDULE_VIDEOPARAM[2]; public HB_NET_VIDEOPARAM Default_VideoParam; public int[] dwRes = new int[2]; public HB_NET_VIDEOEFFECT() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwChannel", "Schedule_VideoParam", "Default_VideoParam", "dwRes"); } } public static class HB_NET_ALARMOUTSTAT extends Structure { public int dwSize; public int dwStat; public int dwOpType; public int dwChannel; public byte[] byOutput = new byte[HB_MAX_ALARMOUT]; public int dwRes; public HB_NET_ALARMOUTSTAT() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwStat", "dwOpType", "dwChannel", "byOutput", "dwRes"); } } public static class HB_NET_MANURECORD extends Structure { public int dwSize; public byte[] byChannel = new byte[HB_MAX_CHANNUM]; public int dwRes; public HB_NET_MANURECORD() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "byChannel", "dwRes"); } } public static class HB_NET_DISKSTAT extends Structure { public int dwVolume; public int dwFreeSpace; public int dwStat; @Override protected List getFieldOrder() { return Arrays.asList("dwVolume", "dwFreeSpace", "dwStat"); } } public static class HB_NET_CHANNELSTAT extends Structure { public byte byRecordStat; public byte bySignalStat; public byte byHardWareStat; public byte byLinkNum; public int dwBitRate; @Override protected List getFieldOrder() { return Arrays.asList("byRecordStat", "bySignalStat", "byHardWareStat", "byLinkNum", "dwBitRate"); } } public static class HB_NET_WORKSTAT extends Structure { public int dwSize; public HB_NET_DISKSTAT[] struHardDiskStat = new HB_NET_DISKSTAT[HB_MAX_HARDDISK]; public HB_NET_CHANNELSTAT[] struChanStat = new HB_NET_CHANNELSTAT[HB_MAX_CHANNUM]; public byte[] byAlarmInStat = new byte[HB_MAX_ALARMIN]; public byte[] byAlarmOutStat = new byte[HB_MAX_ALARMOUT]; public IntByReference pBytesRet; public int dwRes; public HB_NET_WORKSTAT() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "struHardDiskStat", "struChanStat", "byAlarmInStat", "byAlarmOutStat", "pBytesRet", "dwRes"); } } public static class HB_NET_DEVICECFG extends Structure { public int dwSize; public int dwDevID; public byte[] sDevName = new byte[HB_NAME_LEN]; public byte[] sSerialNumber = new byte[HB_SERIALNO_LEN]; public byte[] sSoftwareVer = new byte[HB_SOFTWAREVER_LEN]; public byte[] sSoftwareBuildDate = new byte[HB_SOFTBUILDDATE_LEN]; public byte[] sPanelVer = new byte[HB_PANELVER_LEN]; public byte[] sHardwareVer = new byte[HB_HARDWAREVER_LEN]; public int dwRecycleRecord; public int dwDSPSoftwareVer; public int dwDevType; public byte byAlarmInPortNum; public byte byAlarmOutPortNum; public byte byDiskNum; public byte byChanNum; public byte byRS232Num; public byte byRS485Num; public byte byNetworkPortNum; public byte byDiskCtrlNum; public byte byStartChan; public byte byDecodeChans; public byte byVGANum; public byte byUSBNum; public int dwRes; public HB_NET_DEVICECFG() { super(); dwSize = size(); } @Override protected List getFieldOrder() { return Arrays.asList("dwSize", "dwDevID", "sDevName", "sSerialNumber", "sSoftwareVer", "sSoftwareBuildDate", "sPanelVer", "sHardwareVer", "dwRecycleRecord", "dwDSPSoftwareVer", "dwDevType", "byAlarmInPortNum", "byAlarmOutPortNum", "byDiskNum", "byChanNum", "byRS232Num", "byRS485Num", "byNetworkPortNum", "byDiskCtrlNum", "byStartChan", "byDecodeChans", "byVGANum", "byUSBNum", "dwRes"); } } // ==================== API函数声明 ==================== // 初始化/释放 boolean HB_NET_Init(); boolean HB_NET_Cleanup(); int HB_NET_GetLastError(); int HB_NET_SetLogLevel(int level); // 登录/登出 long HB_NET_Login(String sDevIP, short wDevPort, String sUserName, String sPassword, HB_NET_DEVICEINFO lpDeviceInfo); boolean HB_NET_Logout(long lUserID); // 预览模块 long HB_NET_RealPlay(long lUserID, HB_NET_CLIENTINFO lpClientInfo); boolean HB_NET_StopRealPlay(long lRealHandle); boolean HB_NET_MakeKeyFrame(long lUserID, long lChannel, long lStreamType); boolean HB_NET_OpenSound(long lRealHandle); boolean HB_NET_CloseSound(long lRealHandle); boolean HB_NET_SetVolume(long lRealHandle, short wVolume); boolean HB_NET_GetVolume(long lRealHandle, short[] pVolume); boolean HB_NET_SetStreamDataCallback(long lStreamHandle, HB_NET_DATACALLBACKPARAM lpCallbackParam); boolean HB_NET_SaveStreamData(long lStreamHandle, HB_NET_STREAMDATA_SAVE_PARAM lpParam); boolean HB_NET_StopSaveStreamData(long lStreamHandle); // 云台控制 boolean HB_NET_PTZControl(long lUserID, HB_NET_PTZCTRL lpCtrl); boolean HB_NET_TransPTZ(long lUserID, HB_NET_PTZ_TRANS lpTrans); boolean HB_NET_SetUserPTZProtocol(long lUserID, HB_NET_DECODERCUSTOMIZE lpPTZProtocol); boolean HB_NET_GetUserPTZProtocol(long lUserID, HB_NET_DECODERCUSTOMIZE lpPTZProtocol); boolean HB_NET_GetPTZProtocolList(long lUserID, HB_NET_PTZTYPE lpPTZType); // 录像查找 long HB_NET_FindFile(long lUserID, HB_NET_FILEFINDCOND lpFindCond); long HB_NET_FindNextFile(long lFindHandle, HB_NET_FINDDATA lpFindData); boolean HB_NET_FindFileClose(long lFindHandle); // 回放 long HB_NET_PlayBack(long lUserID, HB_NET_PLAYBACKCOND lpPlayBackCond); boolean HB_NET_PlayBackControl(long lPlayHandle, HB_NET_PLAYBACKCTRL lpPlayBackCtrl); boolean HB_NET_StopPlayBack(long lPlayHandle); // 下载 long HB_NET_GetFile(long lUserID, HB_NET_FILEGETCOND pGetFile); long HB_NET_GetDownloadTotalSize(long lFileHandle); long HB_NET_GetDownloadBytes(long lFileHandle); boolean HB_NET_StopGetFile(long lFileHandle); boolean HB_NET_ClearAlarm(long lUserID); boolean HB_NET_GetDevWorkStat(long lUserID, HB_NET_WORKSTAT lpWorkStat); long HB_NET_Upgrade(long lUserID, String sFileName); boolean HB_NET_CloseUpgrade(long lUpgradeHandle); boolean HB_NET_CloseFindLog(long lLogHandle); boolean HB_NET_RestoreConfig(long lUserID); boolean HB_NET_SaveConfig(long lUserID); boolean HB_NET_Reboot(long lUserID); boolean HB_NET_ShutDown(long lUserID); long HB_NET_FormatDisk(long lUserID, long lDiskNum); boolean HB_NET_CloseFormat(long lFormatHandle); long HB_NET_ExpParamFile(long lUserID, String pSaveFile); boolean HB_NET_CloseExpParamFile(long lExpHandle); long HB_NET_ImpParamFile(long lUserID, String pImpFile); boolean HB_NET_CloseImpParamFile(long lImpHandle); boolean HB_NET_VoiceComSendData(long lVoiceComHandle, byte[] pBuffer, int dwSize); boolean HB_NET_StopVoiceCom(long lVoiceComHandle); boolean HB_NET_ClientAudioStart(); boolean HB_NET_ClientAudioStop(); long HB_NET_AddDev(long lUserID); boolean HB_NET_DelDev(long lVoiceHandle); boolean HB_NET_SerialSend(long lSerialHandle, byte[] pSendData, int dwSize); boolean HB_NET_Stop(long lSerialHandle); boolean HB_NET_IVAStop(long lIVAHandle); boolean HB_NET_ResetIVAEnvi(long lIVAHandle); }