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