package com.ard.utils.sdk.hiksdk.service; import com.ard.utils.sdk.hiksdk.common.GlobalVariable; import com.ard.utils.sdk.hiksdk.domain.DeviceInfo; import com.ard.utils.sdk.hiksdk.util.hikSdkUtil.HCNetSDK; import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; /** * @Description: 异步登录回调 * @ClassName: FLoginResultCallBack * @Author: 刘苏义 * @Date: 2023年06月12日13:34 * @Version: 1.0 **/ @Slf4j(topic = "hikSdk") public class LoginResultCallBack implements HCNetSDK.FLoginResultCallBack { private DeviceInfo deviceInfo; public LoginResultCallBack(DeviceInfo deviceInfo) { this.deviceInfo = deviceInfo; } @Override public int invoke(int lUserID, int dwResult, HCNetSDK.NET_DVR_DEVICEINFO_V30 lpDeviceinfo, Pointer pUser) { String deviceIpPort = deviceInfo.getIp() + ":" + deviceInfo.getPort(); if (dwResult == 1) { GlobalVariable.loginMap.put(deviceInfo.getDeviceId(), lUserID); log.debug("设备【" + deviceIpPort + "】登录成功"); //获取通道 if(deviceInfo.getDeviceType()!=null) { if (deviceInfo.getDeviceType().equals("3")) { //仅超脑设备获取通道 HikClientUtil.getIPChannelInfo(deviceInfo.getDeviceId(), lUserID); } } // 设置报警回调函数,建立报警上传通道(启用布防) int lAlarmHandle = HikClientUtil.setupAlarmChan(deviceIpPort, lUserID, -1); if (lAlarmHandle != -1) { GlobalVariable.alarmMap.put(deviceInfo.getDeviceId(), lAlarmHandle); } } else { log.debug("设备【" + deviceIpPort + "】登录失败"); } return 1; } }