From 0ce9960bb073c10f8c12989291c94b98e6caf799 Mon Sep 17 00:00:00 2001 From: 562935844@qq.com Date: 星期四, 31 八月 2023 17:18:11 +0800 Subject: [PATCH] deviceinfo加判空 --- HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java | 316 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 311 insertions(+), 5 deletions(-) diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java index de555ec..b82dcef 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 @@ -1,10 +1,16 @@ package com.hdl.sdk.connect.socket; +import static com.hdl.sdk.connect.config.HDLLinkConfig.AUTHENTICATE_IS_DEVICEINFO_KEY; + +import android.os.Build; import android.text.TextUtils; import android.util.Log; +import androidx.annotation.RequiresApi; + import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import com.hdl.sdk.common.HDLSdk; import com.hdl.sdk.common.config.TopicConstant; import com.hdl.sdk.common.event.EventDispatcher; import com.hdl.sdk.common.event.EventListener; @@ -17,8 +23,15 @@ import com.hdl.sdk.common.utils.gson.GsonConvert; import com.hdl.sdk.connect.HDLLink; import com.hdl.sdk.connect.bean.LoginRequest; +import com.hdl.sdk.connect.bean.request.AuthenticateRequest; import com.hdl.sdk.connect.bean.request.BroadcastRequest; +import com.hdl.sdk.connect.bean.request.DeviceAuthRequest; +import com.hdl.sdk.connect.bean.request.GatewayInfoRequest; +import com.hdl.sdk.connect.bean.request.ListOidRequest; +import com.hdl.sdk.connect.bean.request.ListOidRequest2; +import com.hdl.sdk.connect.bean.request.ListUploadRequest; import com.hdl.sdk.connect.bean.response.AuthenticateResponse; +import com.hdl.sdk.connect.bean.response.BaseLocalCodeResponse; import com.hdl.sdk.connect.bean.response.BaseLocalResponse; import com.hdl.sdk.connect.bean.request.DeviceControlRequest; import com.hdl.sdk.connect.bean.request.FunctionAttributeRequest; @@ -31,6 +44,7 @@ import com.hdl.sdk.connect.config.HDLLinkConfig; import com.hdl.sdk.connect.protocol.LinkMessageDecoder; import com.hdl.sdk.connect.protocol.LinkMessageEncoder; +import com.hdl.sdk.connect.utils.AesUtil; import com.hdl.sdk.socket.SocketBoot; import com.hdl.sdk.socket.SocketOptions; import com.hdl.sdk.socket.client.IHeartbeat; @@ -40,6 +54,7 @@ import com.hdl.sdk.socket.listener.SendListener; import java.util.ArrayList; +import java.util.Base64; import java.util.List; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -82,6 +97,7 @@ public boolean isBroadcast = false; + /** * 骞挎挱鑷韩淇℃伅缁欎富缃戝叧 */ @@ -95,7 +111,7 @@ Thread.sleep(1000); // LogUtils.i("checkIfCertified=" + HDLLink.getInstance().checkIfCertified() + " getTcp().connected=" + getTcp().connected); try { - if (!HDLLink.getInstance().checkIfCertified() || getTcp().connected) { + if (!HDLLink.getInstance().checkIfCertified() || (!TextUtils.isEmpty(getTcpIp()) && getTcp().connected)) { continue; } } catch (Exception e) { @@ -109,24 +125,32 @@ } 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) @Override public void onSuccess(LinkResponse msg) { - getTcp(); String data = msg.getData(); if (!TextUtils.isEmpty(data)) { DeviceInfoResponse response = GsonConvert.getGson().fromJson(data, new TypeToken<DeviceInfoResponse>() { }.getType()); + + if ((response == null) || (response.getObjects() == null) || (response.getObjects().getIPAddress() == null)) + return; + HDLLinkConfig.getInstance().setIpAddress(response.getObjects().getIPAddress()); + LogUtils.i("---getIpAddress=" + HDLLinkConfig.getInstance().getIpAddress()); + HDLLinkConfig.getInstance().reSaveConfig(); } + isBroadcast = true; + getTcp(); LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧鎴愬姛锛�"); } @Override public void onError(HDLLinkException e) { isBroadcast = false; - LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧澶辫触锛�"); + LogUtils.i("骞挎挱淇℃伅缁欎富缃戝叧澶辫触锛�---onError=" + e.toString()); } }); // HDLAuthSocket.getInstance().udpSendMsg(TopicConstant.BROADCAST, GsonConvert.getGson().toJson(request), true); @@ -470,6 +494,10 @@ jsonObject.addProperty("id", IdUtils.getUUId()); jsonObject.addProperty("time_stamp", time); + if (HDLLinkConfig.getInstance().getRequestBean() != null) { + jsonObject.addProperty("mac", HDLLinkConfig.getInstance().getRequestBean().getMAC()); + } + String topic = String.format(TopicConstant.HEARTBEAT, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID()); LinkRequest message = new LinkRequest(topic, @@ -496,6 +524,53 @@ LinkRequest message = new LinkRequest(topic, jsonObject.toString()); + 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_GET_FUNCTION_LIST_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR)); + } + } + } else { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR)); + } + } + } + + /** + * 鑾峰彇鍦烘櫙鍒楄〃 + */ + public void getScene(List<String> sids, HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<PropertyReadRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + List<PropertyReadRequest> list = new ArrayList<>(); + for (String s : sids) { + list.add(new PropertyReadRequest(s)); + } + data.setObjects(list); + + String topic = String.format(TopicConstant.SCENE_GET, getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + String replyTopic = topic + "_reply"; try { sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() { @@ -574,6 +649,114 @@ } /** + * 涓婃姤oid鍒楄〃 + * + * @param request 璁惧淇℃伅 + * @param callBack 鍥炶皟 + */ + public void UploadOidList(ListUploadRequest request, HDLLinkCallBack callBack) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<ListUploadRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + 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)); + } + } + } + + /** + * 涓婃姤鍏ョ綉璁よ瘉缁撴灉 + * + * @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) { + if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) { + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<DeviceAuthRequest>> data = new BaseLocalResponse<>(); + data.setId(IdUtils.getUUId()); + data.setTime_stamp(time); + + DeviceAuthRequest deviceAuthRequest = new DeviceAuthRequest(); + deviceAuthRequest.setMac(mac); + deviceAuthRequest.setResult(result); + deviceAuthRequest.setMessage(message); + deviceAuthRequest.setAuth_code(auth_code); + + List<DeviceAuthRequest> list = new ArrayList<>(); + list.add(deviceAuthRequest); + + data.setObjects(list); + + String topic = String.format(TopicConstant.DEIVCE_AUTH_RESULT_NOTIFY, getGatewayId()); + LinkRequest linkRequest = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String replyTopic = topic + "_reply"; + try { + sendMsg(linkRequest.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)); + } + } + } + + + /** * tcp鐧诲綍鏂逛究鑾峰彇鐘舵�� * * @param clientType 瀹㈡埛绔被鍨� @@ -607,6 +790,129 @@ @Override public void onSucceed() { LogUtils.i("tcpLogin onSucceed"); + } + + @Override + public void onError() { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + }); + } catch (Exception e) { + if (callBack != null) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR)); + } + } + } + + + /** + * 閫氱煡鍒犻櫎骞堕��缃戝瓙璁惧 + * + * @param oid 浠庣綉鍏筹紙璁惧锛塷id + * @param isForce 鏄惁寮哄埗閫�缃� + * @param callBack 缁撴灉鍥炶皟 + */ + public void deleteNetwork(String oid, boolean isForce, HDLLinkCallBack callBack) { + if (TextUtils.isEmpty(oid)) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR)); + } + + final String msgId = IdUtils.getUUId(); + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalResponse<List<ListOidRequest2>> data = new BaseLocalResponse<>(); + data.setId(msgId); + data.setTime_stamp(time); + + final ListOidRequest2 request = new ListOidRequest2(); + request.setOid(oid); + List<ListOidRequest2> list = new ArrayList<>(); + list.add(request); + + data.setObjects(list); + + String topic = String.format(TopicConstant.DELETE_REQUEST, HDLLinkConfig.getInstance().getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + + String replyTopic = topic + "_reply"; + + if (isForce) {//寮哄埗閫�缃戯紝涓嶇瓑缃戝叧鍥炲鐩存帴娓呴櫎鏁版嵁 + HDLLinkConfig.getInstance().clearConfig(); + } + + try { + sendMsg(message.getSendBytes(), replyTopic, 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)); + } + } + } + + /** + * 閫氱煡鍒犻櫎骞堕��缃戝瓙璁惧鎷撴墤鍏崇郴 + * + * @param oid 浠庣綉鍏筹紙璁惧锛塷id + * @param callBack 缁撴灉鍥炶皟 + */ + public void deleteNetwork(String oid, HDLLinkCallBack callBack) { + if (TextUtils.isEmpty(oid)) { + callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR)); + } + + final String msgId = IdUtils.getUUId(); + String time = String.valueOf(System.currentTimeMillis()); + final BaseLocalCodeResponse<List<ListOidRequest>> data = new BaseLocalCodeResponse<>(); + data.setId(msgId); + data.setTime_stamp(time); + data.setCode("0"); + + final ListOidRequest request = new ListOidRequest(); + request.setOid(oid); + List<ListOidRequest> list = new ArrayList<>(); + list.add(request); + + data.setObjects(list); + + String topic = String.format(TopicConstant.DELETE_NOTIFY_REPLY, HDLLinkConfig.getInstance().getGatewayId()); + LinkRequest message = new LinkRequest(topic, + GsonConvert.getGson().toJson(data)); + +// String replyTopic = topic + "_reply"; + + 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 @@ -672,7 +978,7 @@ public void tcpSendMsg(String topic, String bodyStr) { try { if (TextUtils.isEmpty(topic) || TextUtils.isEmpty(bodyStr)) { - LogUtils.e("udpSendMsg", "鍙傛暟涓嶈兘涓虹┖"); + LogUtils.e("tcpSendMsg", "鍙傛暟涓嶈兘涓虹┖"); return; } LinkRequest message = new LinkRequest(topic, bodyStr); @@ -711,7 +1017,7 @@ threadPool.scheduleWithFixedDelay(new Runnable() { @Override public void run() { - if (sendCount.get() < 0) { + if (sendCount.get() < 3) { sendCount.set(sendCount.get() + 1); getTcp().sendMsg(data); } else { -- Gitblit v1.8.0