JLChen
2021-11-16 a4246a571c78ac6c46e7bf7dbfc123b7148caed8
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java
@@ -1,10 +1,20 @@
package com.hdl.sdk.connect;
import com.hdl.sdk.common.utils.IpUtils;
import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
import com.hdl.sdk.connect.bean.request.PropertyReadRequest;
import com.hdl.sdk.connect.callback.HDLLinkCallBack;
import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
import com.hdl.sdk.connect.config.HDLLinkConfig;
import com.hdl.sdk.common.event.EventDispatcher;
import com.hdl.sdk.common.event.EventListener;
import com.hdl.sdk.connect.bean.AuthenticateRequest;
import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
import com.hdl.sdk.connect.socket.HDLAuthSocket;
import com.hdl.sdk.connect.socket.HDLSocket;
import com.hdl.sdk.connect.socket.HdlSocketHelper;
import com.hdl.sdk.socket.listener.SendListener;
import java.util.List;
/**
 * Created by jlchen on 11/15/21.
@@ -44,9 +54,11 @@
     * @param listener
     */
    public synchronized void removeAllTopicsListener(EventListener listener) {
        if(listener == null) return;
        EventDispatcher.getInstance().removeAllTopicsListener(listener);
    }
    /***********************三方设备和网关通信之前的认证流程****************************/
    /**
     * 检测是否已经认证过
     * 认证通过才能进行设备控制
@@ -57,22 +69,137 @@
    }
    /**
     * 开始监听和发起入网及认证请求
     *
     * @param request  认证请求信息
     * @param callBack 结果回调
     */
    public void startAuthenticateRequest(AuthenticateRequest request, HDLLinkCallBack callBack) {
        HDLAuthSocket.getInstance().startAuthenticateRequest(request,callBack);
    }
    /**
     * 发送入网及认证请求
     *
     * @param ip       网关IP
     * @param request  认证请求信息
     * @param callBack 结果回调
     */
    public void sendAuthenticateRequest(String ip, AuthenticateRequest request, HDLAuthSocket.CallBack callBack) {
        HDLAuthSocket.getInstance().sendAuthenticateRequest(ip,request,callBack);
    public void sendAuthenticateRequest(String ip, AuthenticateRequest request, HDLLinkCallBack callBack) {
        HDLAuthSocket.getInstance().sendAuthenticateRequest(ip, request, callBack);
    }
    //    /**
//     * 开始搜索所有网关,有网关回复就回调,上层自己做去重判断
//     *
//     * @param callBack 回调
//     */
//    public void startSearchAllGateway(HDLAuthSocket.SearchGatewayCallBack callBack) {
//
//    }
//
//    /**
//     * 暂停搜索网关
//     */
//    public void endSearchAllGateway() {
//
//    }
    /***********************三方设备请先认证成功 再调用下面的接口和网关通信****************************/
    /**
     * 组播搜索指定网关是否在线,搜索到则返回指定的网关对象
     * @param callBack  回调
     */
    public void searchGatewayMulticast(HDLAuthSocket.SearchGatewayCallBack callBack) {
        HDLAuthSocket.getInstance().searchGatewayMulticast(callBack);
    }
    /**
     * 搜索指定网关是否在线,搜索到则返回指定的网关对象
     *
     * 组播搜索指定网关是否在线,搜索到则返回指定的网关对象
     * @param callBack  回调
     */
    public void searchGateway(HDLAuthSocket.SearchGatewayCallBack callBack) {
        HDLAuthSocket.getInstance().searchGateway(HDLLinkConfig.getInstance().getGatewayId(), callBack);
    public void searchGatewayBroadcast(HDLAuthSocket.SearchGatewayCallBack callBack) {
        HDLAuthSocket.getInstance().searchGatewayBroadcast(callBack);
    }
    /**
     * 获取设备列表
     */
    public void getDeviceList(HDLLinkCallBack callBack) {
        HDLSocket.getInstance().getDeviceList(callBack);
    }
    /**
     * 获取功能列表
     */
    public void getFunctionList(HDLLinkCallBack callBack) {
        HDLSocket.getInstance().getFunctionList(callBack);
    }
    /**
     * 获取功能属性
     *
     * @param sids
     * @param callBack
     */
    public void getFunctionAttribute(List<String> sids, HDLLinkCallBack callBack) {
        HDLSocket.getInstance().getFunctionAttribute(sids, callBack);
    }
    /**
     * 设备控制
     * @param request 控制状态参数
     * @param callBack 结果回调
     */
    public void propertyDown(List<DeviceControlRequest> request, HDLLinkCallBack callBack) {
        HDLSocket.getInstance().propertyDown(request, callBack);
    }
    /**
     * 读取状态
     * @param sids 请求参数 指定读取的设备sid列表
     * @param callBack 回调
     */
    public void propertyRead(List<String> sids, HDLLinkCallBack callBack) {
        HDLSocket.getInstance().propertyRead(sids, callBack);
    }
    /**
     * 获取场景列表
     */
    public void getSceneList(HDLLinkCallBack callBack) {
        HDLSocket.getInstance().getSceneList(callBack);
    }
    /**
     * 场景控制
     * @param sids 场景sid列表
     * @param callBack 回调
     */
    public void controlScene(List<String> sids, HDLLinkCallBack callBack) {
        HDLSocket.getInstance().controlScene(sids, callBack);
    }
    /**
     * 通用UDP广播发送指令
     * 1秒没响应就让他重新发送,重试3次
     * @param topic 发送数据
     * @param bodyStr body内容
     * @param callBack 回调
     */
    public void udpSendMsg(String topic, String bodyStr, HDLLinkResponseCallBack callBack) {
        HDLAuthSocket.getInstance().udpSendMsg(topic, bodyStr, callBack);
    }
    /**
     * 通用TCP发送指令
     * 1秒没响应就让他重新发送,重试3次
     *
     * @param topic    发送数据
     * @param bodyStr  body内容
     * @param callBack 回调
     */
    public void tcpSendMsg(String topic, String bodyStr, HDLLinkCallBack callBack) {
        HDLSocket.getInstance().tcpSendMsg(topic, bodyStr, callBack);
    }
}