From 5873127e4249693d11d9c321599011ea6b12ba1f Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期一, 18 九月 2023 19:23:49 +0800
Subject: [PATCH] 处理接收数据优化
---
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java | 363 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 347 insertions(+), 16 deletions(-)
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java
index e259914..83f0ec7 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java
@@ -1,10 +1,35 @@
package com.hdl.sdk.connect;
-import com.hdl.sdk.common.config.AuthenticateConfig;
+import android.content.Context;
+
+import com.hdl.hdlhttp.HxHttpConfig;
+import com.hdl.sdk.common.event.DeleteNetworkListener;
+import com.hdl.sdk.common.utils.LogUtils;
+import com.hdl.sdk.common.utils.ThreadToolUtils;
+import com.hdl.sdk.connect.bean.request.DeviceAuthRequest;
+import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
+import com.hdl.sdk.connect.bean.request.ListSidRequest;
+import com.hdl.sdk.connect.bean.request.ListUploadRequest;
+import com.hdl.sdk.connect.callback.HDLLinkCallBack;
+import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
+import com.hdl.sdk.connect.cloud.CallBackListener;
+import com.hdl.sdk.connect.cloud.CheckAppVersionListener;
+import com.hdl.sdk.connect.cloud.HdlCloudApi;
+import com.hdl.sdk.connect.cloud.HdlCloudController;
+import com.hdl.sdk.connect.cloud.interceptor.EncryptInterceptor;
+import com.hdl.sdk.connect.cloud.interceptor.SmartHeaderInterceptor;
+import com.hdl.sdk.connect.config.HDLLinkConfig;
import com.hdl.sdk.common.event.EventDispatcher;
import com.hdl.sdk.common.event.EventListener;
-import com.hdl.sdk.connect.bean.AuthenticateRequest;
+import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
import com.hdl.sdk.connect.socket.HDLAuthSocket;
+import com.hdl.sdk.connect.socket.HDLSocket;
+
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import io.reactivex.rxjava3.disposables.Disposable;
+import okhttp3.logging.HttpLoggingInterceptor;
/**
* Created by jlchen on 11/15/21.
@@ -15,45 +40,95 @@
/**
* instance
*/
- private volatile static HDLLink instance;
+ private static final HDLLink instance = new HDLLink();
+
+ private String appKey, appSecret;
+ public DeleteNetworkListener listener;
+
/**
* getInstance
*
* @return HDLLink
*/
- public static synchronized HDLLink getInstance() {
- if (instance == null) {
- synchronized (HDLLink.class) {
- if (instance == null) {
- instance = new HDLLink();
- }
- }
- }
+ public static HDLLink getInstance() {
+// if (instance == null) {
+// synchronized (HDLLink.class) {
+// if (instance == null) {
+// instance = new HDLLink();
+// }
+// }
+// }
return instance;
+ }
+
+ public String getAppKey() {
+ return appKey;
+ }
+
+ public void setAppKey(String appKey) {
+ this.appKey = appKey;
+ }
+
+ public String getAppSecret() {
+ return appSecret;
+ }
+
+ public void setAppSecret(String appSecret) {
+ this.appSecret = appSecret;
}
/**
* 娉ㄥ唽鎵�鏈変富棰樻秷鎭殑鐩戝惉
+ *
* @param listener
*/
- public synchronized void registerAllTopicsListener(EventListener listener){
+ public synchronized void registerAllTopicsListener(EventListener listener) {
EventDispatcher.getInstance().registerAllTopicsListener(listener);
}
+
/**
* 鍙栨秷鎵�鏈変富棰樻秷鎭殑鐩戝惉
+ *
* @param listener
*/
public synchronized void removeAllTopicsListener(EventListener listener) {
+ if (listener == null) return;
EventDispatcher.getInstance().removeAllTopicsListener(listener);
}
/**
+ * 娉ㄥ唽閫�缃戜富棰樼殑鐩戝惉
+ *
+ * @param listener
+ */
+ public synchronized void setDeleteNetworkListener(DeleteNetworkListener listener) {
+ this.listener = listener;
+ }
+
+ /***********************涓夋柟璁惧鍜岀綉鍏抽�氫俊涔嬪墠鐨勮璇佹祦绋�****************************/
+ /**
* 妫�娴嬫槸鍚﹀凡缁忚璇佽繃
* 璁よ瘉閫氳繃鎵嶈兘杩涜璁惧鎺у埗
+ *
* @return
*/
- public boolean checkIfCertified(){
- return AuthenticateConfig.getInstance().checkIfCertified();
+ public boolean checkIfCertified() {
+ return HDLLinkConfig.getInstance().checkIfCertified();
+ }
+
+ public void selectNetwork(String networkName) {
+ HDLLinkConfig.getInstance().setNetworkName(networkName);
+ }
+
+ /**
+ * 寮�濮嬬洃鍚拰鍙戣捣鍏ョ綉鍙婅璇佽姹�
+ *
+ * @param request 璁よ瘉璇锋眰淇℃伅
+ * @param callBack 缁撴灉鍥炶皟
+ */
+ public void startAuthenticateRequest(AuthenticateRequest request, HDLLinkCallBack callBack) {
+ LogUtils.i("鍙戦�佽璇佽姹�");
+ HDLAuthSocket.getInstance().startAuthenticateRequest(request, callBack);
}
/**
@@ -63,8 +138,264 @@
* @param request 璁よ瘉璇锋眰淇℃伅
* @param callBack 缁撴灉鍥炶皟
*/
- public void sendAuthenticateRequest(String ip, AuthenticateRequest request, HDLAuthSocket.CallBack callBack) {
- HDLAuthSocket.getInstance().sendAuthenticateRequest(ip,request,callBack);
+ public void sendAuthenticateRequest(String ip, AuthenticateRequest request, HDLLinkCallBack callBack) {
+ HDLAuthSocket.getInstance().sendAuthenticateRequest(ip, request, callBack);
}
+ /**
+ * 鍏ョ綉璁よ瘉缁撴灉鍙嶉
+ *
+ * @param mac mac
+ * @param result 缁撴灉0/-1
+ * @param message 璁よ瘉淇℃伅
+ * @param auth_code 浜戠璁よ瘉code
+ * @param callBack 缁撴灉鍥炶皟
+ */
+ public void UploadDeviceAuth(String mac, String result, String message, String auth_code, HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().UploadDeviceAuth(mac, result, message, auth_code, callBack);
+ }
+
+ /**
+ * 鐢宠璁惧瀵嗛挜(鏍规嵁璁惧MAC)
+ *
+ * @param supplier 鍘傚晢
+ * @param mac 璁惧mac
+ * @param spk 璁惧spk
+ * @param callBack 缁撴灉鍥炶皟
+ */
+ public void applyDeviceSecret(Context context, String appKey, String appSecret, String supplier, String mac, String spk, CallBackListener callBack) {
+ LogUtils.i("鐢宠璁惧瀵嗛挜");
+ HxHttpConfig.getInstance().init(context, HdlCloudApi.BASE_CHINA_URL)
+ .addInterceptor(
+ new EncryptInterceptor(),
+ new SmartHeaderInterceptor());
+ this.appKey = appKey;
+ this.appSecret = appSecret;
+
+ HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
+ httpLoggingInterceptor.level(HttpLoggingInterceptor.Level.BODY);
+
+ HxHttpConfig.getInstance()
+ //.addInterceptor(new HttpCacheInterceptor())
+ .addInterceptor(httpLoggingInterceptor).ignoreSSL();
+
+ HdlCloudController.applyDeviceSecret(supplier, mac, spk, callBack);
+ }
+
+ /**
+ * 妫�娴嬫洿鏂�
+ *
+ * @param appKey appKey
+ * @param appSecret appSecret
+ * @param versionCode 褰撳墠鐗堟湰
+ * @param appCode appCode
+ * @param listener 缁撴灉鍥炶皟
+ */
+ public void checkAppVersion(Context context, String appKey, String appSecret, String versionCode, String appCode, CheckAppVersionListener listener) {
+ LogUtils.i("妫�娴嬫洿鏂�");
+ HxHttpConfig.getInstance().init(context, HdlCloudApi.BASE_CHINA_URL)
+ .addInterceptor(
+ new EncryptInterceptor(),
+ new SmartHeaderInterceptor());
+ this.appKey = appKey;
+ this.appSecret = appSecret;
+
+ HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
+ httpLoggingInterceptor.level(HttpLoggingInterceptor.Level.BODY);
+
+ HxHttpConfig.getInstance()
+ //.addInterceptor(new HttpCacheInterceptor())
+ .addInterceptor(httpLoggingInterceptor).ignoreSSL();
+
+ HdlCloudController.checkAppVersion(versionCode, appCode, listener);
+ }
+
+ /**
+ * 閫氱煡鍒犻櫎骞堕��缃戝瓙璁惧
+ *
+ * @param oid 浠庣綉鍏筹紙璁惧锛塷id
+ * @param isForce 鏄惁寮哄埗閫�缃�
+ * @param callBack 缁撴灉鍥炶皟
+ */
+ public void deleteNetwork(String oid, boolean isForce, HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().deleteNetwork(oid, isForce, callBack);
+ }
+
+ /***********************涓夋柟璁惧璇峰厛璁よ瘉鎴愬姛 鍐嶈皟鐢ㄤ笅闈㈢殑鎺ュ彛鍜岀綉鍏抽�氫俊****************************/
+ /**
+ * 缁勬挱鎼滅储鎸囧畾缃戝叧鏄惁鍦ㄧ嚎锛屾悳绱㈠埌鍒欒繑鍥炴寚瀹氱殑缃戝叧瀵硅薄
+ *
+ * @param callBack 鍥炶皟
+ */
+ public void searchGatewayMulticast(HDLAuthSocket.SearchGatewayCallBack callBack) {
+ HDLAuthSocket.getInstance().searchGatewayMulticast(callBack);
+ }
+
+ /**
+ * 缁勬挱鎼滅储鎸囧畾缃戝叧鏄惁鍦ㄧ嚎锛屾悳绱㈠埌鍒欒繑鍥炴寚瀹氱殑缃戝叧瀵硅薄
+ *
+ * @param callBack 鍥炶皟
+ */
+ public void searchGatewayBroadcast(HDLAuthSocket.SearchGatewayCallBack callBack) {
+ HDLAuthSocket.getInstance().searchGatewayBroadcast(callBack);
+ }
+
+ /**
+ * 鑾峰彇璁惧鍒楄〃
+ */
+ public void getDeviceList(HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().getDeviceList(callBack);
+ }
+
+ /**
+ * 鑾峰彇鍔熻兘鍒楄〃
+ */
+ public void getFunctionList(HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().getFunctionList(callBack);
+ }
+
+ /**
+ * 鑾峰彇鍔熻兘灞炴��
+ *
+ * @param sids
+ * @param callBack
+ */
+ public void getFunctionAttribute(List<String> sids, HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().getFunctionAttribute(sids, callBack);
+ }
+
+ /**
+ * 璁惧鎺у埗
+ *
+ * @param request 鎺у埗鐘舵�佸弬鏁�
+ * @param callBack 缁撴灉鍥炶皟
+ */
+ public void propertyDown(List<DeviceControlRequest> request, HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().propertyDown(request, callBack);
+ }
+
+ /**
+ * 璇诲彇鐘舵��
+ *
+ * @param sids 璇锋眰鍙傛暟 鎸囧畾璇诲彇鐨勮澶噑id鍒楄〃
+ * @param callBack 鍥炶皟
+ */
+ public void propertyRead(List<String> sids, HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().propertyRead(sids, callBack);
+ }
+
+ /**
+ * 鑾峰彇鍦烘櫙鍒楄〃
+ */
+ public void getSceneList(HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().getSceneList(callBack);
+ }
+
+ /**
+ * 鍦烘櫙璇︽儏
+ *
+ * @param sids 鍦烘櫙sid鍒楄〃
+ * @param callBack 鍥炶皟
+ */
+ public void getScene(List<String> sids, HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().getScene(sids, callBack);
+ }
+
+ /**
+ * 鍦烘櫙鎺у埗
+ *
+ * @param sids 鍦烘櫙sid鍒楄〃
+ * @param callBack 鍥炶皟
+ */
+ public void controlScene(List<String> sids, HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().controlScene(sids, callBack);
+ }
+
+ /**
+ * 涓婃姤oid鍒楄〃
+ *
+ * @param request 璁惧淇℃伅
+ * @param callBack 鍥炶皟
+ */
+ public void UploadOidList(ListUploadRequest request, HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().UploadOidList(request, callBack);
+ }
+
+ /**
+ * 涓婃姤sid鍒楄〃
+ *
+ * @param requestList sid鍒楄〃
+ * @param callBack 鍥炶皟
+ */
+ public void UploadSidList(List<ListSidRequest> requestList, HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().UploadSidList(requestList, callBack);
+ }
+
+ /**
+ * 閫氱敤UDP鍙戦�佹寚浠�
+ * 1绉掓病鍝嶅簲灏辫浠栭噸鏂板彂閫�,閲嶈瘯3娆�
+ *
+ * @param topic 鍙戦�佹暟鎹�
+ * @param bodyStr body鍐呭
+ * @param callBack 鍥炶皟
+ */
+ public void udpSendMsg(String topic, String bodyStr, HDLLinkResponseCallBack callBack) {
+ HDLAuthSocket.getInstance().udpSendMsg(topic, bodyStr, false, callBack);
+ }
+
+ /**
+ * 閫氱敤骞挎挱UDP鍙戦�佹寚浠�
+ * 1绉掓病鍝嶅簲灏辫浠栭噸鏂板彂閫�,閲嶈瘯3娆�
+ *
+ * @param topic 鍙戦�佹暟鎹�
+ * @param bodyStr body鍐呭
+ * @param callBack 鍥炶皟
+ */
+ public void udpBroadcastSendMsg(String topic, String bodyStr, HDLLinkResponseCallBack callBack) {
+ HDLAuthSocket.getInstance().udpSendMsg(topic, bodyStr, true, callBack);
+ }
+
+ /**
+ * 閫氱敤TCP鍙戦�佹寚浠�
+ * 1绉掓病鍝嶅簲灏辫浠栭噸鏂板彂閫�,閲嶈瘯3娆�
+ *
+ * @param topic 鍙戦�佹暟鎹�
+ * @param bodyStr body鍐呭
+ * @param callBack 鍥炶皟
+ */
+ public void tcpSendMsg(String topic, String bodyStr, HDLLinkCallBack callBack) {
+ HDLAuthSocket.getInstance();//閫氳繃杩欎釜鍙互鍏堝垵濮嬪寲UDP鐩戝惉浜嬩欢
+ HDLSocket.getInstance().tcpSendMsg(topic, bodyStr, callBack);
+ }
+
+ /**
+ * 閫氱敤鍙戦�佹寚浠� 鍙彂涓�娆★紝涓嶇洃鍚洖澶嶏紝涓嶉噸鍙�
+ *
+ * @param topic 鍙戦�佹暟鎹�
+ * @param bodyStr 鍥炲鐨勪富棰�
+ */
+ public void udpSendMsg(String topic, String bodyStr) {
+ HDLAuthSocket.getInstance().udpSendMsg(topic, bodyStr, false);
+ }
+
+ /**
+ * 閫氱敤骞挎挱鍙戦�佹寚浠� 鍙彂涓�娆★紝涓嶇洃鍚洖澶嶏紝涓嶉噸鍙�
+ *
+ * @param topic 鍙戦�佹暟鎹�
+ * @param bodyStr 鍥炲鐨勪富棰�
+ */
+ public void udpBroadcastSendMsg(String topic, String bodyStr) {
+ HDLAuthSocket.getInstance().udpSendMsg(topic, bodyStr, true);
+ }
+
+ /**
+ * 閫氱敤TCP鍙戦�佹寚浠� 鍙彂涓�娆★紝涓嶇洃鍚洖澶嶏紝涓嶉噸鍙�
+ *
+ * @param topic 鍙戦�佹暟鎹�
+ * @param bodyStr 鍥炲鐨勪富棰�
+ */
+ public void tcpSendMsg(String topic, String bodyStr) {
+ HDLAuthSocket.getInstance();//閫氳繃杩欎釜鍙互鍏堝垵濮嬪寲UDP鐩戝惉浜嬩欢
+ HDLSocket.getInstance().tcpSendMsg(topic, bodyStr);
+ }
}
--
Gitblit v1.8.0