From 755e2893c12b79649ee12dec2b7d832d58b9265b Mon Sep 17 00:00:00 2001
From: 562935844@qq.com
Date: 星期三, 18 十月 2023 16:19:26 +0800
Subject: [PATCH] 上报oid列表新增parentoid
---
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayInfoRequest.java | 10
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java | 28 +
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/NetworkAccessBroadcastResponse.java | 13
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java | 333 +++++++----
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java | 120 ++++
HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java | 259 ++++++--
HDLSDK/com.hdl.sdk/.DS_Store | 0
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayRemoteEditRequest.java | 49 +
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/AuthenticateResponse.java | 14
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java | 15
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/AttributesRequest.java | 37 +
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java | 62 +-
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java | 2
HDLSDK_DEMO/app/build.gradle | 3
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/HDLSdk.java | 19
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/socket/client/UdpClient.java | 24
HDLSDK_DEMO/app/libs/com.hdl.sdk-v1.1.6.aar | 0
HDLSDK/.idea/gradle.xml | 2
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListUploadRequest.java | 9
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java | 196 +++++++
/dev/null | 0
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListSidRequest.java | 107 +++
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java | 2
HDLSDK/com.hdl.sdk/build.gradle | 4
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java | 17
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceInfoResponse.java | 2
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/ByteBufferUtils.java | 37 +
HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java | 207 ++++---
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/BaseRequest.java | 30 +
29 files changed, 1,261 insertions(+), 340 deletions(-)
diff --git a/HDLSDK/.idea/gradle.xml b/HDLSDK/.idea/gradle.xml
index 92c877d..059ae1c 100644
--- a/HDLSDK/.idea/gradle.xml
+++ b/HDLSDK/.idea/gradle.xml
@@ -7,7 +7,7 @@
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
- <option name="gradleJvm" value="JDK" />
+ <option name="gradleJvm" value="Embedded JDK" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
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 9764b67..c73aa4c 100644
--- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
+++ b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -5,7 +5,6 @@
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
-import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
@@ -18,7 +17,6 @@
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -31,15 +29,19 @@
import com.hdl.sdk.common.event.DeleteNetworkListener;
import com.hdl.sdk.common.event.EventListener;
import com.hdl.sdk.common.exception.HDLLinkException;
+import com.hdl.sdk.common.utils.AllTopicManagerUtils;
import com.hdl.sdk.common.utils.IdUtils;
import com.hdl.sdk.common.utils.LogUtils;
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.AttributesRequest;
import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
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.bean.response.BaseLocalResponse;
+import com.hdl.sdk.connect.bean.response.DeviceInfoResponse;
import com.hdl.sdk.connect.bean.response.GatewaySearchBean;
import com.hdl.sdk.connect.callback.HDLLinkCallBack;
import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
@@ -66,30 +68,6 @@
private EventListener allTopicsListener;
private String testLightSid = "02010131D9C03D01020300010107";
private String secret = "";
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- removeAllTopicsListener();
- }
-
- void initDeviceInfo() {
- AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = new AuthenticateRequest.AuthenticateDeviceInfoBean();
- infoBean.setDeviceMAC("f2c5d8bad48f");
- infoBean.setIPMAC("f2c5d8bad48f");
- infoBean.setDeviceName("闊充箰鎾斁鍣�");//璁惧鍚嶅瓧
- infoBean.setDeviceModel("MCLog.431");//璁惧鍨嬪彿
- infoBean.setAccessMode("WIFI");
- infoBean.setIPGateway("192.168.1.1");
- infoBean.setIPAddress("192.168.1.103");
- infoBean.setGateway_type("screen.touch");//spk
- infoBean.setHw_version("HW2.0");
- infoBean.setFw_version("Fw1.0");
- infoBean.setOID("010105000000FE11");//姣忎釜璁惧oid閮借涓嶄竴鏍�
- infoBean.setSid("110105000000FE08110100000011");//姣忎釜璁惧鐨剆id閮借涓嶄竴鏍�
- infoBean.setSupplier("JINMAOYUN");
- HDLLinkConfig.getInstance().setDeviceInfoBean(infoBean);
- }
/*void applyDeviceSecret() {
tv.setText("寮�濮嬬敵璇疯澶囧瘑閽�...");
@@ -159,65 +137,6 @@
}*/
- /**
- * 鍏ョ綉璁よ瘉
- */
- void sendAuthenticateRequest() {
- tv.setText("寮�濮嬪叆缃戣璇�...");
- responseTv.setText("");
- //璁よ瘉鎻愪氦鍙傛暟鍑嗗
-//
-// //娴嬭瘯鏈嶅姟鍣�
-// String spkStr = "music.standard";//浜у搧spk
-// String macStr = "AA000000000000AF";//璁惧鍞竴MAC鍦板潃
-// String secret = "44b360eb74b7ba64";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
-
-// 姝e紡鏈嶅姟鍣�
- String spkStr = "screen.touch";//浜у搧spk
-// String macStr = "AA00000000000100";//璁惧鍞竴MAC鍦板潃
- String macStr = editText.getText().toString();//璁惧鍞竴MAC鍦板潃
-// String secret = "e186beeb7974998e";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
-
- String mac_key = stringToMD5(stringToMD5(macStr + secret));
- String versionString = "HDL_V1.0.1";//
- String time = String.valueOf(System.currentTimeMillis());
- HDLLinkConfig.getInstance().getDeviceInfoBean().setDeviceMAC(macStr);
-// HDLLinkConfig.getInstance().setCurrentGateway(infoBean);
-
- //1.璁剧疆璁よ瘉淇℃伅
- AuthenticateRequest.RequestBean requestBean = new AuthenticateRequest.RequestBean();
- requestBean.setMAC(macStr);
- requestBean.setSupplier("JINMAOYUN");
- requestBean.setFirmwareVersion(versionString);
- requestBean.setHardwareModel("1956F");
-// HDLLinkConfig.getInstance().setRequestBean(requestBean);
-
- AuthenticateRequest.AuthBean authbean = new AuthenticateRequest.AuthBean();
- authbean.setSpk(spkStr);
- authbean.setMACKey(mac_key);
- authbean.setRequest(requestBean);
- HDLLinkConfig.getInstance().setAuthBean(authbean);
-
- //HDLLinkConfig.getInstance().getDeviceInfoBean()杩欎釜鍒濆鍖栫殑鏃跺�欒鍏堣缃ソ
- AuthenticateRequest request = new AuthenticateRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), authbean);
- HDLLink.getInstance().startAuthenticateRequest(request, new HDLLinkCallBack() {
- @Override
- public void onError(HDLLinkException e) {
- tv.setText("璁よ瘉澶辫触" + e.getCode());
- responseTv.setText(e.getMsg());
- Log.e(TAG, "onError: 璁よ瘉澶辫触 " + e.getCode());
- }
-
- @RequiresApi(api = Build.VERSION_CODES.O)
- @Override
- public void onSuccess(String msg) {
- tv.setText("璁よ瘉鎴愬姛");
- responseTv.setText(msg.toString());
- localSecret.setText("瀵嗛挜锛�" + HDLLinkConfig.getInstance().getLocalSecret());
- }
- });
- }
-
public void UploadDeviceAuth(String mac, String result, String message, String auth_code) {
//灏嗚璇佺粨鏋滀笂鎶ョ粰缃戝叧
HDLLink.getInstance().UploadDeviceAuth(mac, result, message, auth_code, new HDLLinkCallBack() {
@@ -263,6 +182,8 @@
LogUtils.i("setDeleteNetworkListener onFailure");
}
});
+
+ UploadSidList();
ActivityResultLauncher<String[]> launcher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback<Map<String, Boolean>>() {
@Override
@@ -456,6 +377,75 @@
HDLLink.getInstance().removeAllTopicsListener(allTopicsListener);
}
+ void initDeviceInfo()
+ {
+ AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = new AuthenticateRequest.AuthenticateDeviceInfoBean();
+ infoBean.setDeviceMAC("f2c5d8bad48f");
+ infoBean.setIPMAC("f2c5d8bad48f");
+ infoBean.setDeviceName("榄旈暅");//璁惧鍚嶅瓧
+ infoBean.setDeviceModel("HDLSDK");//璁惧鍨嬪彿
+ infoBean.setAccessMode("WIFI");
+ infoBean.setIPGateway("192.168.1.1");
+ infoBean.setIPAddress("192.168.1.116");
+ infoBean.setGateway_type("screen.touch");
+ infoBean.setHw_version("HW2.0");
+ infoBean.setFw_version("Fw1.0");
+ infoBean.setOID("010105000000FE11");//姣忎釜璁惧oid閮借涓嶄竴鏍�
+ infoBean.setSid("110105000000FE08110100000011");//姣忎釜璁惧鐨剆id閮借涓嶄竴鏍�
+ infoBean.setSupplier("JINMAOYUN");
+ HDLLinkConfig.getInstance().setDeviceInfoBean(infoBean);
+
+ }
+
+ /**
+ * 鍏ョ綉璁よ瘉
+ */
+ void sendAuthenticateRequest() {
+ tv.setText("寮�濮嬪叆缃戣璇�...");
+ //璁よ瘉鎻愪氦鍙傛暟鍑嗗
+
+// 娴嬭瘯鏈嶅姟
+// String spkStr = "ir.module";//浜у搧spk
+// String macStr = "AA000000000000AF";//璁惧鍞竴MAC鍦板潃
+// String secret = "44b360eb74b7ba64";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
+
+// 姝e紡鏈嶅姟鍣�
+ String spkStr = "screen.mirror";//浜у搧spk
+ String macStr = "f2c5d8bad48f";//璁惧鍞竴MAC鍦板潃
+// String secret = "e186beeb7974998e";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
+
+ String mac_key = stringToMD5(stringToMD5(macStr + secret));
+ String versionString = "HDL_V1.0.1";//
+ String time = String.valueOf(System.currentTimeMillis());
+ HDLLinkConfig.getInstance().getDeviceInfoBean().setDeviceMAC(macStr);
+
+ //1.璁剧疆璁よ瘉淇℃伅
+ AuthenticateRequest.RequestBean requestBean = new AuthenticateRequest.RequestBean();
+ requestBean.setMAC(macStr);
+ requestBean.setSupplier("JINMAOYUN");
+ requestBean.setFirmwareVersion(versionString);
+ requestBean.setHardwareModel("1956F");
+ AuthenticateRequest.AuthBean authbean = new AuthenticateRequest.AuthBean();
+ authbean.setSpk(spkStr);
+ authbean.setMACKey(mac_key);
+ authbean.setRequest(requestBean);
+ //HDLLinkConfig.getInstance().getDeviceInfoBean()杩欎釜鍒濆鍖栫殑鏃跺�欒鍏堣缃ソ
+ AuthenticateRequest request = new AuthenticateRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), authbean);
+ HDLLink.getInstance().startAuthenticateRequest(request, new HDLLinkCallBack() {
+ @Override
+ public void onError(HDLLinkException e) {
+ tv.setText("璁よ瘉澶辫触");
+ responseTv.setText(e.getMsg());
+ Log.i("TAG", "onError: 璁よ瘉澶辫触");
+ }
+
+ @Override
+ public void onSuccess(String msg) {
+ tv.setText("璁よ瘉鎴愬姛");
+ responseTv.setText(msg.toString());
+ }
+ });
+ }
String stringToMD5(String text) {
byte[] hash;
@@ -818,6 +808,47 @@
});
}
+ private void UploadSidList() {
+ tv.setText("涓婃姤Sid鍒楄〃...");
+ responseTv.setText("");
+
+ //1.璁剧疆璁惧淇℃伅
+ AuthenticateRequest.AuthenticateDeviceInfoBean authenticateDeviceInfoBean = HDLLinkConfig.getInstance().getDeviceInfoBean();
+
+ ListSidRequest request = new ListSidRequest();
+ request.setOid(authenticateDeviceInfoBean.getOID());
+ request.setName("sid鍚嶇О");
+ request.setOmodel(authenticateDeviceInfoBean.getDeviceModel());
+ request.setSid("12345678");//褰撳墠sid鐨�
+ request.setSpk("light.switch");//褰撳墠spk鍚嶇О锛屾牴鎹疄闄呰澶囨潵瀹氫箟
+ request.setFrom(authenticateDeviceInfoBean.getOID());//鏉ヨ嚜鍝釜缃戝叧锛屽鏋滄椂Link缃戠粶璁惧锛屽垯濉嚜韬玱id锛涘鏋滄槸椹卞姩鍒欎笉闇�瑕佹瀛楁
+
+ AttributesRequest attributes = new AttributesRequest();
+ attributes.setKey("on_off");
+ attributes.setData_type("string");
+ List<Object> valueList=new ArrayList<>();
+ valueList.add("on");
+ valueList.add("off");
+ attributes.setValue(valueList);
+ //娣诲姞鏀寔鐨勫睘鎬у垪琛�
+ List<AttributesRequest> attributesList = new ArrayList<>();
+ request.setAttributes(attributesList);
+ List<ListSidRequest> sidRequestList = new ArrayList<>();
+ sidRequestList.add(request);
+ HDLLink.getInstance().UploadSidList(sidRequestList, new HDLLinkCallBack() {
+ @Override
+ public void onError(HDLLinkException error) {
+ tv.setText(error.getMsg());
+ }
+
+ @Override
+ public void onSuccess(String data) {
+ tv.setText("涓婃姤sid鍒楄〃鎴愬姛");
+ responseTv.setText(data);
+ }
+ });
+ }
+
/**
* 鑾峰彇APP鐗堟湰
*
@@ -839,4 +870,10 @@
return versionName;
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ removeAllTopicsListener();
+ }
+
}
\ No newline at end of file
diff --git a/HDLSDK/com.hdl.sdk/.DS_Store b/HDLSDK/com.hdl.sdk/.DS_Store
new file mode 100644
index 0000000..47c4fb9
--- /dev/null
+++ b/HDLSDK/com.hdl.sdk/.DS_Store
Binary files differ
diff --git a/HDLSDK/com.hdl.sdk/build.gradle b/HDLSDK/com.hdl.sdk/build.gradle
index e85618c..ac57b55 100644
--- a/HDLSDK/com.hdl.sdk/build.gradle
+++ b/HDLSDK/com.hdl.sdk/build.gradle
@@ -8,8 +8,8 @@
defaultConfig {
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
- versionCode 6
- versionName "1.1.4"
+ versionCode 117
+ versionName "1.1.7"
}
buildTypes {
debug {
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/HDLSdk.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/HDLSdk.java
index 1db547c..05fc32a 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/HDLSdk.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/HDLSdk.java
@@ -1,10 +1,13 @@
package com.hdl.sdk.common;
import android.content.Context;
+import android.text.TextUtils;
import android.util.Log;
import com.hdl.sdk.common.config.TopicConstant;
+import com.hdl.sdk.common.event.EventListener;
import com.hdl.sdk.common.exception.HDLLinkException;
+import com.hdl.sdk.common.utils.AllTopicManagerUtils;
import com.hdl.sdk.common.utils.IdUtils;
import com.hdl.sdk.common.utils.LogUtils;
import com.hdl.sdk.common.utils.gson.GsonConvert;
@@ -32,7 +35,7 @@
return version;
}
- private String version = "1.1.0";
+ private String version = "1.1.7";
private HDLSdk() {
}
@@ -46,10 +49,24 @@
}
public void init(Context context) {
+ if (this.context != null) {
+ return;
+ }
this.context = context.getApplicationContext();
HDLAuthSocket.getInstance().init();
HDLSocket.getInstance().broadcastRequest();
LogUtils.i("HDLSdk Version:" + version);
+
+ //璁㈤槄鎵�鏈夌殑涓婚
+ HDLLink.getInstance().registerAllTopicsListener(new EventListener() {
+ @Override
+ public void onMessage(Object msg) {
+ if (msg == null || !(msg instanceof LinkResponse)) {
+ return;
+ }
+ AllTopicManagerUtils.manager((LinkResponse) msg);
+ }
+ });
}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java
index 4ad39ac..dd52c06 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java
@@ -121,5 +121,22 @@
//椹卞姩涓婃姤oid鍒楄〃鍥炲
public static final String LIST_UPLOAD_REPLY = "/user/%s/custom/device/list/upload_reply";
+ /**
+ * sid鍒楄〃涓婃姤
+ */
+ public static final String LIST_SID_UPLOAD="/base/%s/thing/topo/list/upload";
+ /**
+ * sid鍒楄〃涓婃姤鍥炲
+ */
+ public static final String LIST_SID_UPLOAD_REPLY="/base/%s/thing/topo/list/upload_reply";
+
+ /*
+ * 缃戝叧缂栬緫鍛戒护
+ * 鍐欒繙绋嬩俊鎭殑锛屼緥濡傛湇鍔″櫒鍦板潃銆丠omeId銆佸瘑閽ヤ箣绫�
+ * 涓庢湇鍔″櫒鐩稿叧鐨�
+ * */
+ public static final String GATEWAY_EDIT_REMOTE = "/user/%s/custom/gateway/remote/edit";
+
+ public static final String GATEWAY_EDIT_REMOTE_REPLY = "/user/%s/custom/gateway/remote/edit_reply";
}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
new file mode 100644
index 0000000..1908d0a
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
@@ -0,0 +1,196 @@
+package com.hdl.sdk.common.utils;
+
+import android.text.TextUtils;
+import android.util.Base64;
+import android.util.Log;
+
+import com.google.gson.reflect.TypeToken;
+import com.hdl.sdk.common.config.TopicConstant;
+import com.hdl.sdk.common.exception.HDLLinkException;
+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.GatewayRemoteEditRequest;
+import com.hdl.sdk.connect.bean.response.DeviceDeleteResponse;
+import com.hdl.sdk.connect.bean.response.DeviceInfoResponse;
+import com.hdl.sdk.connect.callback.HDLLinkCallBack;
+import com.hdl.sdk.connect.config.HDLLinkConfig;
+import com.hdl.sdk.connect.socket.HDLAuthSocket;
+import com.hdl.sdk.connect.socket.HDLSocket;
+import com.hdl.sdk.connect.utils.AesUtil;
+
+/**
+ * Created by hxb on 2023/9/14.
+ */
+public class AllTopicManagerUtils {
+
+ /**
+ * 鍏ㄥ眬涓婚澶勭悊鏂规硶锛屽彲浠ュ鐞嗘墍鏈夋帴鏀跺埌鐨勬暟鎹�
+ *
+ * @param linkResponse
+ */
+ public static void manager(LinkResponse linkResponse) {
+ try {
+ if (linkResponse == null) {
+ return;
+ }
+ String topic = linkResponse.getTopic();
+ if (TextUtils.isEmpty(topic)) {
+ return;
+ }
+ String[] topics = topic.split("/");
+ //闈炲綋鍓嶄綇瀹呯綉鍏崇殑鏁版嵁杩斿洖
+ if (topics.length < 3) {
+ return;
+ }
+
+ String mac_Oid_GatewayId = topics[2];
+
+ if (!isLocalDevice(mac_Oid_GatewayId)) {
+ LogUtils.i("涓嶆槸褰撳墠璁惧鐨勭綉鍏矷d锛孖d鏄�" + mac_Oid_GatewayId);
+ //闈炲綋鍓嶈澶囩殑鏁版嵁
+ return;
+ }
+
+ if (isSameTopic(TopicConstant.GATEWAY_EDIT_REMOTE, topic)) {
+ gatewayRemoteEditRequest(mac_Oid_GatewayId, linkResponse.getData());
+ } else if (isSameTopic(TopicConstant.GATEWAY_SEARCH, topic)) {
+ HDLAuthSocket.getInstance().UploadGatewayInfo(null);
+ } else if (isSameTopic(TopicConstant.LINK_BROADCAST, topic)) {
+ managerLinkBroadcast(linkResponse.getData());
+ } else if (isSameTopic(TopicConstant.DELETE_NOTIFY, topic)) {
+ managerDeleteNofity(linkResponse.getData());
+ }
+
+ } catch (Exception e) {
+ LogUtils.e("鍏ㄥ眬澶勭悊妯″潡寮傚父锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 鏄惁褰撳墠鐨勮澶�
+ *
+ * @param mac_Oid_GatewayId
+ * @return
+ */
+ private static boolean isLocalDevice(String mac_Oid_GatewayId) {
+ if (TextUtils.isEmpty(mac_Oid_GatewayId)) {
+ return false;
+ }
+ String mac = HDLLinkConfig.getInstance().getDeviceInfoBean().getDeviceMAC();
+ String oid = HDLLinkConfig.getInstance().getDeviceInfoBean().getOID();
+ String gatewayId = HDLLinkConfig.getInstance().getGatewayId();
+ String all = "all";
+
+ return mac_Oid_GatewayId.equals(mac) || mac_Oid_GatewayId.equals(oid) || mac_Oid_GatewayId.equals(gatewayId) || mac_Oid_GatewayId.toLowerCase().equals(all);
+ }
+
+ /**
+ * 鏄惁鐩稿悓涓婚
+ *
+ * @param targetTopic 鐩爣鐨勪富棰�
+ * @param sourceTopic 鎺ユ敹鐨勪富棰�
+ * @return
+ */
+ private static boolean isSameTopic(String targetTopic, String sourceTopic) {
+ if (TextUtils.isEmpty(targetTopic) || TextUtils.isEmpty(sourceTopic)) {
+ return false;
+ }
+ String[] targetTopics = targetTopic.split("/");
+ String[] sourceTopics = sourceTopic.split("/");
+
+ if (targetTopics.length != sourceTopics.length) {
+ return false;
+ }
+ for (int i = 0; i < targetTopics.length; i++) {
+ if (i == 2) {
+ //杩欎釜浣嶇疆涓嶅尮閰嶏紝鏄綉鍏砳d
+ continue;
+ }
+ if (!targetTopics[i].equals(sourceTopics[i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * 缃戝叧淇℃伅閰嶇疆
+ *
+ * @param body
+ */
+ private static void gatewayRemoteEditRequest(String mac_Oid_GatewayId, String body) {
+ if (TextUtils.isEmpty(body)) {
+ return;
+ }
+ GatewayRemoteEditRequest gatewayRemoteEditRequest = GsonConvert.getGson().fromJson(body, new TypeToken<GatewayRemoteEditRequest>() {
+ }.getType());
+
+ if (gatewayRemoteEditRequest == null || gatewayRemoteEditRequest.getObjects() == null) {
+ return;
+ }
+
+ String homeId = gatewayRemoteEditRequest.getObjects().getHomeId();
+ HDLLinkConfig.getInstance().setHomeId(homeId);
+
+ HDLSocket.getInstance().gatewayRemoteEditReply(mac_Oid_GatewayId, gatewayRemoteEditRequest.getId(), null);
+ }
+
+ /**
+ * 鏇存柊瀵嗛挜
+ *
+ * @param body
+ */
+ private static void managerLinkBroadcast(String body) {
+ try {
+ DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(body, new TypeToken<DeviceInfoResponse>() {
+ }.getType());
+
+ if (deviceInfoResponse == null || deviceInfoResponse.getObjects() == null) {
+ return;
+ }
+ if (!TextUtils.isEmpty(deviceInfoResponse.getObjects().getLocalSecret())) {
+ byte[] baseBytes = Base64.decode(deviceInfoResponse.getObjects().getLocalSecret(), Base64.NO_WRAP);
+ String mackey = "";
+ if (!TextUtils.isEmpty(SPUtils.getString("auth_mackey_key", ""))) {
+ mackey = SPUtils.getString("auth_mackey_key", "");
+ byte[] bodyBytes = AesUtil.aesDecrypt(baseBytes, mackey.substring(mackey.length() - 16));
+ String localSecret = new String(bodyBytes, "utf-8");
+ Log.d("panlili", "鏇存柊瀵嗛挜----->localSecret= " + localSecret);
+ HDLLinkConfig.getInstance().setLocalSecret(localSecret);
+ }
+ }
+ } catch (Exception e) {
+ LogUtils.i("LinkMessageDecoder.java:getLocalSecret----->e= " + e.getMessage());
+ }
+ }
+
+ /**
+ * 閫�缃�
+ *
+ * @param body
+ */
+ private static void managerDeleteNofity(String body) {
+ try {
+ DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(body, new TypeToken<DeviceDeleteResponse>() {
+ }.getType());
+
+ if (deviceDeleteResponse == null || deviceDeleteResponse.getObjects() == null) {
+ return;
+ }
+ HDLSocket.getInstance().deleteNetwork(deviceDeleteResponse.getObjects().get(0).getOID(), new HDLLinkCallBack() {
+ @Override
+ public void onSuccess(String msg) {
+
+ }
+
+ @Override
+ public void onError(HDLLinkException e) {
+
+ }
+ });
+ } catch (Exception e) {
+ LogUtils.i("LinkMessageDecoder.java:deleteNetwork----->e= " + e.getMessage());
+ }
+ }
+}
\ No newline at end of file
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 c39638c..e7a0790 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
@@ -6,6 +6,7 @@
import com.hdl.sdk.common.utils.LogUtils;
import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
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;
@@ -102,6 +103,10 @@
public void selectNetwork(String networkName) {
HDLLinkConfig.getInstance().setNetworkName(networkName);
+ }
+
+ public void setParentOid(String parentOid) {
+ HDLLinkConfig.getInstance().setParentOid(parentOid);
}
/**
@@ -306,6 +311,16 @@
}
/**
+ * 涓婃姤sid鍒楄〃
+ *
+ * @param requestList sid鍒楄〃
+ * @param callBack 鍥炶皟
+ */
+ public void UploadSidList(List<ListSidRequest> requestList, HDLLinkCallBack callBack) {
+ HDLSocket.getInstance().UploadSidList(requestList, callBack);
+ }
+
+ /**
* 閫氱敤UDP鍙戦�佹寚浠�
* 1绉掓病鍝嶅簲灏辫浠栭噸鏂板彂閫�,閲嶈瘯3娆�
*
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/AttributesRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/AttributesRequest.java
new file mode 100644
index 0000000..9dbf607
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/AttributesRequest.java
@@ -0,0 +1,37 @@
+package com.hdl.sdk.connect.bean.request;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Created by hxb on 2023/9/14.
+ */
+public class AttributesRequest implements Serializable {
+ private String key;//key鍚嶇О
+ private String data_type;//鏁版嵁绫诲瀷
+ private List<Object> value;//鍊�
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getData_type() {
+ return data_type;
+ }
+
+ public void setData_type(String data_type) {
+ this.data_type = data_type;
+ }
+
+ public List<Object> getValue() {
+ return value;
+ }
+
+ public void setValue(List<Object> value) {
+ this.value = value;
+ }
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/BaseRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/BaseRequest.java
new file mode 100644
index 0000000..5bebfcc
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/BaseRequest.java
@@ -0,0 +1,30 @@
+package com.hdl.sdk.connect.bean.request;
+
+import java.io.Serializable;
+
+/**
+ * Created by jlchen on 11/15/21.
+ *
+ * @Description : BaseResponse
+ */
+public class BaseRequest implements Serializable {
+
+ private String id;
+ private String time_stamp;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTime_stamp() {
+ return time_stamp;
+ }
+
+ public void setTime_stamp(String time_stamp) {
+ this.time_stamp = time_stamp;
+ }
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayInfoRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayInfoRequest.java
index c750cc2..aa64270 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayInfoRequest.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayInfoRequest.java
@@ -23,6 +23,8 @@
private String master;
private boolean isLocalEncrypt;
+ private String homeId;
+
public String getOid() {
return oid;
}
@@ -126,4 +128,12 @@
public void setLocalEncrypt(boolean localEncrypt) {
isLocalEncrypt = localEncrypt;
}
+
+ public String getHomeId() {
+ return homeId;
+ }
+
+ public void setHomeId(String homeId) {
+ this.homeId = homeId;
+ }
}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayRemoteEditRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayRemoteEditRequest.java
new file mode 100644
index 0000000..54681ba
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/GatewayRemoteEditRequest.java
@@ -0,0 +1,49 @@
+package com.hdl.sdk.connect.bean.request;
+
+
+import java.io.Serializable;
+
+/**
+ * Created by hxb on 2023/9/14.
+ */
+public class GatewayRemoteEditRequest extends BaseRequest {
+ private GatewayObjects objects;
+
+ public GatewayObjects getObjects() {
+ return objects;
+ }
+
+ public void setObjects(GatewayObjects value) {
+ this.objects = value;
+ }
+
+ public static class GatewayObjects implements Serializable {
+
+ /**
+ * 浣忓畢Id
+ */
+ private String homeId;
+ /**
+ * 鏈嶅姟鍣ㄥ湴鍧�
+ */
+ private String server_addr;
+
+ public String getHomeId() {
+ return homeId;
+ }
+
+ public void setHomeId(String homeId) {
+ this.homeId = homeId;
+ }
+
+ public String getServer_addr() {
+ return server_addr;
+ }
+
+ public void setServer_addr(String server_addr) {
+ this.server_addr = server_addr;
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListSidRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListSidRequest.java
new file mode 100644
index 0000000..dad2ac4
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListSidRequest.java
@@ -0,0 +1,107 @@
+package com.hdl.sdk.connect.bean.request;
+
+import java.util.List;
+
+/**
+ * Created by panlili on 2023/1/31
+ * description:鑾峰彇sid鍒楄〃
+ */
+public class ListSidRequest {
+
+ /**
+ * 鏄惁鍦ㄧ嚎
+ */
+ private String online;
+ /**
+ * 鐖秓id
+ */
+ private String from;
+ /**
+ * 鏀寔鐨勫睘鎬у垪琛�
+ */
+ private List<AttributesRequest> attributes;
+ /**
+ * sid
+ */
+ private String sid;
+ /**
+ * spk
+ */
+ private String spk;
+ /**
+ * 褰撳墠oid
+ */
+ private String oid;//璁惧鐨凮id
+ /**
+ * 鍥炶矾澶囨敞
+ */
+ private String name;
+ /**
+ * 妯″潡淇℃伅
+ */
+ private String omodel;
+
+ public String getOid() {
+ return oid;
+ }
+
+ public void setOid(String oid) {
+ this.oid = oid;
+ }
+
+ public String getOnline() {
+ return online;
+ }
+
+ public void setOnline(String online) {
+ this.online = online;
+ }
+
+ public String getFrom() {
+ return from;
+ }
+
+ public void setFrom(String from) {
+ this.from = from;
+ }
+
+ public List<AttributesRequest> getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(List<AttributesRequest> attributes) {
+ this.attributes = attributes;
+ }
+
+ public String getSid() {
+ return sid;
+ }
+
+ public void setSid(String sid) {
+ this.sid = sid;
+ }
+
+ public String getSpk() {
+ return spk;
+ }
+
+ public void setSpk(String spk) {
+ this.spk = spk;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getOmodel() {
+ return omodel;
+ }
+
+ public void setOmodel(String omodel) {
+ this.omodel = omodel;
+ }
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListUploadRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListUploadRequest.java
index 03e78a2..cf83e88 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListUploadRequest.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListUploadRequest.java
@@ -18,6 +18,7 @@
private String src;//鏉ヨ嚜鍝釜椹卞姩锛屽Link璁惧娌℃湁鍒欏~"LINK"
private String from;//鏉ヨ嚜鍝釜缃戝叧锛屽鏋滄椂Link缃戠粶璁惧锛屽垯濉嚜韬玱id锛涘鏋滄槸椹卞姩鍒欎笉闇�瑕佹瀛楁
private List<ImageInfo> image_info;
+ private String parentOid;//浠庢満闇�瑕佷笂鎶arentoid锛屽唴瀹逛负涓绘満鐨刼id
public String getOid() {
return oid;
@@ -83,6 +84,14 @@
this.from = from;
}
+ public String getParentOid() {
+ return parentOid;
+ }
+
+ public void setParentOid(String parentOid) {
+ this.parentOid = parentOid;
+ }
+
public List<ImageInfo> getImage_info() {
return image_info;
}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/AuthenticateResponse.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/AuthenticateResponse.java
index 1efcb5d..3c8e3f3 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/AuthenticateResponse.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/AuthenticateResponse.java
@@ -32,7 +32,7 @@
this.ip_address = ip_address;
}
- public class Auth implements Serializable {
+ public static class Auth implements Serializable {
private String localSecret;
public String getLocalSecret() { return localSecret; }
@@ -42,10 +42,12 @@
}
- public class GatewayObjects implements Serializable {
+ public static class GatewayObjects implements Serializable {
private String ip_address;
private String gatewayId;
private String oid;
+
+ private String homeId;
public String getIPAddress() { return ip_address; }
public void setIPAddress(String value) {
@@ -59,6 +61,14 @@
public String getOID() { return oid; }
public void setOID(String value) { this.oid = value; }
+
+ public String getHomeId() {
+ return homeId;
+ }
+
+ public void setHomeId(String homeId) {
+ this.homeId = homeId;
+ }
}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java
index 1e9d43c..53f5385 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java
@@ -19,7 +19,7 @@
this.objects = objects;
}
- public class GatewayObjects implements Serializable {
+ public static class GatewayObjects implements Serializable {
private String device_name;
private String oid;
private boolean isSaveOidInfo;
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceInfoResponse.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceInfoResponse.java
index a819363..00349bd 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceInfoResponse.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceInfoResponse.java
@@ -18,7 +18,7 @@
this.objects = value;
}
- public class GatewayObjects implements Serializable {
+ public static class GatewayObjects implements Serializable {
private String ip_address;
private String gatewayId;
private String oid;
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/NetworkAccessBroadcastResponse.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/NetworkAccessBroadcastResponse.java
index 8478008..d2faf10 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/NetworkAccessBroadcastResponse.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/NetworkAccessBroadcastResponse.java
@@ -10,6 +10,11 @@
private String oid;
private String homeId;
+ /**
+ * 闇�瑕佸叆缃戜粠鏈簃ac
+ */
+ private String slave_mac;
+
public String getIPAddress() { return ip_address; }
public void setIPAddress(String value) { this.ip_address = value; }
@@ -18,4 +23,12 @@
public String getHomeID() { return homeId; }
public void setHomeID(String value) { this.homeId = value; }
+
+ public String getSlave_mac() {
+ return slave_mac;
+ }
+
+ public void setSlave_mac(String slave_mac) {
+ this.slave_mac = slave_mac;
+ }
}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java
index 5ccf25d..e1701a7 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java
@@ -21,11 +21,15 @@
private static final String AUTHENTICATE_IS_LS_KEY = "auth_isls_key";
public static final String AUTHENTICATE_IS_DEVICEINFO_KEY = "auth_deviceinfo_key";
+ public static final String GATEWAY_REMOTEINFO_KEY="gateway_remoteinfo_key";
+
private String localSecret;//鏈湴鍔犲瘑瀵嗛挜
private String gatewayId;
private String ipAddress;
private GatewaySearchBean currentGateway;//褰撳墠缃戝叧
private String networkName;
+ private String homeId;
+ private String parentOid;
private AuthenticateRequest.AuthenticateDeviceInfoBean deviceInfoBean;//褰撳墠璁惧鍩烘湰淇℃伅
private AuthenticateRequest.RequestBean requestBean;//褰撳墠璁惧鍩烘湰淇℃伅
@@ -64,10 +68,12 @@
this.gatewayId = "";
this.ipAddress = "";
this.localSecret = "";
+ this.homeId="";
SPUtils.remove(AUTHENTICATE_LS_KEY);
SPUtils.remove(AUTHENTICATE_GATEWAYID_KEY);
SPUtils.remove(AUTHENTICATE_IPADDRESS_KEY);
SPUtils.remove(AUTHENTICATE_IS_LS_KEY);
+ SPUtils.remove(GATEWAY_REMOTEINFO_KEY);
}
/**
@@ -77,6 +83,7 @@
localSecret = SPUtils.getString(AUTHENTICATE_LS_KEY, "");
gatewayId = SPUtils.getString(AUTHENTICATE_GATEWAYID_KEY, "");
ipAddress = SPUtils.getString(AUTHENTICATE_IPADDRESS_KEY, "");
+ homeId = SPUtils.getString(GATEWAY_REMOTEINFO_KEY, "");
}
/**
@@ -93,6 +100,7 @@
SPUtils.put(AUTHENTICATE_LS_KEY, localSecret);
SPUtils.put(AUTHENTICATE_GATEWAYID_KEY, gatewayId);
SPUtils.put(AUTHENTICATE_IPADDRESS_KEY, ipAddress);
+
}
/**
@@ -136,6 +144,14 @@
}
public void setIpAddress(String ipAddress){
this.ipAddress = ipAddress;
+ }
+
+ public String getParentOid() {
+ return parentOid;
+ }
+
+ public void setParentOid(String parentOid) {
+ this.parentOid = parentOid;
}
public String getNetworkName() {
@@ -189,6 +205,9 @@
public AuthenticateRequest.AuthenticateDeviceInfoBean getDeviceInfoBean() {
AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = (AuthenticateRequest.AuthenticateDeviceInfoBean) SPUtils.getSerializableEntity(AUTHENTICATE_IS_DEVICEINFO_KEY);
+ if(infoBean==null){
+ infoBean= new AuthenticateRequest.AuthenticateDeviceInfoBean();
+ }
return infoBean;
}
@@ -212,4 +231,13 @@
public void setAuthBean(AuthenticateRequest.AuthBean authBean) {
this.authBean = authBean;
}
+
+ public String getHomeId() {
+ return homeId;
+ }
+
+ public void setHomeId(String homeId) {
+ this.homeId = homeId;
+ SPUtils.put(GATEWAY_REMOTEINFO_KEY, homeId);
+ }
}
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 debec18..792c128 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
@@ -24,8 +24,11 @@
import com.hdl.sdk.connect.socket.HDLAuthSocket;
import com.hdl.sdk.connect.socket.HDLSocket;
import com.hdl.sdk.connect.utils.AesUtil;
+import com.hdl.sdk.connect.utils.ByteBufferUtils;
import com.hdl.sdk.socket.codec.ByteToMessageDecoder;
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
@@ -38,13 +41,31 @@
*/
public class LinkMessageDecoder extends ByteToMessageDecoder<LinkResponse> {
- private final List<Byte> bytes;
+ private static final String TAG = LinkMessageDecoder.class.getName();
+ //instance
+ private volatile static LinkMessageDecoder instance;
+
+ //getInstance
+ public static synchronized LinkMessageDecoder getInstance() {
+ if (instance == null) {
+ synchronized (LinkMessageDecoder.class) {
+ if (instance == null) {
+ instance = new LinkMessageDecoder();
+ }
+ }
+ }
+ return instance;
+ }
+
+ /**
+ * 鎺ユ敹鏁版嵁缂撳啿鍖�
+ */
+ private final ByteBuffer byteBuffer;
private final byte[] head = "Topic:".getBytes();
-// private final byte[] body = "\r\n\r\n".getBytes();
public LinkMessageDecoder() {
- this.bytes = new ArrayList<>();
+ byteBuffer = ByteBuffer.allocate(1024 * 200);//100K
}
/// <summary>
@@ -53,11 +74,16 @@
/// <param name="topMsgs"></param>
/// <returns></returns>
int getLenght(String[] topMsgs) {
- for (int i = 0; i < topMsgs.length; i++) {
- String topMsg = topMsgs[i].trim();
- if (topMsg.startsWith("Length:")) {
- return Integer.parseInt(topMsg.replace("Length:", ""));
+ try {
+ for (int i = 0; i < topMsgs.length; i++) {
+ String topMsg = topMsgs[i].trim();
+ if (topMsg.startsWith("Length:")) {
+ return Integer.parseInt(topMsg.replace("Length:", "").trim());
+ }
}
+ } catch (Exception e) {
+ LogUtils.e("寮傚父鏁版嵁锛�" + topMsgs[0] + "\r\n" + topMsgs[1]);
+ return -1;
}
//鎵句笉鍒伴暱搴�
return -1;
@@ -82,15 +108,14 @@
/**
* 鑾峰彇鏁版嵁鐨勫紑濮嬩綅缃�
*
- * @param arrayList 鎺ユ敹鍒扮殑鎵�鏈夋暟鎹�
* @return 鏁版嵁浣嶇殑寮�濮嬬储寮�
*/
- int getDataIndex(List<Byte> arrayList) {
+ int getBodyIndex() {
byte r = (byte) '\r';
byte n = (byte) '\n';
- for (int i = 0; i < arrayList.size(); i++) {
+ for (int i = 0; i < byteBuffer.position(); i++) {
//鎵惧嚭鏁版嵁鍐呭鍓嶉潰鐨勪袱涓崲琛�
- if (3 <= i && arrayList.get(i - 3) == r && arrayList.get(i - 2) == n && arrayList.get(i - 1) == r && arrayList.get(i) == n) {
+ if (3 <= i && byteBuffer.get(i - 3) == r && byteBuffer.get(i - 2) == n && byteBuffer.get(i - 1) == r && byteBuffer.get(i) == n) {
//鍓╀綑鐨勬暟鎹�
return i + 1;
}
@@ -98,14 +123,73 @@
return -1;
}
- void initReceiveData(List<Byte> list) {
+ /**
+ * 鑾峰彇澶撮儴鏁版嵁
+ *
+ * @return
+ */
+ String getHeader() {
+ int bodyIndex = getBodyIndex();
+ if (bodyIndex < 0) {
+ //娌℃湁鎵惧埌澶撮儴鏁版嵁
+ return null;
+ } else {
+ byte bodyBytes[] = ByteBufferUtils.copyBytes(byteBuffer, bodyIndex);
+ return new String(bodyBytes);
+ }
+ }
+ /**
+ * 鑾峰彇鏁版嵁鍐呭
+ *
+ * @param lenght
+ * @return
+ */
+ byte[] getBody(int index, int lenght) {
+ //鏄惁宸茬粡鑾峰彇瀹屾暣鎵�鏈夌殑鏁版嵁
+ byte[] bodyBytes = new byte[lenght];
+ if (index < 0 || byteBuffer.position() < index + lenght) {
+ //褰撳墠鏁版嵁杩樻病鏈夋帴鏀跺畬鎴�
+ return null;
+ }
+
+ for (int i = 0; i < bodyBytes.length; i++) {
+ bodyBytes[i] = byteBuffer.get(index + i);
+ }
+ return bodyBytes;
+ }
+
+
+ /**
+ * 杩欒竟澶勭悊浜嗙紦瀛樻暟鎹矘鍖呯殑鎯呭喌锛屾瘡娆¤姹傞兘闇�瑕佸惂褰撳墠瀹屾暣鐨勬枃浠堕櫎鍘� 浠ヤ究浜庝笅娆$殑杩斿洖
+ * tempList鐢ㄤ簬瀛樺偍澶氫綑鐨勬暟鎹�
+ * contentList鐢ㄤ簬鏈鏁版嵁鐨勫瓨鍌紙鍙戦�佺粰璁㈤槄鐨勬暟鎹級
+ */
+ byte[] geBody() {
+ int len = 3 + 4 + 4 + ((byteBuffer.get(7) & 0xFF) * 256 * 256 * 256) + ((byteBuffer.get(8) & 0xFF) * 256 * 256) + ((byteBuffer.get(9) * 256) & 0xFF) + (byteBuffer.get(10) & 0xFf);
+ byte[] bodyBytes = new byte[len];
+ for (int i = 0; i < len; i++) {
+ bodyBytes[i] = byteBuffer.get(i);
+ }
+
+ int endIndex = byteBuffer.position();
+ byteBuffer.clear();
+ for (int i = len; i < endIndex; i++) {
+ byteBuffer.put(byteBuffer.get(i));
+ }
+ return bodyBytes;
+ }
+
+ /**
+ * 绉婚櫎鍙兘瀛樺湪鐨勬棤鏁堟暟鎹�
+ */
+ void removeInVoidBytes() {
int index = 0;
boolean isMatch = false;
- for (; index < list.size() - head.length; index++) {
+ for (; index < byteBuffer.position() - head.length; index++) {
isMatch = true;
for (int j = 0, k = 0; j < head.length; j++, k++) {
- if (head[j] != list.get(index + k)) {
+ if (head[j] != byteBuffer.get(index + k)) {
isMatch = false;
break;
}
@@ -116,159 +200,148 @@
}
if (0 < index && isMatch) {
- List<Byte> tempList = new ArrayList<Byte>();
- for (int i = index; i < list.size(); i++) {
- tempList.add(list.get(i));
- }
-
- list.clear();
- for (int i = 0; i < tempList.size(); i++) {
- list.add(tempList.get(i));
+ int endIndex = byteBuffer.position();
+ byteBuffer.clear();
+ for (int i = index; i < endIndex; i++) {
+ byteBuffer.put(byteBuffer.get(i));
}
}
+ }
+
+ /**
+ * 绉婚櫎鍒版寚瀹氫綅缃墠闈㈢殑鏁版嵁
+ *
+ * @param position 鎸囧畾浣嶇疆
+ */
+ void remove(int position) {
+ int endIndex = byteBuffer.position();
+ byteBuffer.clear();
+ for (int i = position; i < endIndex; i++) {
+ byteBuffer.put(byteBuffer.get(i));
+ }
+ }
+
+
+ int bytes2int(byte[] bytes) {
+ int result = 0;
+ if (bytes.length == 2) {
+ int c = (bytes[0] & 0xff) << 8;
+ int d = (bytes[1] & 0xff);
+ result = c | d;
+ } else if (bytes.length == 4) {
+ return bytes[3] & 0xFF | //
+ (bytes[2] & 0xFF) << 8 | //
+ (bytes[1] & 0xFF) << 16 | //
+ (bytes[0] & 0xFF) << 24; //
+ }
+ return result;
+ }
+
+ public String byte2hex(byte[] bytes) {
+ StringBuilder sb = new StringBuilder();
+ String tmp = null;
+ for (byte b : bytes) {
+ //灏嗘瘡涓瓧鑺備笌0xFF杩涜涓庤繍绠楋紝鐒跺悗杞寲涓�10杩涘埗锛岀劧鍚庡�熷姪浜嶪nteger鍐嶈浆鍖栦负16杩涘埗
+ tmp = Integer.toHexString(0xFF & b);
+ if (tmp.length() == 1) {
+ tmp = "0" + tmp;
+ }
+ sb.append(tmp + " ");
+ }
+ return sb.toString();
}
// @RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected synchronized LinkResponse decoder(Object msg, String ipaddress) throws Exception {
- if (msg instanceof byte[]) {
- bytes.addAll(ByteUtils.toByteList((byte[]) msg));
+ if (msg == null || !(msg instanceof byte[])) {
+ return null;
+ }
+
+ byte[] bytes = (byte[]) msg;
+ try {
+ byteBuffer.put(bytes);
+ } catch (Exception e) {
+ LogUtils.e("鎺ユ敹鍒版暟鎹紓甯�:\r\n" + e.getMessage());
+ byteBuffer.flip();
+ byteBuffer.clear();
+ }
+
+ try {
//濡傛灉澶氭潯鍛戒护鎵撳寘鍦ㄤ竴鏉℃暟鎹腑锛岄兘闇�瑕佸鐞嗗畬
while (true) {
- initReceiveData(bytes);
- byte[] recevieBytes = ByteUtils.toByteArray(bytes);
- String data = new String(recevieBytes);
+ removeInVoidBytes();//绉婚櫎鍙兘瀛樺湪鐨勬棤鏁堟暟鎹�
- String[] topMsgs = data.split("\r\n");
+ //澶撮儴鏁版嵁
+ String header = getHeader();
+
+ if (header == null) {
+ break;
+ }
+ String[] topMsgs = header.split("\r\n");
String topic = getTopic(topMsgs);
- if (topic == null) {
- break;
- }
-
int lenght = getLenght(topMsgs);
-
- if (lenght <= 0) {
- //澶撮儴鏁版嵁杩樻病鏈夋帴鏀跺畬鎴�
+ if (topic == null || lenght <= 0) {
+ //鑾峰彇涓嶅埌涓婚鎴栬�呭ご閮ㄦ暟鎹繕娌℃湁鎺ユ敹瀹屾垚
break;
}
+
+ int bodyIndex = getBodyIndex();
//鏄惁宸茬粡鑾峰彇瀹屾暣鎵�鏈夌殑鏁版嵁
- byte[] body = new byte[lenght];
- int index = getDataIndex(bytes);
- if (bytes.size() < index + lenght) {
+ byte[] body = getBody(bodyIndex, lenght);
+
+ if (body == null) {
//褰撳墠鏁版嵁杩樻病鏈夋帴鏀跺畬鎴�
break;
}
- //澶嶅埗鍑篵ody鏁版嵁
- System.arraycopy(recevieBytes, index, body, 0, body.length);
- //淇濈暀鍓╀綑鐨勬暟鎹紝浠ユ鐢�
- bytes.clear();
- for (int i = index + lenght; i < recevieBytes.length; i++) {
- bytes.add(recevieBytes[i]);
+ remove(bodyIndex + lenght);
+
+ if (topic.contains("heartbeat_reply")) {
+// if (packet.getSocket() != null) {
+// packet.getSocket().setSoTimeout(10 * 1000);
+// }
+ continue;
}
+
LinkResponse response = new LinkResponse();
response.setSource_ipAddress(ipaddress);
response.setTopic(topic);
- if (HDLLinkConfig.getInstance().ifNeedEncrypt(response.getTopic())) {
+
+ if (encrypt(body)) {
//闇�瑕佽В瀵�
byte[] bodyBytes = AesUtil.aesDecrypt(body, HDLLinkConfig.getInstance().getLocalSecret());
if (bodyBytes != null) {
- body = bodyBytes;
+ response.setData(new String(bodyBytes, StandardCharsets.UTF_8));
} else {
- try {
- //涔嬪墠鐨勭増鏈繖鍧楁槸鏄庢枃鐨�
- if (!topic.contains("heartbeat_reply")) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
- LogUtils.e("瑙e瘑澶辫触锛屾暟鎹唴瀹规槸锛歕r\n" + Base64.encodeToString(body, Base64.NO_WRAP));
- else {
- LogUtils.e("瑙e瘑澶辫触锛屾暟鎹唴瀹规槸锛歕r\n" + new String(body, "utf-8"));
- }
- }
- } catch (Exception e) {
- }
+ LogUtils.e("瑙e瘑澶辫触\r\n" + topic);
+ response.setData(new String(body, "utf-8"));
+ continue;
}
+ } else {
+ response.setData(new String(body, "utf-8"));
}
- String bodyString = new String(body, "utf-8");
- response.setData(bodyString);
- LogUtils.i("鎺ユ敹鍒版暟鎹�:" + response.getTopic() + "\r\n" + response.getData());
+ LogUtils.i("鏈湴鎺ユ敹鍒版暟鎹�:\r\n" + response.getTopic() + "\r\n" + response.getData() + "\r\n" + response.getData().length());
- String updateLocalSecret = String.format(TopicConstant.LINK_BROADCAST, HDLLinkConfig.getInstance().getGatewayId());
- String deleteNetwork = "";
- if (HDLLinkConfig.getInstance().getDeviceInfoBean() != null) {
- deleteNetwork = String.format(TopicConstant.DELETE_NOTIFY, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID());
- }
-
- if (response.getTopic().equals("/user/all/custom/gateway/search")) {
- HDLAuthSocket.getInstance().UploadGatewayInfo(new HDLLinkCallBack() {
- @Override
- public void onSuccess(String msg) {
- LogUtils.i("UploadGatewayInfo onSucceed");
- }
-
- @Override
- public void onError(HDLLinkException e) {
- LogUtils.i("UploadGatewayInfo onError");
- }
- });
- } else if (response.getTopic().equals(updateLocalSecret) || response.getTopic().equals(TopicConstant.LINK_BROADCAST)) {
- try {
- DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceInfoResponse>() {
- }.getType());
-
- if (!TextUtils.isEmpty(deviceInfoResponse.getObjects().getLocalSecret())) {
- byte[] baseBytes = Base64.decode(deviceInfoResponse.getObjects().getLocalSecret(), Base64.NO_WRAP);
- String mackey = "";
- if (!TextUtils.isEmpty(SPUtils.getString("auth_mackey_key", ""))) {
- mackey = SPUtils.getString("auth_mackey_key", "");
- byte[] bodyBytes = AesUtil.aesDecrypt(baseBytes, mackey.substring(mackey.length() - 16));
- String localSecret = new String(bodyBytes, "utf-8");
- Log.d("panlili", "鏇存柊瀵嗛挜----->localSecret= " + localSecret);
- HDLLinkConfig.getInstance().setLocalSecret(localSecret);
- }
- }
- } catch (Exception e) {
- LogUtils.i("LinkMessageDecoder.java:getLocalSecret----->e= " + e.getMessage());
- }
- } else if (response.getTopic().equals(deleteNetwork)) {
- try {
- DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceDeleteResponse>() {
- }.getType());
- HDLSocket.getInstance().deleteNetwork(deviceDeleteResponse.getObjects().get(0).getOID(), new HDLLinkCallBack() {
- @Override
- public void onSuccess(String msg) {
- LogUtils.i("deleteNetwork onSucceed");
- if (HDLLink.getInstance().listener != null) {
- HDLLink.getInstance().listener.onSuccess(msg);
- }
- }
-
- @Override
- public void onError(HDLLinkException e) {
- LogUtils.i("deleteNetwork onError");
- if (HDLLink.getInstance().listener != null) {
- HDLLink.getInstance().listener.onFailure();
- }
- }
- });
- } catch (Exception e) {
- LogUtils.i("LinkMessageDecoder.java:deleteNetwork----->e= " + e.getMessage());
- }
- }
-
- //闈炴甯告暟鎹紝杩斿洖
- if (!((bodyString.startsWith("{") && bodyString.endsWith("}"))
- || (bodyString.startsWith("[") && bodyString.endsWith("]")))) {
- continue;
- }
//瑙f瀽瀹屾垚,topic鍙戦�佷竴娆�
EventDispatcher.getInstance().post(response.getTopic(), response);
}
- return null;
-
+ } catch (Exception ee) {
+ LogUtils.e("澶勭悊鎺ユ敹鐨勬暟鎹紓甯�:\r\n" + ee.getMessage());
}
return null;
}
+
+ //鏄惁鍔犲瘑
+ private boolean encrypt(byte[] bytes) {
+ if (bytes[0] == '{' && bytes[bytes.length - 1] == '}' || (bytes[0] == '[' && bytes[bytes.length - 1] == ']')) {
+ return false;
+ }
+ return true;
+ }
}
+
+
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 595c20b..a14bc66 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
@@ -148,19 +148,32 @@
EventDispatcher.getInstance().register(TopicConstant.GATEWAY_AUTH_BROADCAST, new EventListener() {
@Override
public void onMessage(Object msg) {
- LogUtils.i("鏀跺埌缃戝叧璁よ瘉淇℃伅: ");
- NetworkAccessBroadcastResponse bean = getNetworkAccessBroadcastResponse(msg);
- if (bean != null) {
- //绉婚櫎鐩戝惉
- EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST);
- LogUtils.i("缃戝叧鍏ョ綉骞挎挱IP: " + bean.getIPAddress());
- HDLLinkConfig.getInstance().setIpAddress(bean.getIPAddress());
- String ipStr = bean.getIPAddress();
- if (!TextUtils.isEmpty(ipStr)) {
- sendAuthenticateRequest(ipStr, request, callBack);
+ try {
+ LogUtils.i("鏀跺埌缃戝叧璁よ瘉淇℃伅: ");
+ NetworkAccessBroadcastResponse bean = getNetworkAccessBroadcastResponse(msg);
+ if (bean != null) {
+ 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());
+ 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());
+ }
}
});
}
@@ -186,6 +199,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());
@@ -197,7 +211,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());
@@ -205,6 +221,7 @@
request.setIp_address(authenticateDeviceInfoBean.getIPAddress());
request.setMaster("false");
request.setLocalEncrypt(false);
+ request.setHomeId(HDLLinkConfig.getInstance().getHomeId());
data.setObjects(request);
@@ -213,21 +230,7 @@
GsonConvert.getGson().toJson(data));
String ip = IpUtils.getBroadcastAddress();
- HdlSocketHelper.sendUdp(getUdpBoot(), ip, UDP_PORT, message, new HdlSocketHelper.HdlSocketListener() {
- @Override
- public void onSucceed(Object msg) {
- if (callBack == null) return;
- callBack.onSuccess("涓婃姤鎴愬姛");
- LogUtils.i("UploadGatewayInfo onSucceed = " + msg);
- }
-
- @Override
- public void onFailure() {
- if (callBack == null) return;
- callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UPLOAD_GATEWAYINFO_FAILURE_ERROR));
- LogUtils.i("UploadGatewayInfo onFailure");
- }
- });
+ HdlSocketHelper.sendUdp(getUdpBoot(), ip, UDP_PORT, message, null);
}
@@ -258,16 +261,21 @@
String localSecret = "";
String gatewayId = "";
String ipAddress = "";
+ 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();
}
if (ipAddress == null) {
ipAddress = bean.getIp_address();
}
+ if (!TextUtils.isEmpty(homeId)) {
+ HDLLinkConfig.getInstance().setHomeId(homeId);
+ }
HDLLinkConfig.getInstance().setAuthBean(request.getAuth());
//鍒ゆ柇缃戝叧鏄惁宸茬粡娉ㄥ唽鍒颁簯绔�
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 d5ab577..5b9e0ec 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
@@ -24,6 +24,7 @@
import com.hdl.sdk.connect.bean.request.FunctionAttributeRequest;
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.request.PropertyReadRequest;
import com.hdl.sdk.connect.bean.response.BaseLocalCodeResponse;
@@ -113,7 +114,7 @@
}
BroadcastRequest request = new BroadcastRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), "200");
HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true, new HDLLinkResponseCallBack() {
-// @RequiresApi(api = Build.VERSION_CODES.O)
+ // @RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onSuccess(LinkResponse msg) {
String data = msg.getData();
@@ -649,12 +650,62 @@
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));
@@ -890,14 +941,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));
}
@@ -936,7 +986,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() {
@@ -945,8 +999,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));
}
}
});
@@ -1005,7 +1059,7 @@
threadPool.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
- if (sendCount.get() < 3) {
+ if (sendCount.get() < 0) {
sendCount.set(sendCount.get() + 1);
getTcp().sendMsg(data);
} else {
@@ -1055,4 +1109,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));
+ }
+ }
+ }
+
}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
index abac95d..58fd289 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
@@ -91,7 +91,7 @@
* 娉ㄥ唽鐩戝惉
*/
void registerListener() {
- if (!TextUtils.isEmpty(observeTopic)) {
+ if (listener != null && !TextUtils.isEmpty(observeTopic)) {
EventDispatcher.getInstance().register(observeTopic, eventListener);
// LogUtils.i("HdlSocketHelper", "register event");
}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/ByteBufferUtils.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/ByteBufferUtils.java
new file mode 100644
index 0000000..032c9d3
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/ByteBufferUtils.java
@@ -0,0 +1,37 @@
+package com.hdl.sdk.connect.utils;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Created by hxb on 2022/8/3.
+ *
+ */
+public class ByteBufferUtils {
+
+ /**
+ * 鑾峰彇ByteBuffer鎸囧畾浣嶇疆鏁版嵁
+ *
+ * @param byteBuffer 婧愬璞�
+ * @param length 鎸囧畾闀垮害
+ * @return 鏍规嵁闀垮害鐢熸垚鐨勬暟缁�
+ */
+ public static byte[] copyBytes(ByteBuffer byteBuffer, int length) {
+ return copyBytes(byteBuffer,0,length);
+ }
+
+ /**
+ * 澶嶅埗鎸囧畾浣嶇疆鐨勬暟鎹�
+ * @param byteBuffer
+ * @param index
+ * @param length
+ * @return
+ */
+ public static byte[] copyBytes(ByteBuffer byteBuffer, int index,int length) {
+ byte[] bytes = new byte[length];
+ for (int i = 0; i < bytes.length; i++) {
+ bytes[i] = byteBuffer.get(index + i);
+ }
+ return bytes;
+ }
+
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/socket/client/UdpClient.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/socket/client/UdpClient.java
index c6a3aff..3980879 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/socket/client/UdpClient.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/socket/client/UdpClient.java
@@ -29,7 +29,7 @@
/**
* 褰撳墠socket
*/
- private DatagramSocket mSocket;
+ private DatagramSocket mSocket;
/**
* 鎺ユ敹鏁版嵁鍖�
@@ -57,11 +57,12 @@
/**
* 鍒濆鍖栧弬鏁�
- * @param ipAddress 鏈湴鐩戝惉绔彛
- * @param port 鏈湴鐩戝惉绔彛
+ *
+ * @param ipAddress 鏈湴鐩戝惉绔彛
+ * @param port 鏈湴鐩戝惉绔彛
* @param socketOptions
*/
- private UdpClient(String ipAddress,int port, UdpSocketOptions socketOptions) {
+ private UdpClient(String ipAddress, int port, UdpSocketOptions socketOptions) {
this.ipAddress = ipAddress;
this.port = port;
this.socketOptions = socketOptions;
@@ -71,8 +72,9 @@
/**
* 鍒濆鍖栧弬鏁�
+ *
* @param ipAddress 鏈湴鐩戝惉IP鍦板潃
- * @param port 鏈湴鐩戝惉绔彛
+ * @param port 鏈湴鐩戝惉绔彛
* @param options
* @return
*/
@@ -82,7 +84,8 @@
/**
* 鍒濆鍖栧弬鏁�
- * @param port 鏈湴鐩戝惉绔彛
+ *
+ * @param port 鏈湴鐩戝惉绔彛
* @param options
* @return
*/
@@ -100,8 +103,8 @@
}
if (TextUtils.isEmpty(ipAddress)) {
mSocket = SocketPool.getInstance().getUdpSocket(new InetSocketAddress(port));
- }else {
- mSocket = SocketPool.getInstance().getUdpSocket(new InetSocketAddress(ipAddress,port));
+ } else {
+ mSocket = SocketPool.getInstance().getUdpSocket(new InetSocketAddress(ipAddress, port));
}
mSocket.setBroadcast(true);
// mSocket.setReuseAddress(true);
@@ -156,7 +159,7 @@
if (handleMessage != null) {
byte[] data = new byte[receivePacket.getLength()];
System.arraycopy(receivePacket.getData(), 0, data, 0, data.length);
- handleMessage.read(data,receivePacket.getAddress().getHostAddress());
+ handleMessage.read(data, receivePacket.getAddress().getHostAddress());
}
} catch (Exception e) {
@@ -166,11 +169,12 @@
@Override
- public void sendMsg(String ipAddress,int port, byte[] msg) throws Exception {
+ public void sendMsg(String ipAddress, int port, byte[] msg) throws Exception {
if (msg == null) {
return;
}
final DatagramPacket sendPacket = new DatagramPacket(msg, msg.length, InetAddress.getByName(ipAddress), port);
+ if (sendPacket == null) return;
mSocket.send(sendPacket);
}
}
diff --git a/HDLSDK_DEMO/app/build.gradle b/HDLSDK_DEMO/app/build.gradle
index 1116a77..1f6a2a1 100644
--- a/HDLSDK_DEMO/app/build.gradle
+++ b/HDLSDK_DEMO/app/build.gradle
@@ -38,7 +38,8 @@
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.6'
+
// implementation 'com.google.code.gson:gson:2.8.8'
// implementation project(path: ':hdl-connect')
- implementation files('libs\\com.hdl.sdk-v1.1.4.aar')
+ implementation files('libs\\com.hdl.sdk-v1.1.6.aar')
}
\ No newline at end of file
diff --git a/HDLSDK_DEMO/app/libs/com.hdl.sdk-v1.1.4.aar b/HDLSDK_DEMO/app/libs/com.hdl.sdk-v1.1.4.aar
deleted file mode 100644
index 83c01e8..0000000
--- a/HDLSDK_DEMO/app/libs/com.hdl.sdk-v1.1.4.aar
+++ /dev/null
Binary files differ
diff --git a/HDLSDK_DEMO/app/libs/com.hdl.sdk-v1.1.6.aar b/HDLSDK_DEMO/app/libs/com.hdl.sdk-v1.1.6.aar
new file mode 100644
index 0000000..f9edf02
--- /dev/null
+++ b/HDLSDK_DEMO/app/libs/com.hdl.sdk-v1.1.6.aar
Binary files differ
diff --git a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java b/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
index 31f1ab6..c22310e 100644
--- a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
+++ b/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -1,8 +1,10 @@
package com.hdl.hdlsdk;
import android.Manifest;
+import android.content.Context;
import android.content.Intent;
-import android.os.Build;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
@@ -15,7 +17,6 @@
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -28,15 +29,19 @@
import com.hdl.sdk.common.event.DeleteNetworkListener;
import com.hdl.sdk.common.event.EventListener;
import com.hdl.sdk.common.exception.HDLLinkException;
+import com.hdl.sdk.common.utils.AllTopicManagerUtils;
import com.hdl.sdk.common.utils.IdUtils;
import com.hdl.sdk.common.utils.LogUtils;
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.AttributesRequest;
import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
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.bean.response.BaseLocalResponse;
+import com.hdl.sdk.connect.bean.response.DeviceInfoResponse;
import com.hdl.sdk.connect.bean.response.GatewaySearchBean;
import com.hdl.sdk.connect.callback.HDLLinkCallBack;
import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
@@ -68,24 +73,6 @@
protected void onDestroy() {
super.onDestroy();
removeAllTopicsListener();
- }
-
- void initDeviceInfo() {
- AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = new AuthenticateRequest.AuthenticateDeviceInfoBean();
- infoBean.setDeviceMAC("f2c5d8bad48f");
- infoBean.setIPMAC("f2c5d8bad48f");
- infoBean.setDeviceName("闊充箰鎾斁鍣�");//璁惧鍚嶅瓧
- infoBean.setDeviceModel("MCLog.431");//璁惧鍨嬪彿
- infoBean.setAccessMode("WIFI");
- infoBean.setIPGateway("192.168.1.1");
- infoBean.setIPAddress("192.168.1.103");
- infoBean.setGateway_type("screen.touch");
- infoBean.setHw_version("HW2.0");
- infoBean.setFw_version("Fw1.0");
- infoBean.setOID("010105000000FE11");//姣忎釜璁惧oid閮借涓嶄竴鏍�
- infoBean.setSid("110105000000FE08110100000011");//姣忎釜璁惧鐨剆id閮借涓嶄竴鏍�
- infoBean.setSupplier("JINMAOYUN");
- HDLLinkConfig.getInstance().setDeviceInfoBean(infoBean);
}
/*void applyDeviceSecret() {
@@ -128,66 +115,33 @@
}
});
- }*/
+ }
- /**
- * 鍏ョ綉璁よ瘉
- */
- void sendAuthenticateRequest() {
- tv.setText("寮�濮嬪叆缃戣璇�...");
+ void checkAppVersion() {
+ tv.setText("寮�濮嬫娴嬫洿鏂�...");
responseTv.setText("");
- //璁よ瘉鎻愪氦鍙傛暟鍑嗗
-//
-// //娴嬭瘯鏈嶅姟鍣�
-// String spkStr = "music.standard";//浜у搧spk
-// String macStr = "AA000000000000AF";//璁惧鍞竴MAC鍦板潃
-// String secret = "44b360eb74b7ba64";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
-// 姝e紡鏈嶅姟鍣�
- String spkStr = "screen.touch";//浜у搧spk
-// String macStr = "AA00000000000100";//璁惧鍞竴MAC鍦板潃
- String macStr = editText.getText().toString();//璁惧鍞竴MAC鍦板潃
-// String secret = "e186beeb7974998e";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
+// //姝e紡鏈嶅姟鍣�
+ String appKey = "i8hR07jzrIS";//appkey
+ String appSecret = "BmnJ8RWTtaVEBk24zPPF4UMwfYu0lAWU";//appsecret
- String mac_key = stringToMD5(stringToMD5(macStr + secret));
- String versionString = "HDL_V1.0.1";//
- String time = String.valueOf(System.currentTimeMillis());
- HDLLinkConfig.getInstance().getDeviceInfoBean().setDeviceMAC(macStr);
-// HDLLinkConfig.getInstance().setCurrentGateway(infoBean);
+ String appCode = "1697150870315999233";//appCode
- //1.璁剧疆璁よ瘉淇℃伅
- AuthenticateRequest.RequestBean requestBean = new AuthenticateRequest.RequestBean();
- requestBean.setMAC(macStr);
- requestBean.setSupplier("JINMAOYUN");
- requestBean.setFirmwareVersion(versionString);
- requestBean.setHardwareModel("1956F");
-// HDLLinkConfig.getInstance().setRequestBean(requestBean);
-
- AuthenticateRequest.AuthBean authbean = new AuthenticateRequest.AuthBean();
- authbean.setSpk(spkStr);
- authbean.setMACKey(mac_key);
- authbean.setRequest(requestBean);
- HDLLinkConfig.getInstance().setAuthBean(authbean);
-
- //HDLLinkConfig.getInstance().getDeviceInfoBean()杩欎釜鍒濆鍖栫殑鏃跺�欒鍏堣缃ソ
- AuthenticateRequest request = new AuthenticateRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), authbean);
- HDLLink.getInstance().startAuthenticateRequest(request, new HDLLinkCallBack() {
+ HDLLink.getInstance().checkAppVersion(this, appKey, appSecret, getAppVersionName(this), appCode, new CheckAppVersionListener() {
@Override
- public void onError(HDLLinkException e) {
- tv.setText("璁よ瘉澶辫触" + e.getCode());
- responseTv.setText(e.getMsg());
- Log.e(TAG, "onError: 璁よ瘉澶辫触 " + e.getCode());
+ public void onSuccess(UpdateInfo info) {
+ tv.setText("鏈夋柊鏇存柊");
+ responseTv.setText(info.toString());
}
- @RequiresApi(api = Build.VERSION_CODES.O)
@Override
- public void onSuccess(String msg) {
- tv.setText("璁よ瘉鎴愬姛");
- responseTv.setText(msg.toString());
- localSecret.setText("瀵嗛挜锛�" + HDLLinkConfig.getInstance().getLocalSecret());
+ public void onError(HDLException e) {
+ tv.setText("妫�娴嬫洿鏂板け璐�");
+ responseTv.setText(e.getMsg());
}
});
- }
+
+ }*/
public void UploadDeviceAuth(String mac, String result, String message, String auth_code) {
//灏嗚璇佺粨鏋滀笂鎶ョ粰缃戝叧
@@ -235,6 +189,8 @@
}
});
+ UploadSidList();
+
ActivityResultLauncher<String[]> launcher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback<Map<String, Boolean>>() {
@Override
public void onActivityResult(Map<String, Boolean> result) {
@@ -261,6 +217,7 @@
beans.add(new DemoBean("UDP鍙戦�侊紝鐩戝惉涓婚鍥炲锛屽甫閲嶅彂甯﹀洖璋�"));
beans.add(new DemoBean("TCP鍙戦�侊紝鐩戝惉涓婚鍥炲锛屽甫閲嶅彂甯﹀洖璋�"));
beans.add(new DemoBean("閫�缃�"));
+ beans.add(new DemoBean("妫�娴嬫洿鏂�"));
demoAdapter = new DemoAdapter(beans);
rv.setAdapter(demoAdapter);
@@ -313,7 +270,7 @@
break;
case 9:
//鍦烘櫙鎺у埗
- controlScene();
+ getScene();
break;
case 10:
//鍔熻兘鍒楄〃
@@ -338,6 +295,10 @@
case 15:
//閫�缃�
deleteNetwork();
+ break;
+ case 16:
+ //妫�娴嬫洿鏂�
+// checkAppVersion();
break;
}
}
@@ -371,7 +332,7 @@
@Override
public void onMessage(Object msg) {
LinkResponse response = (LinkResponse) msg;
- if ("/user/all/custom/gateway/broadcast_reply".equals(response.getTopic())){
+ if ("/user/all/custom/gateway/broadcast_reply".equals(response.getTopic())) {
localSecret.setText("瀵嗛挜锛�" + HDLLinkConfig.getInstance().getLocalSecret());
}
}
@@ -422,6 +383,75 @@
HDLLink.getInstance().removeAllTopicsListener(allTopicsListener);
}
+ void initDeviceInfo()
+ {
+ AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = new AuthenticateRequest.AuthenticateDeviceInfoBean();
+ infoBean.setDeviceMAC("f2c5d8bad48f");
+ infoBean.setIPMAC("f2c5d8bad48f");
+ infoBean.setDeviceName("榄旈暅");//璁惧鍚嶅瓧
+ infoBean.setDeviceModel("HDLSDK");//璁惧鍨嬪彿
+ infoBean.setAccessMode("WIFI");
+ infoBean.setIPGateway("192.168.1.1");
+ infoBean.setIPAddress("192.168.1.116");
+ infoBean.setGateway_type("screen.touch");
+ infoBean.setHw_version("HW2.0");
+ infoBean.setFw_version("Fw1.0");
+ infoBean.setOID("010105000000FE11");//姣忎釜璁惧oid閮借涓嶄竴鏍�
+ infoBean.setSid("110105000000FE08110100000011");//姣忎釜璁惧鐨剆id閮借涓嶄竴鏍�
+ infoBean.setSupplier("JINMAOYUN");
+ HDLLinkConfig.getInstance().setDeviceInfoBean(infoBean);
+
+ }
+
+ /**
+ * 鍏ョ綉璁よ瘉
+ */
+ void sendAuthenticateRequest() {
+ tv.setText("寮�濮嬪叆缃戣璇�...");
+ //璁よ瘉鎻愪氦鍙傛暟鍑嗗
+
+// 娴嬭瘯鏈嶅姟
+// String spkStr = "ir.module";//浜у搧spk
+// String macStr = "AA000000000000AF";//璁惧鍞竴MAC鍦板潃
+// String secret = "44b360eb74b7ba64";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
+
+// 姝e紡鏈嶅姟鍣�
+ String spkStr = "screen.touch";//浜у搧spk
+ String macStr = "f2c5d8bad48f";//璁惧鍞竴MAC鍦板潃
+ String secret = "7728691efecc3853";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
+
+ String mac_key = stringToMD5(stringToMD5(macStr + secret));
+ String versionString = "HDL_V1.0.1";//
+ String time = String.valueOf(System.currentTimeMillis());
+ HDLLinkConfig.getInstance().getDeviceInfoBean().setDeviceMAC(macStr);
+
+ //1.璁剧疆璁よ瘉淇℃伅
+ AuthenticateRequest.RequestBean requestBean = new AuthenticateRequest.RequestBean();
+ requestBean.setMAC(macStr);
+ requestBean.setSupplier("JINMAOYUN");
+ requestBean.setFirmwareVersion(versionString);
+ requestBean.setHardwareModel("1956F");
+ AuthenticateRequest.AuthBean authbean = new AuthenticateRequest.AuthBean();
+ authbean.setSpk(spkStr);
+ authbean.setMACKey(mac_key);
+ authbean.setRequest(requestBean);
+ //HDLLinkConfig.getInstance().getDeviceInfoBean()杩欎釜鍒濆鍖栫殑鏃跺�欒鍏堣缃ソ
+ AuthenticateRequest request = new AuthenticateRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), authbean);
+ HDLLink.getInstance().startAuthenticateRequest(request, new HDLLinkCallBack() {
+ @Override
+ public void onError(HDLLinkException e) {
+ tv.setText("璁よ瘉澶辫触");
+ responseTv.setText(e.getMsg());
+ Log.i("TAG", "onError: 璁よ瘉澶辫触");
+ }
+
+ @Override
+ public void onSuccess(String msg) {
+ tv.setText("璁よ瘉鎴愬姛");
+ responseTv.setText(msg.toString());
+ }
+ });
+ }
String stringToMD5(String text) {
byte[] hash;
@@ -575,6 +605,7 @@
@Override
public void onSuccess(String msg) {
responseTv.setText(msg);
+ Log.d("panlili", "MainActivity.java:getSceneList-----> " + msg);
}
@Override
@@ -586,6 +617,30 @@
//鍦烘櫙鍒楄〃
// {"id":"8a5eaa143ce943b987b577df5a66759b","time_stamp":"1637040217235","objects":[{"sid":"04010560D2C7170A0A0100000000","name":"鍥炲妯″紡","status":"off","group":"255","delay":"0","modify_time":"1634871490"},{"sid":"04010560D2C76E0A0A0100010000","name":"绂诲妯″紡","status":"off","group":"255","delay":"0","modify_time":"1634785823"}]}
+
+ /**
+ * 鑾峰彇鍦烘櫙璇︽儏
+ * 鎵ц鎴愬姛鐨勮瘽 鍝嶅簲code涓�200
+ */
+ void getScene() {
+ tv.setText("鍦烘櫙璇诲彇");
+ responseTv.setText("");
+ //鍦烘櫙sid鍒楄〃锛屾敮鎸佹壒閲忚鍙�
+ List<String> sids = new ArrayList<>();
+ sids.add("0201034C50B53F0A0A0100011100");
+ sids.add("0201037F50B53F0A0A0100021100");
+ HDLLink.getInstance().getScene(sids, new HDLLinkCallBack() {
+ @Override
+ public void onSuccess(String msg) {
+ responseTv.setText(msg);
+ }
+
+ @Override
+ public void onError(HDLLinkException e) {
+ responseTv.setText(e.getMsg());
+ }
+ });
+ }
/**
* 鎺у埗鍦烘櫙
@@ -758,4 +813,66 @@
}
});
}
+
+ private void UploadSidList() {
+ tv.setText("涓婃姤Sid鍒楄〃...");
+ responseTv.setText("");
+
+ //1.璁剧疆璁惧淇℃伅
+ AuthenticateRequest.AuthenticateDeviceInfoBean authenticateDeviceInfoBean = HDLLinkConfig.getInstance().getDeviceInfoBean();
+
+ ListSidRequest request = new ListSidRequest();
+ request.setOid(authenticateDeviceInfoBean.getOID());
+ request.setName("sid鍚嶇О");
+ request.setOmodel(authenticateDeviceInfoBean.getDeviceModel());
+ request.setSid("12345678");//褰撳墠sid鐨�
+ request.setSpk("light.switch");//褰撳墠spk鍚嶇О锛屾牴鎹疄闄呰澶囨潵瀹氫箟
+ request.setFrom(authenticateDeviceInfoBean.getOID());//鏉ヨ嚜鍝釜缃戝叧锛屽鏋滄椂Link缃戠粶璁惧锛屽垯濉嚜韬玱id锛涘鏋滄槸椹卞姩鍒欎笉闇�瑕佹瀛楁
+
+ AttributesRequest attributes = new AttributesRequest();
+ attributes.setKey("on_off");
+ attributes.setData_type("string");
+ List<Object> valueList=new ArrayList<>();
+ valueList.add("on");
+ valueList.add("off");
+ attributes.setValue(valueList);
+ //娣诲姞鏀寔鐨勫睘鎬у垪琛�
+ List<AttributesRequest> attributesList = new ArrayList<>();
+ request.setAttributes(attributesList);
+ List<ListSidRequest> sidRequestList = new ArrayList<>();
+ sidRequestList.add(request);
+ HDLLink.getInstance().UploadSidList(sidRequestList, new HDLLinkCallBack() {
+ @Override
+ public void onError(HDLLinkException error) {
+ tv.setText(error.getMsg());
+ }
+
+ @Override
+ public void onSuccess(String data) {
+ tv.setText("涓婃姤sid鍒楄〃鎴愬姛");
+ responseTv.setText(data);
+ }
+ });
+ }
+
+ /**
+ * 鑾峰彇APP鐗堟湰
+ *
+ * @param context
+ * @return
+ */
+ public static String getAppVersionName(Context context) {
+ String versionName = "0";
+ try {
+ PackageManager packageManager = context.getPackageManager();
+ PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
+ versionName = packageInfo.versionName;
+ if (TextUtils.isEmpty(versionName)) {
+ versionName = "0";
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return versionName;
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0