HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
@@ -1,15 +1,23 @@ 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; import java.time.chrono.IsoChronology; @@ -25,6 +33,9 @@ */ public static void manager(LinkResponse linkResponse) { try { if(linkResponse==null){ return; } String topic = linkResponse.getTopic(); if (TextUtils.isEmpty(topic)) { return; @@ -46,8 +57,57 @@ 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)){ try { DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(linkResponse.getData(), new TypeToken<DeviceInfoResponse>() { }.getType()); //TODO 通过增加if else 增加其它主题类似这样使用 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()); } } else if(isSameTopic(TopicConstant.DELETE_NOTIFY,topic)){ try { DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(linkResponse.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()); } } } catch (Exception e) { LogUtils.e("全局处理模块异常:" + e.getMessage()); @@ -64,10 +124,11 @@ return false; } String mac = HDLLinkConfig.getInstance().getDeviceInfoBean().getDeviceMAC(); String oid = "123";//HDLLinkConfig.getInstance().getDeviceInfoBean().getOID(); 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); return mac_Oid_GatewayId.equals(mac) || mac_Oid_GatewayId.equals(oid) || mac_Oid_GatewayId.equals(gatewayId)||mac_Oid_GatewayId.toLowerCase().equals(all); } /** HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
@@ -196,71 +196,7 @@ String bodyString = new String(body, "utf-8"); response.setData(bodyString); LogUtils.i("接收到数据:" + response.getTopic() + "\r\n" + response.getData()); 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("]")))) { HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
@@ -224,21 +224,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); } 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"); }