package com.ruoyi.utils.sdk.dhsdk.module; 
 | 
  
 | 
import com.ruoyi.utils.sdk.dhsdk.lib.NetSDKLib; 
 | 
import com.ruoyi.utils.sdk.dhsdk.lib.ToolKits; 
 | 
import com.sun.jna.Structure; 
 | 
import com.sun.jna.ptr.IntByReference; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
  
 | 
import static com.ruoyi.utils.sdk.dhsdk.lib.ToolKits.getErrorCodePrint; 
 | 
  
 | 
/** 
 | 
 * @Description: 
 | 
 * @ClassName: ConfigModule 
 | 
 * @Author: 刘苏义 
 | 
 * @Date: 2023年10月14日14:57:01 
 | 
 **/ 
 | 
@Slf4j(topic = "dhSdk") 
 | 
public class ConfigModule { 
 | 
    public static NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; 
 | 
    public static NetSDKLib configsdk = NetSDKLib.CONFIG_INSTANCE; 
 | 
  
 | 
    /** 
 | 
     * 查询设备状态 
 | 
     */ 
 | 
    public static boolean queryDevState(NetSDKLib.LLong hLoginHandle, int nType, NetSDKLib.SdkStructure stuInfo) { 
 | 
  
 | 
        IntByReference intRetLen = new IntByReference(); 
 | 
        stuInfo.write(); 
 | 
        if (!netsdk.CLIENT_QueryDevState(hLoginHandle, nType, stuInfo.getPointer(), stuInfo.size(), intRetLen, 3000)) { 
 | 
            return false; 
 | 
        } 
 | 
        stuInfo.read(); 
 | 
        return true; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询远程设备状态 
 | 
     */ 
 | 
    public static boolean queryRemotDevState(NetSDKLib.LLong hLoginHandle, int nChn, int nType, NetSDKLib.SdkStructure stuInfo) { 
 | 
  
 | 
        IntByReference intRetLen = new IntByReference(); 
 | 
        stuInfo.write(); 
 | 
        if (!netsdk.CLIENT_QueryRemotDevState(hLoginHandle, nType, nChn, stuInfo.getPointer(), stuInfo.size(), intRetLen, 3000)) { 
 | 
            log.error("Config Failed!" + ToolKits.getErrorCodePrint()); 
 | 
            return false; 
 | 
        } 
 | 
        stuInfo.read(); 
 | 
        return true; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取单个配置 
 | 
     * 
 | 
     * @param hLoginHandle 登陆句柄 
 | 
     * @param nChn         通道号,-1 表示全通道 
 | 
     * @param strCmd       配置名称 
 | 
     * @param cmdObject    配置对应的结构体对象 
 | 
     * @return 成功返回 true 
 | 
     */ 
 | 
    public static boolean GetNewDevConfig(NetSDKLib.LLong hLoginHandle, int nChn, String strCmd, Structure cmdObject) { 
 | 
        boolean result = false; 
 | 
        IntByReference error = new IntByReference(0); 
 | 
        int nBufferLen = 2 * 1024 * 1024; 
 | 
        byte[] strBuffer = new byte[nBufferLen]; 
 | 
  
 | 
        if (netsdk.CLIENT_GetNewDevConfig(hLoginHandle, strCmd, nChn, strBuffer, nBufferLen, error, 3000)) { 
 | 
            cmdObject.write(); 
 | 
            if (configsdk.CLIENT_ParseData(strCmd, strBuffer, cmdObject.getPointer(), cmdObject.size(), null)) { 
 | 
                cmdObject.read(); 
 | 
                result = true; 
 | 
            } else { 
 | 
                log.error("Parse [" + strCmd + "] Config Failed!" + ToolKits.getErrorCodePrint()); 
 | 
                result = false; 
 | 
            } 
 | 
        } else { 
 | 
            log.error("Get [" + strCmd + "] Config Failed!Last Error = " + getErrorCodePrint()); 
 | 
            result = false; 
 | 
        } 
 | 
  
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    public static boolean GetDevConfig(NetSDKLib.LLong hLoginHandle, int nChn, String strCmd, Structure cmdObject) { 
 | 
        boolean result = true; 
 | 
        IntByReference error = new IntByReference(0); 
 | 
        int nBufferLen = 2 * 1024 * 1024; 
 | 
        byte[] strBuffer = new byte[nBufferLen]; 
 | 
        cmdObject.write(); 
 | 
        boolean bRet = netsdk.CLIENT_QueryNewSystemInfo(hLoginHandle, strCmd, nChn, strBuffer, cmdObject.size(), error, 3000); 
 | 
        if (bRet) { 
 | 
            cmdObject.read(); 
 | 
        } else { 
 | 
            log.error("Get ["+strCmd+"] Config Failed!Last Error = " + getErrorCodePrint()); 
 | 
            result = false; 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    // 获取配置 
 | 
    public static boolean GetConfig(NetSDKLib.LLong hLoginHandle, int nChn, int type, Structure cmdObject) { 
 | 
        boolean result = false; 
 | 
        // 获取 
 | 
        cmdObject.write(); 
 | 
        if (netsdk.CLIENT_GetConfig(hLoginHandle, type, nChn, cmdObject.getPointer(), cmdObject.size(), 4000, null)) { 
 | 
            cmdObject.read(); 
 | 
            result = true; 
 | 
        } else { 
 | 
            log.error("GetConfig Failed!" + getErrorCodePrint()); 
 | 
            result = false; 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 设置单个配置 
 | 
     * 
 | 
     * @param hLoginHandle 登陆句柄 
 | 
     * @param nChn         通道号,-1 表示全通道 
 | 
     * @param strCmd       配置名称 
 | 
     * @param cmdObject    配置对应的结构体对象 
 | 
     * @return 成功返回 true 
 | 
     */ 
 | 
    public static boolean SetDevConfig(NetSDKLib.LLong hLoginHandle, int nChn, String strCmd, Structure cmdObject) { 
 | 
        boolean result = false; 
 | 
        int nBufferLen = 2 * 1024 * 1024; 
 | 
        byte szBuffer[] = new byte[nBufferLen]; 
 | 
        for (int i = 0; i < nBufferLen; i++) szBuffer[i] = 0; 
 | 
        IntByReference error = new IntByReference(0); 
 | 
        IntByReference restart = new IntByReference(0); 
 | 
        cmdObject.write(); 
 | 
        if (configsdk.CLIENT_PacketData(strCmd, cmdObject.getPointer(), cmdObject.size(), szBuffer, nBufferLen)) { 
 | 
            cmdObject.read(); 
 | 
            if (netsdk.CLIENT_SetNewDevConfig(hLoginHandle, strCmd, nChn, szBuffer, nBufferLen, error, restart, 3000)) { 
 | 
                result = true; 
 | 
            } else { 
 | 
                log.error("Set [" + strCmd + "] Config Failed! Last Error = " + getErrorCodePrint()); 
 | 
  
 | 
                result = false; 
 | 
            } 
 | 
        } else { 
 | 
            log.error("Parse [" + strCmd + "] Config Failed!" + ToolKits.getErrorCodePrint()); 
 | 
            result = false; 
 | 
        } 
 | 
  
 | 
        return result; 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |