From 11cea3249fd58d59d7c1d644b1cfff6a547921c2 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期三, 16 二月 2022 13:07:10 +0800
Subject: [PATCH] Merge branch 'dev-hxb'

---
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java |   55 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 39 insertions(+), 16 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 b03d0fe..dedba8a 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
@@ -1,42 +1,37 @@
 package com.hdl.sdk.connect.socket;
 
 import android.text.TextUtils;
+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;
 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.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.bean.request.BroadcastRequest;
 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.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.callback.HDLLinkResponseCallBack;
 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;
 import com.hdl.sdk.socket.SocketOptions;
 import com.hdl.sdk.socket.client.TcpClient;
-import com.hdl.sdk.socket.client.UdpClient;
 import com.hdl.sdk.socket.codec.MessagePipeLine;
 import com.hdl.sdk.socket.listener.ConnectStatusListener;
 import com.hdl.sdk.socket.listener.SendListener;
 
-import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ScheduledExecutorService;
@@ -63,7 +58,7 @@
         statusListener = new ConnectStatusListener() {
             @Override
             public void onConnecting() {
-
+                broadcastRequest();
             }
 
             @Override
@@ -78,6 +73,31 @@
         };
     }
 
+    /**
+     * 骞挎挱鑷韩淇℃伅缁欎富缃戝叧
+     */
+    private void broadcastRequest() {
+        String time = String.valueOf(System.currentTimeMillis());
+        if (null == HDLLinkConfig.getInstance().getDeviceInfoBean()) {
+            LogUtils.i("DeviceInfoBean涓虹┖锛岃璁剧疆褰撳墠瀵硅薄");
+            return;
+        }
+        BroadcastRequest request = new BroadcastRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), "200");
+        HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request),true);
+        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) {
+
+            }
+        });
+        HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request),true);
+    }
+
     private static class SingletonInstance {
         private static final HDLSocket INSTANCE = new HDLSocket();
     }
@@ -86,17 +106,17 @@
         return SingletonInstance.INSTANCE;
     }
 
-
+    SocketOptions options;
     private SocketOptions getTcpOptions() {
-        final SocketOptions options = new SocketOptions();
+        if(null!=options){
+            return options;
+        }
+        options = new SocketOptions();
         final MessagePipeLine pipeLine = new MessagePipeLine();
         pipeLine.add(new LinkMessageDecoder());
         pipeLine.add(new LinkMessageEncoder());
         options.setHandleMessage(pipeLine);
-        options.setEnabledHeartbeat(false);//鏄惁寮�鍚績璺冲寘鍙戦�佹娴�
-//        options.setHeartbeatTimeInterval(10*1000L);
-//        options.setHeartbeatData("TCP");
-//        options.setEnabledHeartbeat(true);//鏄惁寮�鍚績璺冲寘鍙戦�佹娴�
+        options.addConnectStatusListener(statusListener);
         return options;
     }
 
@@ -387,11 +407,14 @@
 
     public SocketBoot getTcp() throws RuntimeException {
         if (TextUtils.isEmpty(getTcpIp())) {
+            LogUtils.e("璇锋悳绱㈢綉鍏�");
             throw new RuntimeException("璇锋悳绱㈢綉鍏�");
         }
-        if (tcpBoot == null) {
+        //濡傛灉娌℃湁鍒濆鍖栵紝鎴栬�呯綉鍏矷P鏇存敼浜嗭紝灏遍噸鏂板垵濮嬪寲
+        if (tcpBoot == null||!getTcpOptions().getIp().equals(getTcpIp())) {
             tcpBoot = TcpClient.init(getTcpIp(), getTcpPort(), getTcpOptions());
         }
+
         return tcpBoot;
     }
 

--
Gitblit v1.8.0