From 0a8fd4aa92555875f58f67144c2c0c0a20a200af Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 20 八月 2024 09:57:13 +0800
Subject: [PATCH] 增加版本通过配置读取

---
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java |  107 ++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 80 insertions(+), 27 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 595c20b..950e4aa 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
@@ -148,19 +148,32 @@
         EventDispatcher.getInstance().register(TopicConstant.GATEWAY_AUTH_BROADCAST, new EventListener() {
             @Override
             public void onMessage(Object msg) {
-                LogUtils.i("鏀跺埌缃戝叧璁よ瘉淇℃伅: ");
-                NetworkAccessBroadcastResponse bean = getNetworkAccessBroadcastResponse(msg);
-                if (bean != null) {
-                    //绉婚櫎鐩戝惉
-                    EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST);
-                    LogUtils.i("缃戝叧鍏ョ綉骞挎挱IP: " + bean.getIPAddress());
-                    HDLLinkConfig.getInstance().setIpAddress(bean.getIPAddress());
-                    String ipStr = bean.getIPAddress();
-                    if (!TextUtils.isEmpty(ipStr)) {
-                        sendAuthenticateRequest(ipStr, request, callBack);
+                try {
+                    LogUtils.i("鏀跺埌缃戝叧璁よ瘉淇℃伅: ");
+                    NetworkAccessBroadcastResponse bean = getNetworkAccessBroadcastResponse(msg);
+                    if (bean != null) {
+                        LogUtils.i("缃戝叧鍏ョ綉骞挎挱IP: " + bean.getIPAddress());
+                        if (!TextUtils.isEmpty(bean.getSlave_mac())) {
+                            if (!bean.getSlave_mac().equals(request.getObjects().getDeviceMAC())) {
+                                LogUtils.i("鍏ョ綉楠岃瘉鐨刴ac鍜屾湰鏈轰笉涓�鏍凤紝璇锋眰鐨凪AC鏄�" + bean.getSlave_mac() + " 鏈満鐨勬槸" + request.getObjects().getDeviceMAC());
+                                return;
+                            }
+                        }
+                        //绉婚櫎鐩戝惉
+                        EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST);
+                        HDLLinkConfig.getInstance().setIpAddress(bean.getIPAddress());
+                        if (!TextUtils.isEmpty(bean.getOID())) {
+                            HDLLinkConfig.getInstance().setParentOid(bean.getOID());
+                        }
+                        String ipStr = bean.getIPAddress();
+                        if (!TextUtils.isEmpty(ipStr)) {
+                            sendAuthenticateRequest(ipStr, request, callBack);
+                        }
                     }
-                }
 
+                } catch (Exception e) {
+                    LogUtils.e("鍏ョ綉楠岃瘉寮傚父", e.getMessage());
+                }
             }
         });
     }
@@ -186,6 +199,7 @@
 
         final GatewayInfoRequest request = new GatewayInfoRequest();
         AuthenticateRequest.AuthenticateDeviceInfoBean authenticateDeviceInfoBean = HDLLinkConfig.getInstance().getDeviceInfoBean();
+        if (authenticateDeviceInfoBean == null) return;
         request.setDevice_model(authenticateDeviceInfoBean.getDeviceModel());
         request.setDevice_mac(authenticateDeviceInfoBean.getDeviceMAC());
         request.setDevice_name(authenticateDeviceInfoBean.getDeviceName());
@@ -197,7 +211,9 @@
 
         if (authenticateDeviceInfoBean.getSupplier() == null) {
             AuthenticateRequest.RequestBean requestBean = HDLLinkConfig.getInstance().getRequestBean();
-            request.setSupplier(requestBean.getSupplier());
+            if (requestBean != null) {
+                request.setSupplier(requestBean.getSupplier());
+            }
         }
 
         request.setHw_version(authenticateDeviceInfoBean.getHw_version());
@@ -205,6 +221,7 @@
         request.setIp_address(authenticateDeviceInfoBean.getIPAddress());
         request.setMaster("false");
         request.setLocalEncrypt(false);
+        request.setHomeId(HDLLinkConfig.getInstance().getHomeId());
 
         data.setObjects(request);
 
@@ -213,21 +230,7 @@
                 GsonConvert.getGson().toJson(data));
 
         String ip = IpUtils.getBroadcastAddress();
-        HdlSocketHelper.sendUdp(getUdpBoot(), ip, UDP_PORT, message, new HdlSocketHelper.HdlSocketListener() {
-            @Override
-            public void onSucceed(Object msg) {
-                if (callBack == null) return;
-                callBack.onSuccess("涓婃姤鎴愬姛");
-                LogUtils.i("UploadGatewayInfo onSucceed = " + msg);
-            }
-
-            @Override
-            public void onFailure() {
-                if (callBack == null) return;
-                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UPLOAD_GATEWAYINFO_FAILURE_ERROR));
-                LogUtils.i("UploadGatewayInfo onFailure");
-            }
-        });
+        HdlSocketHelper.sendUdp(getUdpBoot(), ip, UDP_PORT, message, null);
 
     }
 
@@ -258,15 +261,20 @@
                             String localSecret = "";
                             String gatewayId = "";
                             String ipAddress = "";
+                            String homeId = "";
                             if (bean.getAuth() != null) {
                                 localSecret = bean.getAuth().getLocalSecret();
                             }
                             if (bean.getObjects() != null) {
                                 gatewayId = bean.getObjects().getGatewayID();
                                 ipAddress = bean.getObjects().getIPAddress();
+                                homeId = bean.getObjects().getHomeId();
                             }
                             if (ipAddress == null) {
                                 ipAddress = bean.getIp_address();
+                            }
+                            if (!TextUtils.isEmpty(homeId)) {
+                                HDLLinkConfig.getInstance().setHomeId(homeId);
                             }
                             HDLLinkConfig.getInstance().setAuthBean(request.getAuth());
 
@@ -549,6 +557,51 @@
     }
 
     /**
+     * 閫氱敤鍙戦�佹寚浠�
+     * 鍙戦�佷竴娆�
+     *
+     * @param topic     鍙戦�佹暟鎹�
+     * @param bodyStr   鍥炲鐨勪富棰�
+     * @param broadcast 鏄惁瑕佸箍鎾�
+     * @param callBack  鍥炶皟
+     */
+    public void udpSendMsgOneTime(String topic, String bodyStr, boolean broadcast, HDLLinkResponseCallBack callBack) {
+        if (TextUtils.isEmpty(topic) || TextUtils.isEmpty(bodyStr)) {
+            if (callBack != null) {
+                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR));
+            }
+            return;
+        }
+
+        if (!HDLLinkConfig.getInstance().checkIfCertified()) {
+            if (callBack != null) {
+                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR));
+            }
+            return;
+        }
+
+        LinkRequest message = new LinkRequest(topic, bodyStr);
+        String ip = HDLLinkConfig.getInstance().getIpAddress();
+        if (broadcast) {
+            ip = IpUtils.getBroadcastAddress();
+        }
+        HdlSocketHelper.sendUdp(getUdpBoot(), ip, UDP_PORT, message,"", 1, 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     鍙戦�佹暟鎹�

--
Gitblit v1.8.0