From 7c8ce9b9a7d3fc1aaa4a621e86415b25ad10a34f Mon Sep 17 00:00:00 2001
From: panlili2024 <14743743+panlili2024@user.noreply.gitee.com>
Date: 星期三, 19 三月 2025 09:36:28 +0800
Subject: [PATCH] 添加source屏扫码流程

---
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java |   72 ++++++++++++++++++++++++++++++++----
 1 files changed, 64 insertions(+), 8 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 6a3b624..9b94bcf 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
@@ -55,6 +55,7 @@
      * udp榛樿绔彛
      */
     private static final int UDP_PORT = 8585;
+    private static int BIND_UDP_PORT = 8584;
     /**
      * 鍥犱负鑰冭檻鍒颁娇鐢ㄤ竴涓鍙o紝瑕佹敮鎸佹帴鏀跺缃戝叧鐨勬暟鎹紝鎵�浠ュ彧鍏佽浣跨敤涓�涓�
      */
@@ -115,7 +116,9 @@
     private synchronized UdpSocketBoot getUdpBoot() {
         try {
             if (udpSocketBoot == null) {
-                udpSocketBoot = UdpClient.init(UDP_PORT, getUdpOptions());
+                //鍖哄垎鏄�8584杩樻槸8585
+                BIND_UDP_PORT = HDLSdk.getInstance().getBindPort();
+                udpSocketBoot = UdpClient.init(BIND_UDP_PORT, getUdpOptions());
                 udpSocketBoot.bind();
 
                 LogUtils.i("鍒濆鍖朣ocket udp");
@@ -155,21 +158,24 @@
                         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());
+                                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());
+                } catch (Exception e) {
+                    LogUtils.e("鍏ョ綉楠岃瘉寮傚父", e.getMessage());
                 }
             }
         });
@@ -196,6 +202,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());
@@ -207,7 +214,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());
@@ -255,19 +264,19 @@
                             String localSecret = "";
                             String gatewayId = "";
                             String ipAddress = "";
-                            String homeId="";
+                            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();
+                                homeId = bean.getObjects().getHomeId();
                             }
                             if (ipAddress == null) {
                                 ipAddress = bean.getIp_address();
                             }
-                            if(!TextUtils.isEmpty(homeId)){
+                            if (!TextUtils.isEmpty(homeId)) {
                                 HDLLinkConfig.getInstance().setHomeId(homeId);
                             }
                             HDLLinkConfig.getInstance().setAuthBean(request.getAuth());
@@ -551,6 +560,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     鍙戦�佹暟鎹�
@@ -652,6 +706,8 @@
                                     HDLLinkConfig.getInstance().setCurrentGateway(searchBean);//璁剧疆褰撳墠缃戝叧
                                     if (mSearchGatewayCallBack != null) {
                                         mSearchGatewayCallBack.onSuccess(searchBean);
+                                        HDLSocket.getInstance().isBroadcast = true;
+                                        HDLSocket.getInstance().getTcp();
                                     }
                                 }
                             }

--
Gitblit v1.8.0