From a4246a571c78ac6c46e7bf7dbfc123b7148caed8 Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期二, 16 十一月 2021 13:43:48 +0800 Subject: [PATCH] 2021-11-16 1.更新 --- HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java | 617 +++++++++++++++++++++++++++++++++---------------------- 1 files changed, 366 insertions(+), 251 deletions(-) diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java index 7c94a2f..5d7ddc0 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java @@ -7,19 +7,24 @@ import com.hdl.sdk.common.config.TopicConstant; import com.hdl.sdk.common.event.EventDispatcher; import com.hdl.sdk.common.event.EventListener; +import com.hdl.sdk.common.exception.HDLLinkCode; +import com.hdl.sdk.common.exception.HDLLinkException; import com.hdl.sdk.common.utils.IdUtils; import com.hdl.sdk.common.utils.IpUtils; import com.hdl.sdk.common.utils.SPUtils; import com.hdl.sdk.common.utils.ThreadToolUtils; import com.hdl.sdk.common.utils.gson.GsonConvert; -import com.hdl.sdk.connect.bean.BaseLocalResponse; -import com.hdl.sdk.connect.bean.DeviceControlRequest; -import com.hdl.sdk.connect.bean.FunctionAttributeRequest; -import com.hdl.sdk.connect.bean.GatewaySearchBean; +import com.hdl.sdk.connect.bean.response.BaseLocalResponse; +import com.hdl.sdk.connect.bean.request.DeviceControlRequest; +import com.hdl.sdk.connect.bean.request.FunctionAttributeRequest; +import com.hdl.sdk.connect.bean.response.GatewaySearchBean; import com.hdl.sdk.connect.bean.LinkRequest; import com.hdl.sdk.connect.bean.LinkResponse; -import com.hdl.sdk.connect.bean.PropertyReadRequest; -import com.hdl.sdk.connect.bean.PropertyUpRequest; +import com.hdl.sdk.connect.bean.request.PropertyReadRequest; +import com.hdl.sdk.connect.bean.request.PropertyUpRequest; +import com.hdl.sdk.connect.callback.BaseCallBack; +import com.hdl.sdk.connect.callback.HDLLinkCallBack; +import com.hdl.sdk.connect.config.HDLLinkConfig; import com.hdl.sdk.connect.protocol.LinkMessageDecoder; import com.hdl.sdk.connect.protocol.LinkMessageEncoder; import com.hdl.sdk.socket.SocketBoot; @@ -44,22 +49,14 @@ */ public class HDLSocket { - private static final String GATEWAY_KEY = "gateway_key"; - private static final String TCP_IP_KEY = "tcp_ip_key"; - private String gatewayId; - - public interface CallBack { - - void onError(String error); - - void onResponse(String data); - - } - - /** - * udp榛樿缁勬挱ip - */ - private static final String UDP_GROUP_IP = "239.0.168.188"; +// public interface CallBack extends BaseCallBack { +// void onResponse(String data); +// } +// +// /** +// * udp榛樿缁勬挱ip +// */ +// private static final String UDP_GROUP_IP = "239.0.168.188"; /** * udp榛樿绔彛 @@ -71,21 +68,21 @@ */ private static final int TCP_PORT = 8586; - private String tcpIp; - private int tcpPort; + // private String tcpIp; +// private int tcpPort; - private int udpPort; - private String udpIp; +// private int udpPort; +// private String udpIp; - private static SocketBoot updBoot; +// private static SocketBoot updBoot; private SocketBoot tcpBoot; private ConnectStatusListener statusListener; - private EventListener searchEvent; - private CallBack searchCallBack; - private ScheduledExecutorService searchGatewayThread; - private final AtomicInteger searchCount = new AtomicInteger(0); +// private EventListener searchEvent; +// private CallBack searchCallBack; +// private ScheduledExecutorService searchGatewayThread; +// private final AtomicInteger searchCount = new AtomicInteger(0); private HDLSocket() { statusListener = new ConnectStatusListener() { @@ -104,43 +101,43 @@ } }; - searchEvent = new EventListener() { - @Override - public void onMessage(Object msg) { - try { - if (msg instanceof LinkResponse) { - LinkResponse linkResponse = (LinkResponse) msg; - String data = linkResponse.getData(); - if (!TextUtils.isEmpty(data)) { - final BaseLocalResponse<GatewaySearchBean> response = GsonConvert.getGson().fromJson(data, new TypeToken<BaseLocalResponse<GatewaySearchBean>>() { - }.getType()); - GatewaySearchBean searchBean = response.getObjects(); - if (searchBean != null) { - gatewayId = searchBean.getGatewayId(); - if (!TextUtils.isEmpty(gatewayId)) { - SPUtils.put(GATEWAY_KEY, gatewayId); - } - tcpIp = searchBean.getIp_address(); - if (!TextUtils.isEmpty(tcpIp)) { - SPUtils.put(TCP_IP_KEY, tcpIp); - } - } - - if (searchCallBack != null) { - searchCallBack.onResponse(linkResponse.toString()); - } - } - - } - } catch (Exception e) { - if (searchCallBack != null) { - searchCallBack.onError("瑙f瀽澶辫触"); - } - } - - - } - }; +// searchEvent = new EventListener() { +// @Override +// public void onMessage(Object msg) { +// try { +// if (msg instanceof LinkResponse) { +// LinkResponse linkResponse = (LinkResponse) msg; +// String data = linkResponse.getData(); +// if (!TextUtils.isEmpty(data)) { +// final BaseLocalResponse<GatewaySearchBean> response = GsonConvert.getGson().fromJson(data, new TypeToken<BaseLocalResponse<GatewaySearchBean>>() { +// }.getType()); +// GatewaySearchBean searchBean = response.getObjects(); +// if (searchBean != null) { +//// gatewayId = searchBean.getGatewayId(); +//// if (!TextUtils.isEmpty(gatewayId)) { +//// SPUtils.put(GATEWAY_KEY, gatewayId); +//// } +//// tcpIp = searchBean.getIp_address(); +//// if (!TextUtils.isEmpty(tcpIp)) { +//// SPUtils.put(TCP_IP_KEY, tcpIp); +//// } +// } +// +// if (searchCallBack != null) { +// searchCallBack.onResponse(linkResponse.toString()); +// } +// } +// +// } +// } catch (Exception e) { +// if (searchCallBack != null) { +// searchCallBack.onError("瑙f瀽澶辫触"); +// } +// } +// +// +// } +// }; } private static class SingletonInstance { @@ -152,15 +149,15 @@ } - private SocketOptions getUdpOptions() { - final SocketOptions options = new SocketOptions(); - final MessagePipeLine pipeLine = new MessagePipeLine(); - pipeLine.add(new LinkMessageDecoder()); - pipeLine.add(new LinkMessageEncoder()); - options.setHandleMessage(pipeLine); - options.setEnabledHeartbeat(false); - return options; - } +// private SocketOptions getUdpOptions() { +// final SocketOptions options = new SocketOptions(); +// final MessagePipeLine pipeLine = new MessagePipeLine(); +// pipeLine.add(new LinkMessageDecoder()); +// pipeLine.add(new LinkMessageEncoder()); +// options.setHandleMessage(pipeLine); +// options.setEnabledHeartbeat(false); +// return options; +// } private SocketOptions getTcpOptions() { final SocketOptions options = new SocketOptions(); @@ -181,107 +178,101 @@ } public String getTcpIp() { - if (!TextUtils.isEmpty(tcpIp)) { - return tcpIp; - } - return SPUtils.getString(TCP_IP_KEY, ""); + return HDLLinkConfig.getInstance().getIpAddress(); } public String getGatewayId() { - if (!TextUtils.isEmpty(gatewayId)) { - return gatewayId; - } - return SPUtils.getString(GATEWAY_KEY, ""); + return HDLLinkConfig.getInstance().getGatewayId(); } - private String getUdpIp() { - if (TextUtils.isEmpty(udpIp)) { - udpIp = UDP_GROUP_IP; - } - return udpIp; - } +// private String getUdpIp() { +// if (TextUtils.isEmpty(udpIp)) { +// udpIp = UDP_GROUP_IP; +// } +// return udpIp; +// } - public void searchGateway() { - searchGateway(null); - } - - /** - * 缁勬挱鎼滅储 - */ - public void searchGateway(CallBack callBack) { - gatewayId = "";//閲嶇疆缃戝叧ID - this.searchCallBack = callBack; - - if (searchGatewayThread != null) { - searchGatewayThread.shutdownNow(); - } - - - new Thread(new Runnable() { - @Override - public void run() { - while (TextUtils.isEmpty(gatewayId)) { - //鎼滅储缃戝叧 - searchGateway(IdUtils.getUUId(), searchEvent); - try { - Thread.sleep(1000L); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - }).start(); - } - - - /** - * 閫氳繃缁勬挱鎼滅储缃戝叧 - */ - public void searchGateway(String msgId, EventListener eventListener) { - searchGateway(getUdpIp(), getUdpPort(), msgId, eventListener); - } - - /** - * 閫氳繃骞挎挱鎼滅储缃戝叧 - */ - public void searchGatewayByBroadcast(String msgId, EventListener eventListener) { - searchGateway(IpUtils.getBroadcastAddress(), getUdpPort(), msgId, eventListener); - } - - /** - * 榛樿鏄粍鎾悳绱㈢綉鍏� - */ - public void searchGateway(String ip, int port, String msgId, EventListener eventListener) { - - if (updBoot == null) { - updBoot = UdpClient.init(ip, port, getUdpOptions()); - updBoot.connect(); - } - - - String time = String.valueOf(System.currentTimeMillis()); - JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("id", msgId); - jsonObject.addProperty("time_stamp", time); - - EventDispatcher.getInstance().registerIo(TopicConstant.GATEWAY_SEARCH_REPLY, eventListener); - LinkRequest message = new LinkRequest(TopicConstant.GATEWAY_SEARCH, - jsonObject.toString()); - - try { - updBoot.sendMsg(message.toString().getBytes("utf-8")); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - - } +// public void searchGateway() { +// searchGateway(null); +// } +// +// /** +// * 缁勬挱鎼滅储 +// */ +// public void searchGateway(CallBack callBack) { +//// gatewayId = "";//閲嶇疆缃戝叧ID +//// this.searchCallBack = callBack; +//// +//// if (searchGatewayThread != null) { +//// searchGatewayThread.shutdownNow(); +//// } +//// +//// +//// new Thread(new Runnable() { +//// @Override +//// public void run() { +//// while (TextUtils.isEmpty(gatewayId)) { +//// //鎼滅储缃戝叧 +//// searchGateway(IdUtils.getUUId(), searchEvent); +//// try { +//// Thread.sleep(1000L); +//// } catch (InterruptedException e) { +//// e.printStackTrace(); +//// } +//// } +//// } +//// }).start(); +// } +// +// +// /** +// * 閫氳繃缁勬挱鎼滅储缃戝叧 +// */ +// public void searchGateway(String msgId, EventListener eventListener) { +// searchGateway(getUdpIp(), getUdpPort(), msgId, eventListener); +// } +// +// /** +// * 閫氳繃骞挎挱鎼滅储缃戝叧 +// */ +// public void searchGatewayByBroadcast(String msgId, EventListener eventListener) { +// searchGateway(IpUtils.getBroadcastAddress(), getUdpPort(), msgId, eventListener); +// } +// +// /** +// * 榛樿鏄粍鎾悳绱㈢綉鍏� +// */ +// public void searchGateway(String ip, int port, String msgId, EventListener eventListener) { +// +// if (updBoot == null) { +// updBoot = UdpClient.init(ip, port, getUdpOptions()); +// updBoot.connect(); +// } +// +// +// String time = String.valueOf(System.currentTimeMillis()); +// JsonObject jsonObject = new JsonObject(); +// jsonObject.addProperty("id", msgId); +// jsonObject.addProperty("time_stamp", time); +// +// EventDispatcher.getInstance().registerIo(TopicConstant.GATEWAY_SEARCH_REPLY, eventListener); +// LinkRequest message = new LinkRequest(TopicConstant.GATEWAY_SEARCH, +// jsonObject.toString()); +// +// try { +// updBoot.sendMsg(message.getSendBytes()); +// } catch (UnsupportedEncodingException e) { +// e.printStackTrace(); +// } +// +// } /** * 鑾峰彇璁惧鍒楄〃 */ - public void getDeviceList(CallBack callBack) { + public void getDeviceList(HDLLinkCallBack callBack) { if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { String time = String.valueOf(System.currentTimeMillis()); JsonObject jsonObject = new JsonObject(); @@ -295,7 +286,7 @@ String replyTopic = String.format(TopicConstant.GET_DEVICE_LIST_REPLY, getGatewayId()); try { - sendMsg(message.toString().getBytes("utf-8"), replyTopic, callBack, new SendListener() { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { @Override public void onSucceed() { @@ -304,18 +295,18 @@ @Override public void onError() { if (callBack != null) { - callBack.onError("鑾峰彇璁惧鍒楄〃澶辫触"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_DEVICE_LIST_ERROR)); } } }); - } catch (UnsupportedEncodingException e) { + } catch (Exception e) { if (callBack != null) { - callBack.onError("鑾峰彇璁惧鍒楄〃澶辫触"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_DEVICE_LIST_ERROR)); } } } else { if (callBack != null) { - callBack.onError("ip鍦板潃涓㈠け"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR)); } } } @@ -324,7 +315,7 @@ /** * 鑾峰彇鍔熻兘鍒楄〃 */ - public void getFunctionList(CallBack callBack) { + public void getFunctionList(HDLLinkCallBack callBack) { if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { String time = String.valueOf(System.currentTimeMillis()); JsonObject jsonObject = new JsonObject(); @@ -338,7 +329,7 @@ String replyTopic = String.format(TopicConstant.GET_FUNCTION_LIST_REPLY, getGatewayId()); try { - sendMsg(message.toString().getBytes("utf-8"), replyTopic, callBack, new SendListener() { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { @Override public void onSucceed() { @@ -347,18 +338,18 @@ @Override public void onError() { if (callBack != null) { - callBack.onError("鑾峰彇鍔熻兘鍒楄〃澶辫触"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR)); } } }); - } catch (UnsupportedEncodingException e) { + } catch (Exception e) { if (callBack != null) { - callBack.onError("鑾峰彇鍔熻兘鍒楄〃澶辫触"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR)); } } } else { if (callBack != null) { - callBack.onError("ip鍦板潃涓㈠け"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR)); } } } @@ -367,10 +358,10 @@ /** * 鑾峰彇鍔熻兘灞炴�� * + * @param sids * @param callBack - * @param sid */ - public void getFunctionAttribute(CallBack callBack, String... sid) { + public void getFunctionAttribute(List<String> sids, HDLLinkCallBack callBack) { if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { String time = String.valueOf(System.currentTimeMillis()); @@ -378,7 +369,7 @@ data.setId(IdUtils.getUUId()); data.setTime_stamp(time); List<FunctionAttributeRequest> list = new ArrayList<>(); - for (String s : sid) { + for (String s : sids) { list.add(new FunctionAttributeRequest(s)); } data.setObjects(list); @@ -389,7 +380,7 @@ String replyTopic = String.format(TopicConstant.GET_FUNCTION_ATTRIBUTE_REPLY, getGatewayId()); try { - sendMsg(message.toString().getBytes("utf-8"), replyTopic, callBack, new SendListener() { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { @Override public void onSucceed() { @@ -398,18 +389,18 @@ @Override public void onError() { if (callBack != null) { - callBack.onError("鑾峰彇鍔熻兘灞炴�уけ璐�"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_PROPERTIES_ERROR)); } } }); - } catch (UnsupportedEncodingException e) { + } catch (Exception e) { if (callBack != null) { - callBack.onError("鑾峰彇鍔熻兘灞炴�уけ璐�"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_PROPERTIES_ERROR)); } } } else { if (callBack != null) { - callBack.onError("ip鍦板潃涓㈠け"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR)); } } } @@ -417,7 +408,7 @@ /** * 璁惧鎺у埗 */ - public void propertyDown(List<DeviceControlRequest> request, CallBack callBack) { + public void propertyDown(List<DeviceControlRequest> request, HDLLinkCallBack callBack) { if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { String time = String.valueOf(System.currentTimeMillis()); @@ -427,10 +418,9 @@ data.setTime_stamp(time); data.setObjects(request); - String topic = String.format(TopicConstant.PROPERTY_DOWN, getGatewayId()); LinkRequest message = new LinkRequest(topic, - GsonConvert.getGson().toJson(request)); + GsonConvert.getGson().toJson(data)); String replyTopic = String.format(TopicConstant.PROPERTY_DOWN_REPLY, getGatewayId()); try { @@ -443,87 +433,90 @@ @Override public void onError() { if (callBack != null) { - callBack.onError("鎺у埗鎸囦护鍙戦�佸け璐�"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } }); } catch (Exception e) { if (callBack != null) { - callBack.onError("鎺у埗鎸囦护鍙戦�佸け璐�"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } } else { if (callBack != null) { - callBack.onError("鎺у埗鎸囦护鍙戦�佸け璐�"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } } - /** - * 鐘舵�佷笂鎶� - */ - public void propertyUp(List<PropertyUpRequest> request, CallBack callBack) { - if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { - String time = String.valueOf(System.currentTimeMillis()); - - final BaseLocalResponse<List<PropertyUpRequest>> data = new BaseLocalResponse<>(); - data.setId(IdUtils.getUUId()); - data.setTime_stamp(time); - data.setObjects(request); - - - String topic = String.format(TopicConstant.PROPERTY_UP, getGatewayId()); - LinkRequest message = new LinkRequest(topic, - GsonConvert.getGson().toJson(request)); - - String replyTopic = String.format(TopicConstant.PROPERTY_UP_REPLY, getGatewayId()); - try { - sendMsg(message.toString().getBytes("utf-8"), replyTopic, callBack, new SendListener() { - @Override - public void onSucceed() { - - } - - @Override - public void onError() { - if (callBack != null) { - callBack.onError("鎸囦护鍙戦�佸け璐�"); - } - } - }); - } catch (UnsupportedEncodingException e) { - if (callBack != null) { - callBack.onError("鎸囦护鍙戦�佸け璐�"); - } - } - } else { - if (callBack != null) { - callBack.onError("鎸囦护鍙戦�佸け璐�"); - } - } - } +// /** +// * 鐘舵�佷笂鎶� +// */ +// public void propertyUp(List<PropertyUpRequest> request, CallBack callBack) { +// if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { +// String time = String.valueOf(System.currentTimeMillis()); +// +// final BaseLocalResponse<List<PropertyUpRequest>> data = new BaseLocalResponse<>(); +// data.setId(IdUtils.getUUId()); +// data.setTime_stamp(time); +// data.setObjects(request); +// +// +// String topic = String.format(TopicConstant.PROPERTY_UP, getGatewayId()); +// LinkRequest message = new LinkRequest(topic, +// GsonConvert.getGson().toJson(request)); +// +// String replyTopic = String.format(TopicConstant.PROPERTY_UP_REPLY, getGatewayId()); +// try { +// sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { +// @Override +// public void onSucceed() { +// +// } +// +// @Override +// public void onError() { +// if (callBack != null) { +// callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); +// } +// } +// }); +// } catch (Exception e) { +// if (callBack != null) { +// callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); +// } +// } +// } else { +// if (callBack != null) { +// callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); +// } +// } +// } /** * 璇诲彇鐘舵�� */ - public void propertyRead(List<PropertyReadRequest> request, CallBack callBack) { + public void propertyRead(List<String> sids, HDLLinkCallBack callBack) { if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { String time = String.valueOf(System.currentTimeMillis()); - final BaseLocalResponse<List<PropertyReadRequest>> data = new BaseLocalResponse<>(); data.setId(IdUtils.getUUId()); data.setTime_stamp(time); - data.setObjects(request); + List<PropertyReadRequest> list = new ArrayList<>(); + for (String s : sids) { + list.add(new PropertyReadRequest(s)); + } + data.setObjects(list); String topic = String.format(TopicConstant.PROPERTY_READ, getGatewayId()); LinkRequest message = new LinkRequest(topic, - GsonConvert.getGson().toJson(request)); + GsonConvert.getGson().toJson(data)); String replyTopic = String.format(TopicConstant.PROPERTY_READ_REPLY, getGatewayId()); try { - sendMsg(message.toString().getBytes("utf-8"), replyTopic, callBack, new SendListener() { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { @Override public void onSucceed() { @@ -532,18 +525,18 @@ @Override public void onError() { if (callBack != null) { - callBack.onError("鎸囦护鍙戦�佸け璐�"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } }); - } catch (UnsupportedEncodingException e) { + } catch (Exception e) { if (callBack != null) { - callBack.onError("鎸囦护鍙戦�佸け璐�"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } } else { if (callBack != null) { - callBack.onError("鎸囦护鍙戦�佸け璐�"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } } @@ -559,11 +552,133 @@ } /** - * 娓呯┖缂撳瓨 + * 鑾峰彇鍦烘櫙鍒楄〃 */ - public void clearCache() { - SPUtils.remove(TCP_IP_KEY); - SPUtils.remove(GATEWAY_KEY); + public void getSceneList(HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty("id", IdUtils.getUUId()); + jsonObject.addProperty("time_stamp", time); + + String topic = String.format(TopicConstant.SCENE_LIST_GET, getGatewayId()); + + LinkRequest message = new LinkRequest(topic, + jsonObject.toString()); + String replyTopic = topic + "_reply"; + try { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { + @Override + public void onSucceed() { + + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR)); + } + } + } else { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR)); + } + } + } + + /** + * 鍦烘櫙鎺у埗 + * @param sids 鍦烘櫙sid鍒楄〃 + * @param callBack 鍥炶皟 + */ + public void controlScene(List<String> sids, HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<PropertyReadRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + List<PropertyReadRequest> list = new ArrayList<>(); + for (String s : sids) { + list.add(new PropertyReadRequest(s)); + } + data.setObjects(list); + + String topic = String.format(TopicConstant.SCENE_CONTROL, getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String replyTopic = topic + "_reply"; + try { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { + @Override + public void onSucceed() { + + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } else { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } + +// /** +// * 娓呯┖缂撳瓨 +// */ +// public void clearCache() { +// SPUtils.remove(TCP_IP_KEY); +// SPUtils.remove(GATEWAY_KEY); +// } + + /** + * 閫氱敤TCP鍙戦�佹寚浠� + * 1绉掓病鍝嶅簲灏辫浠栭噸鏂板彂閫�,閲嶈瘯3娆� + * + * @param topic 鍙戦�佹暟鎹� + * @param bodyStr 鍥炲鐨勪富棰� + * @param callBack 鍥炶皟 + */ + public void tcpSendMsg(String topic, String bodyStr, HDLLinkCallBack callBack) { + try { + LinkRequest message = new LinkRequest(topic, bodyStr); + String replyTopic = topic + "_reply"; + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { + @Override + public void onSucceed() { + + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } } @@ -571,7 +686,7 @@ * 鍙戦�佹寚浠� * 1绉掓病鍝嶅簲灏辫浠栭噸鏂板彂閫�,閲嶈瘯3娆� */ - public void sendMsg(byte[] data, String eventTag, CallBack callBack, SendListener sendListener) { + public void sendMsg(byte[] data, String eventTag, HDLLinkCallBack callBack, SendListener sendListener) { try { final AtomicInteger sendCount = new AtomicInteger(0); @@ -583,7 +698,7 @@ if (msg instanceof LinkResponse) { if (callBack != null) { - callBack.onResponse(msg.toString()); + callBack.onSuccess(msg.toString()); } threadPool.shutdownNow(); } @@ -603,7 +718,7 @@ @Override public void run() { if (callBack != null) { - callBack.onError("鍙戦�佸け璐�"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } }); @@ -632,7 +747,7 @@ @Override public void run() { if (callBack != null) { - callBack.onError("鍙戦�佸け璐�"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } }); -- Gitblit v1.8.0