mac
2023-12-27 936fb552a30c05fc7a60c20f47bf6fccbc2dc1c1
HDLLinkLocalSdk/src/main/java/com/hdl/sdk/link/gateway/HDLLinkLocalGateway.java
@@ -158,7 +158,8 @@
        }
        for (GatewayBean gatewayBean : this.getGatewayList()) {
            if (macAndSid.equals(gatewayBean.getDevice_mac())
                    || macAndSid.equals(gatewayBean.getSid())) {
                    || macAndSid.equals(gatewayBean.getSid())
                    || macAndSid.equals(gatewayBean.getOid())) {
                return gatewayBean;
            }
        }
@@ -235,7 +236,7 @@
        ThreadToolUtils.getInstance().newFixedThreadPool(1).execute(new Runnable() {
            @Override
            public void run() {
                int count = 5;
                int count = 10;
                while (0 < count--) {
                    try {
                        //搜索网关
@@ -263,10 +264,11 @@
     *
     * @param callBack 回调
     */
    public void refreshGateway(GatewayCallBack callBack) {
    public void refreshGateway(GatewayCallBack callBack, List<String> spks) {
        String topicReply = TopicConstant.GATEWAY_SEARCH_REPLY;
        final List<GatewayBean> tempGatewayBeanList = new ArrayList<>();
        EventListener eventListener = getSearchGatewayEvent(this.getGatewayTypeList(), tempGatewayBeanList);
        EventListener eventListener = getSearchGatewayEvent(spks, tempGatewayBeanList);
//        EventListener eventListener = getSearchGatewayEvent(this.getGatewayTypeList(), tempGatewayBeanList);
        EventDispatcher.getInstance().register(topicReply, eventListener);
        ThreadToolUtils.getInstance().newFixedThreadPool(1).execute(new Runnable() {
            @Override
@@ -716,25 +718,71 @@
    /**
     * 发送数据到Link网关
     *
     * @param ip        网关IP
     * @param mac       网关mac
     * @param isEncrypt 是否加密
     * @param topic     请求主题
     * @param jObject   负载数据<没有填null></>
     * @param sendPath  发送路径<类名+方法名>class->methodName</>
     */
    public void sendDataToLinkGateway(String ip, String mac, boolean isEncrypt,
    public void sendDataToLinkGateway(String mac, boolean isEncrypt,
                                      String topic, Object jObject, String sendPath, HDLLinkCallBack callBack) {
        String topicSend = topic.replace("%s", mac);
        GatewayBean gatewayBean = this.getLocalGateway(mac);
        if (gatewayBean == null) {
            callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_FOUND_LOCALLY));
            return;
        }
        String topicSend = topic.replace("%s", gatewayBean.getOid());
        //组装需要发送的数据
        String sendStr = createSendData(jObject);
//        LogUtils.i("sendDataToLinkGateway->" + sendPath + "->本地发送\r\n" + topicSend + "\r\n" + sendStr);
        LinkRequest message = new LinkRequest(topicSend, sendStr, isEncrypt);
        message.setCloudTopic(topic.replace("%s", gatewayBean.getGatewayId()));
        new HDLConnectHelper(gatewayBean.getIp_address(), message, new HDLConnectHelper.HdlSocketListener() {
            @Override
            public void onSucceed(Object msg) {
                if (callBack == null) return;
                try {
                    JSONObject jsonObject = new JSONObject(new Gson().toJson(msg));
                    if (jsonObject.has("data")) {
                        callBack.onSuccess(jsonObject.getString("data"));
                    }
                } catch (Exception e) {
                    callBack.onSuccess(e.getMessage());
                }
//                LogUtils.i("sendDataToLinkGateway->"+sendPath+"->本地接收数据\r\n"+msg.toString());
            }
            @Override
            public void onFailure(HDLLinkCode hdlLinkCode) {
                if (callBack == null) return;
                callBack.onError(HDLLinkException.getErrorWithCode(hdlLinkCode));
//                LogUtils.i("sendDataToLinkGateway->" + sendPath + "->本地接收数据->失败(-200)");
            }
        }, true, mac).send();
    }
    /**
     * 发送数据到Link网关
     *
     * @param mac      网关mac
     * @param topic    请求主题
     * @param jObject  负载数据<没有填null></>
     * @param sendPath 发送路径<类名+方法名>class->methodName</>
     */
    public void sendDataToLinkGateway(String mac,
                                      String topic, Object jObject, String sendPath, HDLLinkCallBack callBack) {
        GatewayBean gatewayBean = this.getLocalGateway(mac);
        if (gatewayBean != null) {
            message.setCloudTopic(topic.replace("%s", gatewayBean.getGatewayId()));
        if (gatewayBean == null) {
            callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GATEWAY_FOUND_LOCALLY));
            return;
        }
        new HDLConnectHelper(ip, message, new HDLConnectHelper.HdlSocketListener() {
        String topicSend = topic.replace("%s", gatewayBean.getOid());
        //组装需要发送的数据
        String sendStr = createSendData(jObject);
//        LogUtils.i("sendDataToLinkGateway->" + sendPath + "->本地发送\r\n" + topicSend + "\r\n" + sendStr);
        LinkRequest message = new LinkRequest(topicSend, sendStr, gatewayBean.getIsLocalEncrypt());
        message.setCloudTopic(topic.replace("%s", gatewayBean.getGatewayId()));
        new HDLConnectHelper(gatewayBean.getIp_address(), message, new HDLConnectHelper.HdlSocketListener() {
            @Override
            public void onSucceed(Object msg) {
                if (callBack == null) return;