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/HDLSocket.java | 186 +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 175 insertions(+), 11 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 82b4652..56a047d 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,5 +1,7 @@ package com.hdl.sdk.connect.socket; +import static com.hdl.sdk.connect.config.HDLLinkConfig.AUTHENTICATE_IS_DEVICEINFO_KEY; + import android.os.Build; import android.text.TextUtils; import android.util.Log; @@ -27,8 +29,10 @@ import com.hdl.sdk.connect.bean.request.GatewayInfoRequest; import com.hdl.sdk.connect.bean.request.ListOidRequest; import com.hdl.sdk.connect.bean.request.ListOidRequest2; +import com.hdl.sdk.connect.bean.request.ListSidRequest; import com.hdl.sdk.connect.bean.request.ListUploadRequest; import com.hdl.sdk.connect.bean.response.AuthenticateResponse; +import com.hdl.sdk.connect.bean.response.BaseLocalCodeResponse; import com.hdl.sdk.connect.bean.response.BaseLocalResponse; import com.hdl.sdk.connect.bean.request.DeviceControlRequest; import com.hdl.sdk.connect.bean.request.FunctionAttributeRequest; @@ -94,6 +98,7 @@ public boolean isBroadcast = false; + /** * 骞挎挱鑷韩淇℃伅缁欎富缃戝叧 */ @@ -104,7 +109,7 @@ public void run() { while (true) { try { - Thread.sleep(1000); + Thread.sleep(5000); // LogUtils.i("checkIfCertified=" + HDLLink.getInstance().checkIfCertified() + " getTcp().connected=" + getTcp().connected); try { if (!HDLLink.getInstance().checkIfCertified() || (!TextUtils.isEmpty(getTcpIp()) && getTcp().connected)) { @@ -128,6 +133,10 @@ if (!TextUtils.isEmpty(data)) { DeviceInfoResponse response = GsonConvert.getGson().fromJson(data, new TypeToken<DeviceInfoResponse>() { }.getType()); + + if ((response == null) || (response.getObjects() == null) || (response.getObjects().getIPAddress() == null)) + return; + HDLLinkConfig.getInstance().setIpAddress(response.getObjects().getIPAddress()); LogUtils.i("---getIpAddress=" + HDLLinkConfig.getInstance().getIpAddress()); @@ -464,14 +473,15 @@ } } - public SocketBoot getTcp() throws RuntimeException { - if (TextUtils.isEmpty(getTcpIp())) { + public synchronized SocketBoot getTcp() throws RuntimeException { + String gatewayIpAddress=getTcpIp(); + if (TextUtils.isEmpty(gatewayIpAddress)) { LogUtils.e("璇锋悳绱㈢綉鍏�"); throw new RuntimeException("璇锋悳绱㈢綉鍏�"); } //濡傛灉娌℃湁鍒濆鍖栵紝鎴栬�呯綉鍏矷P鏇存敼浜嗭紝灏遍噸鏂板垵濮嬪寲 - if (tcpBoot == null || !getTcpOptions().getIp().equals(getTcpIp())) { - tcpBoot = TcpClient.init(getTcpIp(), getTcpPort(), getTcpOptions()); + if (tcpBoot == null || !getTcpOptions().getIp().equals(gatewayIpAddress)) { + tcpBoot = TcpClient.init(gatewayIpAddress, getTcpPort(), getTcpOptions()); tcpBoot.SetHeartbeat(new IHeartbeat() { @Override public void heartbeat() { @@ -516,6 +526,53 @@ LinkRequest message = new LinkRequest(topic, jsonObject.toString()); + String replyTopic = topic + "_reply"; + try { + sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { + @Override + public void onSucceed() { + + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR)); + } + } + } else { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR)); + } + } + } + + /** + * 鑾峰彇鍦烘櫙鍒楄〃 + */ + public void getScene(List<String> sids, HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<PropertyReadRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + List<PropertyReadRequest> list = new ArrayList<>(); + for (String s : sids) { + list.add(new PropertyReadRequest(s)); + } + data.setObjects(list); + + String topic = String.format(TopicConstant.SCENE_GET, getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + String replyTopic = topic + "_reply"; try { sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { @@ -606,12 +663,63 @@ data.setId(IdUtils.getUUId()); data.setTime_stamp(time); + //2023.10.18淇敼锛屼笂鎶id鍒楄〃澧炲姞parentOid + if (request!=null && !TextUtils.isEmpty(HDLLinkConfig.getInstance().getParentOid())) { + request.setParentOid(HDLLinkConfig.getInstance().getParentOid()); + } + List<ListUploadRequest> list = new ArrayList<>(); list.add(request); data.setObjects(list); String topic = String.format(TopicConstant.LIST_UPLOAD, 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() { + + } + + @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)); + } + } + } else { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } + + /** + * 涓婃姤Sid鍒楄〃 + * + * @param requestList sid鍒楄〃 + * @param callBack 鍥炶皟 + */ + public void UploadSidList(List<ListSidRequest> requestList, HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<ListSidRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + data.setObjects(requestList); + + String topic = String.format(TopicConstant.LIST_SID_UPLOAD, getGatewayId()); LinkRequest message = new LinkRequest(topic, GsonConvert.getGson().toJson(data)); @@ -828,9 +936,10 @@ final String msgId = IdUtils.getUUId(); String time = String.valueOf(System.currentTimeMillis()); - final BaseLocalResponse<List<ListOidRequest>> data = new BaseLocalResponse<>(); + final BaseLocalCodeResponse<List<ListOidRequest>> data = new BaseLocalCodeResponse<>(); data.setId(msgId); data.setTime_stamp(time); + data.setCode("0"); final ListOidRequest request = new ListOidRequest(); request.setOid(oid); @@ -846,14 +955,13 @@ // String replyTopic = topic + "_reply"; try { - sendMsg(message.getSendBytes(), topic, callBack, new SendListener() { + sendMsg(message.getSendBytes(), topic, null, new SendListener() { @Override public void onSucceed() { + HDLLinkConfig.getInstance().clearConfig(); if (callBack == null) return; try { callBack.onSuccess("閫�缃戞垚鍔�"); - HDLLinkConfig.getInstance().clearConfig(); - } catch (Exception e) { callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_ERROR)); } @@ -892,7 +1000,11 @@ public void tcpSendMsg(String topic, String bodyStr, HDLLinkCallBack callBack) { try { LinkRequest message = new LinkRequest(topic, bodyStr); + if (topic != null && topic.endsWith("_reply")) { + callBack = null; + } String replyTopic = topic + "_reply"; + HDLLinkCallBack finalCallBack = callBack; sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { @Override public void onSucceed() { @@ -901,8 +1013,8 @@ @Override public void onError() { - if (callBack != null) { - callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + if (finalCallBack != null) { + finalCallBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); } } }); @@ -1011,4 +1123,56 @@ } + /** + * 鍥炲缃戝叧閰嶇疆鍛戒护 + * + * @param mac_Oid_GatewayId + * @param msgId 娑堟伅Id + * @param callBack + */ + public void gatewayRemoteEditReply(String mac_Oid_GatewayId, String msgId, HDLLinkCallBack callBack) { + if (TextUtils.isEmpty(mac_Oid_GatewayId)) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR)); + } + + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalCodeResponse<List<String>> data = new BaseLocalCodeResponse<>(); + data.setId(msgId); + data.setTime_stamp(time); + data.setCode("0"); + + + String topic = String.format(TopicConstant.GATEWAY_EDIT_REMOTE_REPLY, mac_Oid_GatewayId); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + + try { + sendMsg(message.getSendBytes(), topic, callBack, new SendListener() { + @Override + public void onSucceed() { + if (callBack == null) return; + try { + callBack.onSuccess("閫�缃戞垚鍔�"); + HDLLinkConfig.getInstance().clearConfig(); + + } catch (Exception e) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_ERROR)); + } + } + + @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)); + } + } + } + } -- Gitblit v1.8.0