package com.hdl.sdk.connect;
|
|
import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
|
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.request.AuthenticateRequest;
|
import com.hdl.sdk.connect.socket.HDLAuthSocket;
|
import com.hdl.sdk.connect.socket.HDLSocket;
|
|
import java.util.List;
|
|
/**
|
* Created by jlchen on 11/15/21.
|
*
|
* @Description : HDLLink
|
*/
|
public class HDLLink {
|
/**
|
* instance
|
*/
|
private volatile static HDLLink instance;
|
/**
|
* getInstance
|
*
|
* @return HDLLink
|
*/
|
public static synchronized HDLLink getInstance() {
|
if (instance == null) {
|
synchronized (HDLLink.class) {
|
if (instance == null) {
|
instance = new HDLLink();
|
}
|
}
|
}
|
return instance;
|
}
|
|
/**
|
* 注册所有主题消息的监听
|
* @param listener
|
*/
|
public synchronized void registerAllTopicsListener(EventListener listener){
|
EventDispatcher.getInstance().registerAllTopicsListener(listener);
|
}
|
/**
|
* 取消所有主题消息的监听
|
* @param listener
|
*/
|
public synchronized void removeAllTopicsListener(EventListener listener) {
|
if(listener == null) return;
|
EventDispatcher.getInstance().removeAllTopicsListener(listener);
|
}
|
|
/***********************三方设备和网关通信之前的认证流程****************************/
|
/**
|
* 检测是否已经认证过
|
* 认证通过才能进行设备控制
|
* @return
|
*/
|
public boolean checkIfCertified(){
|
return HDLLinkConfig.getInstance().checkIfCertified();
|
}
|
|
/**
|
* 开始监听和发起入网及认证请求
|
*
|
* @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, 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 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);
|
}
|
}
|