From dfb62af125bcb4eed4eadbcfc5a49a1232501c0c Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期五, 10 十二月 2021 16:23:41 +0800 Subject: [PATCH] 2021-12-10 1.增加tcp和UDP 单次发送,不监听回复 --- HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java | 500 +++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 370 insertions(+), 130 deletions(-) diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java index f4566ee..1e5988f 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java @@ -1,21 +1,31 @@ package com.hdl.sdk.connect.socket; +import android.net.ipsec.ike.TunnelModeChildSessionParams; import android.text.TextUtils; -import android.util.Log; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +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.LogUtils; +import com.hdl.sdk.common.utils.ThreadToolUtils; +import com.hdl.sdk.connect.bean.response.AuthenticateResponse; +import com.hdl.sdk.connect.bean.response.NetworkAccessBroadcastResponse; +import com.hdl.sdk.connect.callback.BaseCallBack; +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.config.TopicConstant; import com.hdl.sdk.common.utils.IdUtils; import com.hdl.sdk.common.utils.IpUtils; import com.hdl.sdk.common.utils.gson.GsonConvert; -import com.hdl.sdk.connect.bean.AuthenticateRequest; -import com.hdl.sdk.connect.bean.AuthenticateRequest.AuthenticateDeviceInfoBean; -import com.hdl.sdk.connect.bean.BaseLocalResponse; -import com.hdl.sdk.connect.bean.DeviceControlRequest; -import com.hdl.sdk.connect.bean.GatewaySearchBean; +import com.hdl.sdk.connect.bean.request.AuthenticateRequest; +import com.hdl.sdk.connect.bean.response.BaseLocalResponse; +import com.hdl.sdk.connect.bean.request.DeviceControlRequest; +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.protocol.LinkMessageDecoder; @@ -24,11 +34,13 @@ import com.hdl.sdk.socket.SocketOptions; import com.hdl.sdk.socket.client.UdpClient; import com.hdl.sdk.socket.codec.MessagePipeLine; +import com.hdl.sdk.socket.listener.SendListener; import java.io.UnsupportedEncodingException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; import java.util.List; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; import static com.hdl.sdk.common.config.TopicConstant.DEIVCE_AUTH_REQUEST; @@ -38,23 +50,32 @@ * @Description : HDLAuthSocket */ public class HDLAuthSocket { + private static final String TAG = "HDLAuth"; /** * udp榛樿绔彛 */ private static final int UDP_PORT = 8585; private static SocketBoot updBoot; + // private EventListener authEvent; + //鎼滅储缃戝叧 + private EventListener searchGatewayEvent; + /** + * udp榛樿缁勬挱ip + */ + private static final String UDP_GROUP_IP = "239.0.168.188"; + /** * instance */ private volatile static HDLAuthSocket instance; - public interface CallBack { - - void onError(String error); - - void onSuccess(String data); - + private HDLAuthSocket() { + initSearchGatewayEvent(); } + +// public interface CallBack extends BaseCallBack { +// void onSuccess(String msg); +// } /** * getInstance @@ -90,12 +111,43 @@ return updBoot; } - private String getOid() { - return "000101EA9B8C1C22"; + /** + * 寮�濮嬬洃鍚拰鍙戣捣鍏ョ綉鍙婅璇佽姹� + * + * @param request 璁よ瘉璇锋眰淇℃伅 + * @param callBack 缁撴灉鍥炶皟 + */ + public void startAuthenticateRequest(AuthenticateRequest request, HDLLinkCallBack callBack) { + HDLLinkConfig.getInstance().clearConfig(); + //1.鍚姩Socket 寮�鍚洃鍚� + getUdpBoot(IpUtils.getBroadcastAddress()); + //2.鏋勫缓鐩戝惉Listener +// authEvent = + //3.鐩戝惉缃戝叧骞挎挱鐨勫叆缃戞寚浠� + EventDispatcher.getInstance().register(TopicConstant.GATEWAY_AUTH_BROADCAST, new EventListener() { + @Override + public void onMessage(Object msg) { + NetworkAccessBroadcastResponse bean = getNetworkAccessBroadcastResponse(msg); + if (bean != null) { + LogUtils.i(TAG, "缃戝叧鍏ョ綉骞挎挱IP: " + bean.getIPAddress()); + String ipStr = bean.getIPAddress(); + if (!TextUtils.isEmpty(ipStr)) { + sendAuthenticateRequest(ipStr, request, callBack); + } + } + //绉婚櫎鐩戝惉 + EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST); + LogUtils.i(TAG, "绉婚櫎鐩戝惉 authEvent"); + } + }); } - private String getSid() { - return "000101EA9B8C1C2202010001021A"; + /** + * 缁撴潫鐩戝惉鍏ョ綉鍙婅璇佸箍鎾� + */ + public void endAuthenticateRequest() { + //绉婚櫎鐩戝惉 + EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST); } /** @@ -105,9 +157,9 @@ * @param request 璁よ瘉璇锋眰淇℃伅 * @param callBack 缁撴灉鍥炶皟 */ - public void sendAuthenticateRequest(String ip, AuthenticateRequest request, CallBack callBack) { + public void sendAuthenticateRequest(String ip, AuthenticateRequest request, HDLLinkCallBack callBack) { if (request == null) { - callBack.onError("request null"); + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR)); } String topic = DEIVCE_AUTH_REQUEST; Gson gs = new Gson(); @@ -117,68 +169,89 @@ HdlSocketHelper.send(getUdpBoot(ip), message, new HdlSocketHelper.HdlSocketListener() { @Override public void onSucceed(Object msg) { - callBack.onSuccess(msg.toString()); + if (callBack == null) return; + try { + AuthenticateResponse bean = getAuthenticateResponseBean(msg); + if (bean != null) { + String localSecret = ""; + String gatewayId = ""; + String ipAddress = ""; + if(bean.getAuth() != null) { + localSecret = bean.getAuth().getLocalSecret(); + } + if(bean.getObjects() != null){ + gatewayId = bean.getObjects().getGatewayID(); + ipAddress = bean.getObjects().getIPAddress(); + } + //鍒ゆ柇缃戝叧鏄惁宸茬粡娉ㄥ唽鍒颁簯绔� + if (TextUtils.isEmpty(localSecret) || TextUtils.isEmpty(gatewayId)) { + //璁よ瘉澶辫触锛岀綉鍏虫湭娉ㄥ唽鍒颁簯绔� + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_AUTH_ERROR_GATEWAY_NOT_REGISTERED)); + } else { + HDLLinkConfig.getInstance().saveConfig(localSecret, gatewayId, ipAddress); + callBack.onSuccess("璁よ瘉鎴愬姛"); + } + } else { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_ERROR)); + } + } catch (Exception e) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_ERROR)); + } } @Override public void onFailure() { - Log.i("TAG", "onFailure: "); - callBack.onError("瓒呮椂"); + LogUtils.i(TAG, "onFailure: "); + if (callBack == null) return; + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_TIMEOUT_ERROR)); } }); } - /** - * 鍙戦�佸叆缃戝強璁よ瘉璇锋眰 - * - * @param callBack 缁撴灉鍥炶皟 - */ - public void sendAuthenticateRequest(CallBack callBack) { - String macStr = "AA000000000000BB"; - String secret = "87ae414b7a853f65"; - String mac_key = stringToMD5(stringToMD5(macStr + secret)); +// /** +// * 鍙戦�佸叆缃戝強璁よ瘉璇锋眰 +// * +// * @param callBack 缁撴灉鍥炶皟 +// */ +// public void sendAuthenticateRequest(CallBack callBack) { +// String macStr = "AA000000000000BB"; +// String secret = "87ae414b7a853f65"; +// String mac_key = stringToMD5(stringToMD5(macStr + secret)); +// +// String versionString = "HDL_V1.0.1"; +// String time = String.valueOf(System.currentTimeMillis()); +// +// //1.璁剧疆璁よ瘉淇℃伅 +// AuthenticateRequest.RequestBean requestBean = new AuthenticateRequest.RequestBean(); +// requestBean.setMAC(macStr); +// requestBean.setSupplier("HDL"); +// requestBean.setFirmwareVersion(versionString); +// requestBean.setHardwareModel("1956F"); +// AuthenticateRequest.AuthBean authbean = new AuthenticateRequest.AuthBean(); +// authbean.setSpk("ir.module"); +// authbean.setMACKey(mac_key); +// authbean.setRequest(requestBean); +// +// +// //2.璁剧疆璁惧淇℃伅 +// AuthenticateDeviceInfoBean infoBean = new AuthenticateDeviceInfoBean(); +// infoBean.setDeviceMAC(macStr); +// infoBean.setIPMAC(macStr); +// infoBean.setDeviceName("HDL闈㈡澘"); +// infoBean.setAccessMode("HDL"); +// infoBean.setOID(getOid()); +// infoBean.setSid(getSid()); +//// infoBean.set +// AuthenticateRequest.VersionBean[] versionBeans = new AuthenticateRequest.VersionBean[]{new AuthenticateRequest.VersionBean("FW", versionString), new AuthenticateRequest.VersionBean("HW", "1956F")}; +// infoBean.setVersions(versionBeans); +// AuthenticateRequest request = new AuthenticateRequest(IdUtils.getUUId(), time, infoBean, authbean); +// +// String ip = IpUtils.getBroadcastAddress(); +// ip = "192.168.10.102"; +// sendAuthenticateRequest(ip, request, callBack); +// } - String versionString = "HDL_V1.0.1"; - String time = String.valueOf(System.currentTimeMillis()); - - //1.璁剧疆璁よ瘉淇℃伅 - AuthenticateRequest.RequestBean requestBean = new AuthenticateRequest.RequestBean(); - requestBean.setMAC(macStr); - requestBean.setSupplier("HDL"); - requestBean.setFirmwareVersion(versionString); - requestBean.setHardwareModel("1956F"); - AuthenticateRequest.AuthBean authbean = new AuthenticateRequest.AuthBean(); - authbean.setSpk("ir.module"); - authbean.setMACKey(mac_key); - authbean.setRequest(requestBean); - - - //2.璁剧疆璁惧淇℃伅 - AuthenticateDeviceInfoBean infoBean = new AuthenticateDeviceInfoBean(); - infoBean.setDeviceMAC(macStr); - infoBean.setIPMAC(macStr); - infoBean.setDeviceName("HDL闈㈡澘"); - infoBean.setAccessMode("HDL"); - infoBean.setOID(getOid()); - infoBean.setSid(getSid()); -// infoBean.set - AuthenticateRequest.VersionBean[] versionBeans = new AuthenticateRequest.VersionBean[]{new AuthenticateRequest.VersionBean("FW", versionString), new AuthenticateRequest.VersionBean("HW", "1956F")}; - infoBean.setVersions(versionBeans); - AuthenticateRequest request = new AuthenticateRequest(IdUtils.getUUId(), time, infoBean, authbean); - - String ip = IpUtils.getBroadcastAddress(); - ip = "192.168.10.102"; - sendAuthenticateRequest(ip, request, callBack); - } - - public interface SearchGatewayCallBack { - /** - * 鎼滅储缁撴潫 - * - * @param error - */ - void onEnd(String error); - + public interface SearchGatewayCallBack extends BaseCallBack { /** * 鎼滅储缃戝叧鎴愬姛 * @@ -204,36 +277,102 @@ } /** - * 鎼滅储鎸囧畾缃戝叧鏄惁鍦ㄧ嚎锛屾悳绱㈠埌鍒欒繑鍥炴寚瀹氱殑缃戝叧瀵硅薄 + * 缁勬挱鎼滅储鎸囧畾缃戝叧鏄惁鍦ㄧ嚎锛屾悳绱㈠埌鍒欒繑鍥炴寚瀹氱殑缃戝叧瀵硅薄 * - * @param gatewayId 缃戝叧id - * @param callBack 鍥炶皟 + * @param callBack 鍥炶皟 */ - public void searchGateway(String gatewayId, SearchGatewayCallBack callBack) { - String time = String.valueOf(System.currentTimeMillis()); - JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("id", IdUtils.getUUId()); - jsonObject.addProperty("time_stamp", time); - String ip = IpUtils.getBroadcastAddress(); - LinkRequest message = new LinkRequest(TopicConstant.GATEWAY_SEARCH, - jsonObject.toString()); + public void searchGatewayMulticast(SearchGatewayCallBack callBack) { + searchGateway(HDLLinkConfig.getInstance().getGatewayId(), UDP_GROUP_IP, callBack); + } + /** + * 缁勬挱鎼滅储鎸囧畾缃戝叧鏄惁鍦ㄧ嚎锛屾悳绱㈠埌鍒欒繑鍥炴寚瀹氱殑缃戝叧瀵硅薄 + * + * @param callBack 鍥炶皟 + */ + public void searchGatewayBroadcast(SearchGatewayCallBack callBack) { + String ip = IpUtils.getBroadcastAddress(); + searchGateway(HDLLinkConfig.getInstance().getGatewayId(), ip, callBack); + } + + + /** + * 璁惧鎺у埗 + */ + public void propertyDown(List<DeviceControlRequest> request, HDLLinkCallBack callBack) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<DeviceControlRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + data.setObjects(request); + String topic = HDLLinkConfig.getInstance().getFullTopic(TopicConstant.PROPERTY_DOWN); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String ip = IpUtils.getBroadcastAddress(); HdlSocketHelper.send(getUdpBoot(ip), message, new HdlSocketHelper.HdlSocketListener() { @Override public void onSucceed(Object msg) { - GatewaySearchBean searchBean = getGatewaySearchBean(msg); - if (searchBean != null && searchBean.getGatewayId() == gatewayId) { - Log.i("TAG", "onSuccess: "); - callBack.onSuccess(searchBean); - } + if (callBack == null) return; + callBack.onSuccess("鎺у埗鎴愬姛"); } @Override public void onFailure() { - Log.i("TAG", "onFailure: "); - callBack.onEnd("瓒呮椂"); + if (callBack == null) return; + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_CONTROL_FAILURE_ERROR)); } }); + + } + + /** + * 閫氱敤鍙戦�佹寚浠� + * 1绉掓病鍝嶅簲灏辫浠栭噸鏂板彂閫�,閲嶈瘯3娆� + * + * @param topic 鍙戦�佹暟鎹� + * @param bodyStr 鍥炲鐨勪富棰� + * @param callBack 鍥炶皟 + */ + public void udpSendMsg(String topic, String bodyStr, HDLLinkResponseCallBack callBack) { + if (TextUtils.isEmpty(topic) || TextUtils.isEmpty(bodyStr)) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR)); + } + return; + } + LinkRequest message = new LinkRequest(topic, bodyStr); + String ip = IpUtils.getBroadcastAddress(); + HdlSocketHelper.send(getUdpBoot(ip), message, new HdlSocketHelper.HdlSocketListener() { + @Override + public void onSucceed(Object msg) { + if (callBack == null) return; + callBack.onSuccess((LinkResponse) msg); + } + + @Override + public void onFailure() { + if (callBack == null) return; + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_TIMEOUT_ERROR)); + } + } + ); + } + + /** + * 閫氱敤鍙戦�佹寚浠� 鍙彂涓�娆★紝涓嶇洃鍚洖澶嶏紝涓嶉噸鍙� + * + * @param topic 鍙戦�佹暟鎹� + * @param bodyStr 鍥炲鐨勪富棰� + */ + public void udpSendMsg(String topic, String bodyStr) { + if (TextUtils.isEmpty(topic) || TextUtils.isEmpty(bodyStr)) { + LogUtils.e("udpSendMsg", "鍙傛暟涓嶈兘涓虹┖"); + return; + } + LinkRequest message = new LinkRequest(topic, bodyStr); + String ip = IpUtils.getBroadcastAddress(); + getUdpBoot(ip).sendMsg(message.getSendBytes()); } private GatewaySearchBean getGatewaySearchBean(Object msg) { @@ -251,55 +390,156 @@ return searchBean; } + private AuthenticateResponse getAuthenticateResponseBean(Object msg) { + AuthenticateResponse mBean = null; + if (msg instanceof LinkResponse) { + LinkResponse linkResponse = (LinkResponse) msg; + String data = linkResponse.getData(); + if (!TextUtils.isEmpty(data)) { + AuthenticateResponse response = GsonConvert.getGson().fromJson(data, new TypeToken<AuthenticateResponse>() { + }.getType()); + mBean = response; + } + + } + return mBean; + } + + private NetworkAccessBroadcastResponse getNetworkAccessBroadcastResponse(Object msg) { + NetworkAccessBroadcastResponse mBean = null; + if (msg instanceof LinkResponse) { + LinkResponse linkResponse = (LinkResponse) msg; + String data = linkResponse.getData(); + if (!TextUtils.isEmpty(data)) { + NetworkAccessBroadcastResponse response = GsonConvert.getGson().fromJson(data, new TypeToken<NetworkAccessBroadcastResponse>() { + }.getType()); + mBean = response; + } + + } + return mBean; + } + /** - * 璁惧鎺у埗 + * 缃戝叧鎼滅储鐩稿叧 */ - public void propertyDown(List<DeviceControlRequest> request, HDLSocket.CallBack callBack) { + private static final int MAX_SEARCH_COUNT = 10;//鎬诲叡鎼滅储娴嬭瘯 + private final AtomicInteger searchGatewayCount = new AtomicInteger(0); + ; + private final AtomicBoolean isSearchGatewaySuccess = new AtomicBoolean(true); + private String searchGatewayId = ""; + private SearchGatewayCallBack mSearchGatewayCallBack; -// if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + private void initSearchGatewayEvent() { + LogUtils.i("鎼滅储缃戝叧--", "initSearchGatewayEvent"); + searchGatewayEvent = new EventListener() { + @Override + public void onMessage(Object msg) { + try { + if (msg instanceof LinkResponse) { + LinkResponse linkResponse = (LinkResponse) msg; + String data = linkResponse.getData(); + LogUtils.i("鎼滅储鍒扮綉鍏�->" + data); + if (!TextUtils.isEmpty(data)) { + final BaseLocalResponse<GatewaySearchBean> response = GsonConvert.getGson().fromJson(data, new TypeToken<BaseLocalResponse<GatewaySearchBean>>() { + }.getType()); + GatewaySearchBean searchBean = response.getObjects(); + if (searchBean != null && !TextUtils.isEmpty(searchBean.getGatewayId())) { + if (searchBean.getGatewayId().contains(searchGatewayId)) { + removeSearchGatewayEvent();//绉婚櫎鎼滅储缃戝叧鐩戝惉 + isSearchGatewaySuccess.set(true);//鎼滅储鎴愬姛鏍囪 + searchGatewayCount.set(11);//娆℃暟鏍囪 + HDLLinkConfig.getInstance().setCurrentGateway(searchBean);//璁剧疆褰撳墠缃戝叧 + HDLLinkConfig.getInstance().setLocalEncrypt(searchBean.isLocalEncrypt());//璁剧疆鏄惁鍔犲瘑 + if (mSearchGatewayCallBack != null) { + mSearchGatewayCallBack.onSuccess(searchBean); + } + } + } + } + } + } catch (Exception e) { + + } + } + }; + } + + /** + * 鎼滅储鎸囧畾缃戝叧鏄惁鍦ㄧ嚎锛屾悳绱㈠埌鍒欒繑鍥炴寚瀹氱殑缃戝叧瀵硅薄 + * + * @param gatewayId 缃戝叧id + * @param ip 鎺ユ敹鐩爣鐨刬p鍦板潃 + * @param callBack 鍥炶皟 + */ + public void searchGateway(String gatewayId, String ip, SearchGatewayCallBack callBack) { + this.searchGatewayId = gatewayId; + this.mSearchGatewayCallBack = callBack; + //閲嶇疆鍙傛暟 + searchGatewayCount.set(0); + isSearchGatewaySuccess.set(false); String time = String.valueOf(System.currentTimeMillis()); + JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty("id", IdUtils.getUUId()); + jsonObject.addProperty("time_stamp", time); + LinkRequest message = new LinkRequest(TopicConstant.GATEWAY_SEARCH, + jsonObject.toString()); + //娉ㄥ唽鎼滅储缃戝叧鐩戝惉 + registerSearchGatewayEvent(); + new Thread(new Runnable() { + @Override + public void run() { + while (searchGatewayCount.get() < 10 && (!isSearchGatewaySuccess.get())) { + try { + //鎼滅储缃戝叧 + searchGatewayCount.set(searchGatewayCount.get() + 1); + LogUtils.i("鎼滅储缃戝叧--", "鎼滅储缃戝叧绗�" + searchGatewayCount.get() + "娆�"); + getUdpBoot(ip).sendMsg(message.getSendBytes()); + Thread.sleep(1000L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } - final BaseLocalResponse<List<DeviceControlRequest>> data = new BaseLocalResponse<>(); - data.setId(IdUtils.getUUId()); - data.setTime_stamp(time); - data.setObjects(request); + if (!isSearchGatewaySuccess.get()) { + //鎼滅储10娆★紝鎸囧畾缃戝叧閮芥病鍥炲锛屽洖璋冭秴鏃� + callBackSearchGatewayTimeout(); + LogUtils.e("鎼滅储缃戝叧--", "鎼滅储10娆★紝鎸囧畾缃戝叧閮芥病鍥炲锛屽洖璋冭秴鏃�"); + } + } + }).start(); - - String topic = String.format(TopicConstant.PROPERTY_DOWN, "1406844230123372545"); - LinkRequest message = new LinkRequest(topic, - GsonConvert.getGson().toJson(data)); - -// Log.i("TAG", "propertyDown: " + message.toString()); - - String ip = IpUtils.getBroadcastAddress(); - HdlSocketHelper.send(getUdpBoot(ip), message, null); - -// } } - String stringToMD5(String text) { - byte[] hash; - try { - hash = MessageDigest.getInstance("MD5").digest(text.getBytes("UTF-8")); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - return null; - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - return null; - } - - StringBuilder hex = new StringBuilder(hash.length * 2); - for (byte b : hash) { - if ((b & 0xFF) < 0x10) - hex.append("0"); - hex.append(Integer.toHexString(b & 0xFF)); - } - - return hex.toString(); + /** + * 娉ㄥ唽鎼滅储缃戝叧鐩戝惉 + */ + private void registerSearchGatewayEvent() { + LogUtils.i("鎼滅储缃戝叧--", "娉ㄥ唽鎼滅储缃戝叧鐩戝惉"); + EventDispatcher.getInstance().registerIo(TopicConstant.GATEWAY_SEARCH_REPLY, searchGatewayEvent); } + /** + * 绉婚櫎鎼滅储缃戝叧鐩戝惉 + */ + private void removeSearchGatewayEvent() { + LogUtils.i("鎼滅储缃戝叧--", "绉婚櫎鎼滅储缃戝叧鐩戝惉"); + EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_SEARCH_REPLY, searchGatewayEvent); + } - + /** + * 鍥炶皟鎼滅储缃戝叧瓒呮椂 + */ + private void callBackSearchGatewayTimeout() { + removeSearchGatewayEvent(); + ThreadToolUtils.getInstance().runOnUiThread(new Runnable() { + @Override + public void run() { + if (mSearchGatewayCallBack != null) { + mSearchGatewayCallBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEARCH_GATEWAY_TIMEOUT_ERROR)); + } + } + }); + } } -- Gitblit v1.8.0