From aba53745b27e7efe5f43f86ef4aa1e95611cd804 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期一, 06 十二月 2021 17:33:59 +0800
Subject: [PATCH] 2021-12-06 1.修复有时解密失败问题。
---
HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java | 9 +++-
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java | 1
HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java | 65 ++++++++++++++++++++++++++++----
HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/codec/MessagePipeLine.java | 2
4 files changed, 64 insertions(+), 13 deletions(-)
diff --git a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
index 33838bc..ea90450 100644
--- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
+++ b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -10,6 +10,7 @@
import android.Manifest;
import android.os.Bundle;
+import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
@@ -17,14 +18,17 @@
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.listener.OnItemClickListener;
+import com.google.gson.reflect.TypeToken;
import com.hdl.sdk.common.event.EventListener;
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.gson.GsonConvert;
import com.hdl.sdk.connect.HDLLink;
import com.hdl.sdk.connect.bean.LinkResponse;
import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
import com.hdl.sdk.connect.bean.request.PropertyReadRequest;
+import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
import com.hdl.sdk.connect.bean.response.GatewaySearchBean;
import com.hdl.sdk.connect.callback.HDLLinkCallBack;
import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
@@ -43,15 +47,18 @@
import java.util.List;
import java.util.Map;
+import static com.hdl.sdk.common.config.TopicConstant.GATEWAY_SEARCH_REPLY;
+
public class MainActivity extends AppCompatActivity {
+ private static final String TAG = "MainActivity";
private DemoAdapter demoAdapter;
private RecyclerView rv;
private TextView tv;
private TextView responseTv;
boolean isOn;
private EventListener allTopicsListener;
- private String testLightSid = "000101B847C71B02020100010101";
+ private String testLightSid = "0001010D48C71B02020100010101";
@Override
protected void onDestroy() {
@@ -94,13 +101,11 @@
rv.setAdapter(demoAdapter);
- final SocketOptions options = new SocketOptions();
-
+// final SocketOptions options = new SocketOptions();
+//
MessagePipeLine pipeLine = new MessagePipeLine();
- pipeLine.add(new LinkMessageDecoder());
- pipeLine.add(new LinkMessageEncoder());
- options.setHandleMessage(pipeLine);
- options.setEnabledHeartbeat(false);
+// options.setHandleMessage(pipeLine);
+// options.setEnabledHeartbeat(false);
demoAdapter.setOnItemClickListener(new OnItemClickListener() {
@Override
@@ -164,10 +169,52 @@
@Override
public void onMessage(Object msg) {
LinkResponse response = (LinkResponse)msg;
- Log.i("TAG", "AllTopicsListener onMessage: "+msg.toString());
+ if(response != null){
+ Log.i(TAG, "AllTopicsListener"
+ + "\nTopic: " + response.getTopic()
+ +"\n Data: " + response.getData());
+ handleLinkResponse(response);
+ }
+
}
};
HDLLink.getInstance().registerAllTopicsListener(allTopicsListener);
+ }
+
+ /**
+ * 澶勭悊鏀跺埌鐨勪富棰�
+ * @param response
+ */
+ private void handleLinkResponse(LinkResponse response){
+ //缃戝叧鎼滅储鍥炲
+ if(response.getTopic().contains("/user/all/custom/gateway/search_reply")){
+ String data = response.getData();
+ if (!TextUtils.isEmpty(data)) {
+ Log.i("handleLinkResponse", "data:"+data);
+ final BaseLocalResponse<GatewaySearchBean> bean = GsonConvert.getGson().fromJson(data, new TypeToken<BaseLocalResponse<GatewaySearchBean>>() {
+ }.getType());
+ GatewaySearchBean searchBean = bean.getObjects();
+ Log.i("handleLinkResponse", "GatewaySearchBean: "+searchBean.getGatewayId());
+ }
+ }else{
+ //鍏跺畠涓婚
+
+ }
+ }
+
+ private GatewaySearchBean getGatewaySearchBean(Object msg) {
+ GatewaySearchBean searchBean = null;
+ if (msg instanceof LinkResponse) {
+ LinkResponse linkResponse = (LinkResponse) msg;
+ String data = linkResponse.getData();
+ if (!TextUtils.isEmpty(data)) {
+ final BaseLocalResponse<GatewaySearchBean> response = GsonConvert.getGson().fromJson(data, new TypeToken<BaseLocalResponse<GatewaySearchBean>>() {
+ }.getType());
+ searchBean = response.getObjects();
+ }
+
+ }
+ return searchBean;
}
/**
@@ -209,7 +256,7 @@
infoBean.setDeviceName("绾㈠瀹�");//璁惧鍚嶅瓧
infoBean.setDeviceModel("HDL");//
infoBean.setAccessMode("WIFI");
- infoBean.setIPGateway("192.168.10.1");
+ infoBean.setIPGateway("192.168.12.1");
infoBean.setIPAddress(IpUtils.getIP(this));
infoBean.setOID("010105000000FE08");
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
index 2ce8c8d..4cc8a8f 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
@@ -70,6 +70,7 @@
} else {
//瑙e瘑澶辫触锛岃繑鍥炲師鏁版嵁
response.setData(new String(body, "utf-8"));
+ LogUtils.e( "瑙e瘑澶辫触");
}
} else {
diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java
index 51a03d8..3cd750c 100644
--- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java
+++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java
@@ -14,6 +14,7 @@
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
+import java.util.Arrays;
import java.util.List;
@@ -89,10 +90,12 @@
if (stream != null && getOptions() != null) {
readBuffer = new byte[1024];
- while ((getInputStream().read(readBuffer)) != -1) {
+ int len;
+ while ((len = getInputStream().read(readBuffer)) != -1) {
IHandleMessage handleMessage = getOptions().getHandleMessage();
- if (handleMessage != null) {
- handleMessage.read(readBuffer);
+ if (handleMessage != null && len > 0) {
+ handleMessage.read(Arrays.copyOfRange(readBuffer, 0, len));
+// handleMessage.read(readBuffer);
}
}
}
diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/codec/MessagePipeLine.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/codec/MessagePipeLine.java
index b5e8195..3517fad 100644
--- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/codec/MessagePipeLine.java
+++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/codec/MessagePipeLine.java
@@ -9,7 +9,7 @@
*/
public class MessagePipeLine implements IMessagePipeLine, IHandleMessage {
- public final static List<IHandleFlow> queue = new ArrayList<>();
+ public final List<IHandleFlow> queue = new ArrayList<>();
@Override
public void add(IHandleFlow flow) {
--
Gitblit v1.8.0