From 30e96788f05f5ce28b58d991051c79e9c952c824 Mon Sep 17 00:00:00 2001 From: 562935844@qq.com Date: 星期三, 28 十二月 2022 14:51:34 +0800 Subject: [PATCH] 修改入网认证流程 --- HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java | 150 ++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 116 insertions(+), 34 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 23f1583..de555ec 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 @@ -4,6 +4,7 @@ import android.util.Log; import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; import com.hdl.sdk.common.config.TopicConstant; import com.hdl.sdk.common.event.EventDispatcher; import com.hdl.sdk.common.event.EventListener; @@ -11,15 +12,20 @@ import com.hdl.sdk.common.exception.HDLLinkException; import com.hdl.sdk.common.utils.IdUtils; import com.hdl.sdk.common.utils.LogUtils; +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.HDLLink; +import com.hdl.sdk.connect.bean.LoginRequest; import com.hdl.sdk.connect.bean.request.BroadcastRequest; +import com.hdl.sdk.connect.bean.response.AuthenticateResponse; 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.LinkRequest; import com.hdl.sdk.connect.bean.LinkResponse; import com.hdl.sdk.connect.bean.request.PropertyReadRequest; +import com.hdl.sdk.connect.bean.response.DeviceInfoResponse; import com.hdl.sdk.connect.callback.HDLLinkCallBack; import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack; import com.hdl.sdk.connect.config.HDLLinkConfig; @@ -59,7 +65,7 @@ statusListener = new ConnectStatusListener() { @Override public void onConnecting() { - broadcastRequest(); + //broadcastRequest(); } @Override @@ -74,43 +80,67 @@ }; } + public boolean isBroadcast = false; + /** * 骞挎挱鑷韩淇℃伅缁欎富缃戝叧 */ - private void broadcastRequest() { + public void broadcastRequest() { + new Thread(new Runnable() { @Override public void run() { - try { - LogUtils.i("骞挎挱璁惧鏈韩淇℃伅"); + while (true) { + try { + Thread.sleep(1000); +// LogUtils.i("checkIfCertified=" + HDLLink.getInstance().checkIfCertified() + " getTcp().connected=" + getTcp().connected); + try { + if (!HDLLink.getInstance().checkIfCertified() || getTcp().connected) { + continue; + } + } catch (Exception e) { - String time = String.valueOf(System.currentTimeMillis()); - if (null == HDLLinkConfig.getInstance().getDeviceInfoBean()) { - LogUtils.i("DeviceInfoBean涓虹┖锛岃璁剧疆褰撳墠瀵硅薄"); - return; + } + LogUtils.i("骞挎挱璁惧鏈韩淇℃伅"); + String time = String.valueOf(System.currentTimeMillis()); + if (null == HDLLinkConfig.getInstance().getDeviceInfoBean()) { + LogUtils.i("DeviceInfoBean涓虹┖锛岃璁剧疆褰撳墠瀵硅薄"); + continue; + } + BroadcastRequest request = new BroadcastRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), "200"); + HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true, new HDLLinkResponseCallBack() { + @Override + public void onSuccess(LinkResponse msg) { + getTcp(); + String data = msg.getData(); + if (!TextUtils.isEmpty(data)) { + DeviceInfoResponse response = GsonConvert.getGson().fromJson(data, new TypeToken<DeviceInfoResponse>() { + }.getType()); + HDLLinkConfig.getInstance().setIpAddress(response.getObjects().getIPAddress()); + HDLLinkConfig.getInstance().reSaveConfig(); + } + isBroadcast = true; + LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧鎴愬姛锛�"); + } + + @Override + public void onError(HDLLinkException e) { + isBroadcast = false; + LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧澶辫触锛�"); + } + }); +// HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true); + //HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true); + } catch (Exception e) { + LogUtils.e("骞挎挱璁惧鏈韩淇℃伅澶辫触锛屽け璐ヤ俊鎭細" + e.getMessage()); } - BroadcastRequest request = new BroadcastRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), "200"); - HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true, new HDLLinkResponseCallBack() { - @Override - public void onSuccess(LinkResponse msg) { - LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧鎴愬姛锛�"); - } - - @Override - public void onError(HDLLinkException e) { - LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧澶辫触锛�"); - } - }); - HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true); - HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true); - } catch (Exception e) { - LogUtils.e("骞挎挱璁惧鏈韩淇℃伅澶辫触锛屽け璐ヤ俊鎭細" + e.getMessage()); } + } }).start(); } -// private static class SingletonInstance { + // private static class SingletonInstance { // } private static final HDLSocket instance = new HDLSocket(); @@ -119,8 +149,9 @@ } SocketOptions options; + private SocketOptions getTcpOptions() { - if(null!=options){ + if (null != options) { return options; } options = new SocketOptions(); @@ -423,13 +454,13 @@ throw new RuntimeException("璇锋悳绱㈢綉鍏�"); } //濡傛灉娌℃湁鍒濆鍖栵紝鎴栬�呯綉鍏矷P鏇存敼浜嗭紝灏遍噸鏂板垵濮嬪寲 - if (tcpBoot == null||!getTcpOptions().getIp().equals(getTcpIp())) { + if (tcpBoot == null || !getTcpOptions().getIp().equals(getTcpIp())) { tcpBoot = TcpClient.init(getTcpIp(), getTcpPort(), getTcpOptions()); tcpBoot.SetHeartbeat(new IHeartbeat() { @Override public void heartbeat() { - if(HDLLinkConfig.getInstance().getDeviceInfoBean()==null||HDLLinkConfig.getInstance().getDeviceInfoBean().getOID()==null) { + if (HDLLinkConfig.getInstance().getDeviceInfoBean() == null || HDLLinkConfig.getInstance().getDeviceInfoBean().getOID() == null) { LogUtils.i("DeviceInfoBean涓虹┖锛岄渶瑕佽缃墠鑳芥甯稿績璺�"); return; } @@ -493,8 +524,9 @@ } /** - * 鍦烘櫙鎺у埗 - * @param sids 鍦烘櫙sid鍒楄〃 + * 鍦烘櫙鎺у埗 + * + * @param sids 鍦烘櫙sid鍒楄〃 * @param callBack 鍥炶皟 */ public void controlScene(List<String> sids, HDLLinkCallBack callBack) { @@ -535,6 +567,56 @@ } } } else { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } + + /** + * tcp鐧诲綍鏂逛究鑾峰彇鐘舵�� + * + * @param clientType 瀹㈡埛绔被鍨� + * 搴旂敤锛歛pp锛� + * 璋冭瘯杞欢锛歱rogram锛� + * 绗笁鏂癸細third_party锛� + * 缃戝叧锛歡ateway锛� + * 鍏跺畠锛歰ther + * @param version 鍗忚鐗堟湰 + */ + public void tcpLogin(String clientType, String version, HDLLinkCallBack callBack) { + final String msgId = IdUtils.getUUId(); + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<LoginRequest> data = new BaseLocalResponse<>(); + data.setId(msgId); + data.setTime_stamp(time); + + final LoginRequest request = new LoginRequest(); + request.setVersion(version); + request.setClientType(clientType); + + data.setObjects(request); + + String topic = String.format(TopicConstant.GATEWAY_LOGIN, HDLLinkConfig.getInstance().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() { + LogUtils.i("tcpLogin 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)); } @@ -584,8 +666,8 @@ /** * 閫氱敤TCP鍙戦�佹寚浠� 鍙彂涓�娆★紝涓嶇洃鍚洖澶嶏紝涓嶉噸鍙� * - * @param topic 鍙戦�佹暟鎹� - * @param bodyStr 鍥炲鐨勪富棰� + * @param topic 鍙戦�佹暟鎹� + * @param bodyStr 鍥炲鐨勪富棰� */ public void tcpSendMsg(String topic, String bodyStr) { try { @@ -596,7 +678,7 @@ LinkRequest message = new LinkRequest(topic, bodyStr); getTcp().sendMsg(message.getSendBytes()); } catch (Exception e) { - LogUtils.e("tcpSendMsg", "鍙戦�佸け璐� :"+e.getMessage()); + LogUtils.e("tcpSendMsg", "鍙戦�佸け璐� :" + e.getMessage()); } } @@ -607,7 +689,7 @@ public void sendMsg(byte[] data, String eventTag, HDLLinkCallBack callBack, SendListener sendListener) { try { - if(eventTag!=null) { + if (eventTag != null) { final AtomicInteger sendCount = new AtomicInteger(0); final ScheduledExecutorService threadPool = ThreadToolUtils.getInstance().newScheduledThreadPool(1); -- Gitblit v1.8.0