From 30e96788f05f5ce28b58d991051c79e9c952c824 Mon Sep 17 00:00:00 2001
From: 562935844@qq.com
Date: 星期三, 28 十二月 2022 14:51:34 +0800
Subject: [PATCH] 修改入网认证流程
---
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java | 150 ++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 116 insertions(+), 34 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 23f1583..de555ec 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
@@ -4,6 +4,7 @@
import android.util.Log;
import com.google.gson.JsonObject;
+import com.google.gson.reflect.TypeToken;
import com.hdl.sdk.common.config.TopicConstant;
import com.hdl.sdk.common.event.EventDispatcher;
import com.hdl.sdk.common.event.EventListener;
@@ -11,15 +12,20 @@
import com.hdl.sdk.common.exception.HDLLinkException;
import com.hdl.sdk.common.utils.IdUtils;
import com.hdl.sdk.common.utils.LogUtils;
+import com.hdl.sdk.common.utils.SPUtils;
import com.hdl.sdk.common.utils.ThreadToolUtils;
import com.hdl.sdk.common.utils.gson.GsonConvert;
+import com.hdl.sdk.connect.HDLLink;
+import com.hdl.sdk.connect.bean.LoginRequest;
import com.hdl.sdk.connect.bean.request.BroadcastRequest;
+import com.hdl.sdk.connect.bean.response.AuthenticateResponse;
import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
import com.hdl.sdk.connect.bean.request.FunctionAttributeRequest;
import com.hdl.sdk.connect.bean.LinkRequest;
import com.hdl.sdk.connect.bean.LinkResponse;
import com.hdl.sdk.connect.bean.request.PropertyReadRequest;
+import com.hdl.sdk.connect.bean.response.DeviceInfoResponse;
import com.hdl.sdk.connect.callback.HDLLinkCallBack;
import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
import com.hdl.sdk.connect.config.HDLLinkConfig;
@@ -59,7 +65,7 @@
statusListener = new ConnectStatusListener() {
@Override
public void onConnecting() {
- broadcastRequest();
+ //broadcastRequest();
}
@Override
@@ -74,43 +80,67 @@
};
}
+ public boolean isBroadcast = false;
+
/**
* 骞挎挱鑷韩淇℃伅缁欎富缃戝叧
*/
- private void broadcastRequest() {
+ public void broadcastRequest() {
+
new Thread(new Runnable() {
@Override
public void run() {
- try {
- LogUtils.i("骞挎挱璁惧鏈韩淇℃伅");
+ while (true) {
+ try {
+ Thread.sleep(1000);
+// LogUtils.i("checkIfCertified=" + HDLLink.getInstance().checkIfCertified() + " getTcp().connected=" + getTcp().connected);
+ try {
+ if (!HDLLink.getInstance().checkIfCertified() || getTcp().connected) {
+ continue;
+ }
+ } catch (Exception e) {
- String time = String.valueOf(System.currentTimeMillis());
- if (null == HDLLinkConfig.getInstance().getDeviceInfoBean()) {
- LogUtils.i("DeviceInfoBean涓虹┖锛岃璁剧疆褰撳墠瀵硅薄");
- return;
+ }
+ LogUtils.i("骞挎挱璁惧鏈韩淇℃伅");
+ String time = String.valueOf(System.currentTimeMillis());
+ if (null == HDLLinkConfig.getInstance().getDeviceInfoBean()) {
+ LogUtils.i("DeviceInfoBean涓虹┖锛岃璁剧疆褰撳墠瀵硅薄");
+ continue;
+ }
+ BroadcastRequest request = new BroadcastRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), "200");
+ HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true, new HDLLinkResponseCallBack() {
+ @Override
+ public void onSuccess(LinkResponse msg) {
+ getTcp();
+ String data = msg.getData();
+ if (!TextUtils.isEmpty(data)) {
+ DeviceInfoResponse response = GsonConvert.getGson().fromJson(data, new TypeToken<DeviceInfoResponse>() {
+ }.getType());
+ HDLLinkConfig.getInstance().setIpAddress(response.getObjects().getIPAddress());
+ HDLLinkConfig.getInstance().reSaveConfig();
+ }
+ isBroadcast = true;
+ LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧鎴愬姛锛�");
+ }
+
+ @Override
+ public void onError(HDLLinkException e) {
+ isBroadcast = false;
+ LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧澶辫触锛�");
+ }
+ });
+// HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true);
+ //HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true);
+ } catch (Exception e) {
+ LogUtils.e("骞挎挱璁惧鏈韩淇℃伅澶辫触锛屽け璐ヤ俊鎭細" + e.getMessage());
}
- BroadcastRequest request = new BroadcastRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), "200");
- HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true, new HDLLinkResponseCallBack() {
- @Override
- public void onSuccess(LinkResponse msg) {
- LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧鎴愬姛锛�");
- }
-
- @Override
- public void onError(HDLLinkException e) {
- LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧澶辫触锛�");
- }
- });
- HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true);
- HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true);
- } catch (Exception e) {
- LogUtils.e("骞挎挱璁惧鏈韩淇℃伅澶辫触锛屽け璐ヤ俊鎭細" + e.getMessage());
}
+
}
}).start();
}
-// private static class SingletonInstance {
+ // private static class SingletonInstance {
// }
private static final HDLSocket instance = new HDLSocket();
@@ -119,8 +149,9 @@
}
SocketOptions options;
+
private SocketOptions getTcpOptions() {
- if(null!=options){
+ if (null != options) {
return options;
}
options = new SocketOptions();
@@ -423,13 +454,13 @@
throw new RuntimeException("璇锋悳绱㈢綉鍏�");
}
//濡傛灉娌℃湁鍒濆鍖栵紝鎴栬�呯綉鍏矷P鏇存敼浜嗭紝灏遍噸鏂板垵濮嬪寲
- if (tcpBoot == null||!getTcpOptions().getIp().equals(getTcpIp())) {
+ if (tcpBoot == null || !getTcpOptions().getIp().equals(getTcpIp())) {
tcpBoot = TcpClient.init(getTcpIp(), getTcpPort(), getTcpOptions());
tcpBoot.SetHeartbeat(new IHeartbeat() {
@Override
public void heartbeat() {
- if(HDLLinkConfig.getInstance().getDeviceInfoBean()==null||HDLLinkConfig.getInstance().getDeviceInfoBean().getOID()==null) {
+ if (HDLLinkConfig.getInstance().getDeviceInfoBean() == null || HDLLinkConfig.getInstance().getDeviceInfoBean().getOID() == null) {
LogUtils.i("DeviceInfoBean涓虹┖锛岄渶瑕佽缃墠鑳芥甯稿績璺�");
return;
}
@@ -493,8 +524,9 @@
}
/**
- * 鍦烘櫙鎺у埗
- * @param sids 鍦烘櫙sid鍒楄〃
+ * 鍦烘櫙鎺у埗
+ *
+ * @param sids 鍦烘櫙sid鍒楄〃
* @param callBack 鍥炶皟
*/
public void controlScene(List<String> sids, HDLLinkCallBack callBack) {
@@ -535,6 +567,56 @@
}
}
} else {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR));
+ }
+ }
+ }
+
+ /**
+ * tcp鐧诲綍鏂逛究鑾峰彇鐘舵��
+ *
+ * @param clientType 瀹㈡埛绔被鍨�
+ * 搴旂敤锛歛pp锛�
+ * 璋冭瘯杞欢锛歱rogram锛�
+ * 绗笁鏂癸細third_party锛�
+ * 缃戝叧锛歡ateway锛�
+ * 鍏跺畠锛歰ther
+ * @param version 鍗忚鐗堟湰
+ */
+ public void tcpLogin(String clientType, String version, HDLLinkCallBack callBack) {
+ final String msgId = IdUtils.getUUId();
+ String time = String.valueOf(System.currentTimeMillis());
+ final BaseLocalResponse<LoginRequest> data = new BaseLocalResponse<>();
+ data.setId(msgId);
+ data.setTime_stamp(time);
+
+ final LoginRequest request = new LoginRequest();
+ request.setVersion(version);
+ request.setClientType(clientType);
+
+ data.setObjects(request);
+
+ String topic = String.format(TopicConstant.GATEWAY_LOGIN, HDLLinkConfig.getInstance().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() {
+ LogUtils.i("tcpLogin 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));
}
@@ -584,8 +666,8 @@
/**
* 閫氱敤TCP鍙戦�佹寚浠� 鍙彂涓�娆★紝涓嶇洃鍚洖澶嶏紝涓嶉噸鍙�
*
- * @param topic 鍙戦�佹暟鎹�
- * @param bodyStr 鍥炲鐨勪富棰�
+ * @param topic 鍙戦�佹暟鎹�
+ * @param bodyStr 鍥炲鐨勪富棰�
*/
public void tcpSendMsg(String topic, String bodyStr) {
try {
@@ -596,7 +678,7 @@
LinkRequest message = new LinkRequest(topic, bodyStr);
getTcp().sendMsg(message.getSendBytes());
} catch (Exception e) {
- LogUtils.e("tcpSendMsg", "鍙戦�佸け璐� :"+e.getMessage());
+ LogUtils.e("tcpSendMsg", "鍙戦�佸け璐� :" + e.getMessage());
}
}
@@ -607,7 +689,7 @@
public void sendMsg(byte[] data, String eventTag, HDLLinkCallBack callBack, SendListener sendListener) {
try {
- if(eventTag!=null) {
+ if (eventTag != null) {
final AtomicInteger sendCount = new AtomicInteger(0);
final ScheduledExecutorService threadPool = ThreadToolUtils.getInstance().newScheduledThreadPool(1);
--
Gitblit v1.8.0