package com.dahua.netsdk.lib; import com.sun.jna.*; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; public interface ICBCNetSdkLib extends Library { // Linux环境下修改ACDLL为 libACDLL ICBCNetSdkLib NETSDK_ACDLL = Native.load(LibraryLoad.getLoadLibrary("ACDLL"), ICBCNetSdkLib.class); //ICBCNetSdkLib NETSDK_ACDLL = (ICBCNetSdkLib) Native.load(absolutePath, ICBCNetSdkLib.class); class LLong extends IntegerType { private static final long serialVersionUID = 1L; /** * Size of a native long, in bytes. */ public static int size; static { size = Native.LONG_SIZE; if (Utils.getOsPrefix().equalsIgnoreCase("linux-amd64") || Utils.getOsPrefix().equalsIgnoreCase("win32-amd64") || Utils.getOsPrefix().equalsIgnoreCase("mac-64")) { size = 8; } else if (Utils.getOsPrefix().equalsIgnoreCase("linux-i386") || Utils.getOsPrefix().equalsIgnoreCase("win32-x86")) { size = 4; } } /** * Create a zero-valued LLong. */ public LLong() { this(0); } /** * Create a LLong with the given value. */ public LLong(long value) { super(size, value); } } class SdkStructure extends Structure { @Override protected List getFieldOrder() { List fieldOrderList = new ArrayList(); for (Class cls = getClass(); !cls.equals(SdkStructure.class); cls = cls.getSuperclass()) { Field[] fields = cls.getDeclaredFields(); int modifiers; for (Field field : fields) { modifiers = field.getModifiers(); if (Modifier.isStatic(modifiers) || !Modifier.isPublic(modifiers)) { continue; } fieldOrderList.add(field.getName()); } } // System.out.println(fieldOrderList); return fieldOrderList; } @Override public int fieldOffset(String name) { return super.fieldOffset(name); } } /****************************************************************************************************************************** ********** 接口定义 ******************************************************************************************************************************/ /** * 登录回调 */ public interface fConnectCallback extends SDKCallback { public void invoke(String szOutParam, Pointer pUser); } /** * 门禁报警回调 */ public interface fAlarmInfoCallback extends SDKCallback { public void invoke(String szOutParam, Pointer pUser); } /** * 初始化SDK * * @param cb * @param pUser */ public boolean Init(fConnectCallback cb, Pointer pUser); /** * 释放SDK资源 */ public void Cleanup(); /** * 登录接口 * * @param szInParam * @param szOutParam * @param nOutBufSize */ public boolean Login(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 登出接口 * * @param szInParam * @param szOutParam * @param nOutBufSize */ public boolean Logout(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 修改设备密码 * * @param szInParam * @param szOutParam * @param nOutBufSize * @return */ public boolean ModifyPassword(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 获取设备时间 * * @param szInParam * @param szOutParam * @param nOutBufSize */ public boolean GetTime(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 设置设备时间 * * @param szInParam * @param szOutParam * @param nOutBufSize */ public boolean SetTime(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 获取设备信息 * * @param szInParam * @param szOutParam */ public boolean GetDeviceInfo(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 门禁配置(设置) * * @param szInParam * @param szOutParam */ public boolean SetDeviceDoorConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 门禁配置(获取) * * @param szInParam * @param szOutParam */ public boolean GetDeviceDoorConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 时间表(设置) * * @param szInParam * @param szOutParam */ public boolean SetTimeScheduleConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 时间表(获取) * * @param szInParam * @param szOutParam */ public boolean GetTimeScheduleConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 周计划(以门为对象设置) * * @param szInParam * @param szOutParam */ public Boolean SetDoorWeekPlanConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 周计划(以门为对象获取) * * @param szInParam * @param szOutParam */ public Boolean GetDoorWeekPlanConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 操作人员信息 * * @param szInParam * @param szOutParam */ public Boolean OperateUserInfo(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 假日表(设置) * * @param szInParam * @param szOutParam */ public Boolean SetHolidayScheduleConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 假日表(获取) * * @param szInParam * @param szOutParam */ public Boolean GetHolidayScheduleConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 假日组(设置) * * @param szInParam * @param szOutParam */ public Boolean SetHolidayGroupConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 假日组(获取) * * @param szInParam * @param szOutParam */ public Boolean GetHolidayGroupConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 假日计划(以门为对象设置) * * @param szInParam * @param szOutParam */ public Boolean SetDoorHolidayPlanConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 假日计划(以门为对象获取) * * @param szInParam * @param szOutParam */ public Boolean GetDoorHolidayPlanConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 开门方式(设置) * * @param szInParam * @param szOutParam */ public Boolean SetOpenDoorType(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 开门方式(获取) * * @param szInParam * @param szOutParam */ public Boolean GetOpenDoorType(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 多人多卡开门配置 (双人开门设置) * * @param szInParam * @param szOutParam */ public Boolean SetOpenDoorGroupConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 多人多卡开门配置 (双人开门获取) * * @param szInParam * @param szOutParam */ public Boolean GetOpenDoorGroupConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 互锁联动门首卡开门 (设置) * * @param szInParam * @param szOutParam */ public Boolean SetDoorInterlockFirstEnterConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 互锁联动门首卡开门 (获取) * * @param szInParam * @param szOutParam */ public Boolean GetDoorFirstEnterConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 双门互锁 (普通门设置) * * @param szInParam * @param szOutParam */ public Boolean SetInterLockConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 双门互锁 (普通门获取) * * @param szInParam * @param szOutParam */ public Boolean GetInterLockConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 金库开门配置 (设置) * * @param szInParam * @param szOutParam */ public Boolean SetFirstOpenVaultConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 金库开门配置 (获取) * * @param szInParam * @param szOutParam */ public Boolean GetFirstOpenVaultConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 远程开门(针对金库) * * @param szInParam * @param szOutParam */ public Boolean RemoteOpenDoor(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 操作卡信息 * * @param szInParam * @param szOutParam */ public Boolean OperateCardInfo(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 操作信息信息 * * @param szInParam * @param szOutParam */ public Boolean OperateFingerPrintInfo(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 操作人脸信息 * * @param szInParam * @param szOutParam */ public Boolean OperateFaceInfo(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 设置门禁报警回调函数 * * @param cbFun * @param pUser */ public Boolean SetMessageCallBack(fAlarmInfoCallback cbFun, Pointer pUser); /** * 开始订阅门禁设备消息 * * @param szInParam * @param szOutParam */ public Boolean StartSubscribeDeviceMessage(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 停止订阅控制器消息 * * @param szInParam * @param szOutParam */ public Boolean StopSubscribeDeviceMessage(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 开门信息查询 * * @param szInParam * @param szOutParam */ public Boolean QueryOpenDoorInfo(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 门禁状态查询(开关门状态) * * @param szInParam * @param szOutParam */ public Boolean QueryDoorStatus(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 正常开门时间外开门配置 * * @param szInParam * @param szOutParam */ public Boolean GetOutTimeDoorConfig(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 获取信息 * * @param szInParam * @param szOutParam */ public Boolean CaptureFingerprint(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 应用场景配置 * @param szInParam * @param szOutParam * @param nOutBufSize * @return */ public Boolean GetWorkScence(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 下发应用场景配置 * @param szInParam * @param szOutParam * @param nOutBufSize * @return */ public Boolean SetWorkScence(String szInParam, byte[] szOutParam, int nOutBufSize); /** * 远程开门 * @param szInParam * @param szOutParam * @param nOutBufSize * @return */ public Boolean AccessControlOpenDoor(String szInParam, byte[] szOutParam, int nOutBufSize); }