hxb
2024-08-20 0a8fd4aa92555875f58f67144c2c0c0a20a200af
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
@@ -155,21 +155,24 @@
                        LogUtils.i("网关入网广播IP: " + bean.getIPAddress());
                        if (!TextUtils.isEmpty(bean.getSlave_mac())) {
                            if (!bean.getSlave_mac().equals(request.getObjects().getDeviceMAC())) {
                                LogUtils.i("入网验证的mac和本机不一样,请求的MAC是"+bean.getSlave_mac()+" 本机的是"+request.getObjects().getDeviceMAC());
                                LogUtils.i("入网验证的mac和本机不一样,请求的MAC是" + 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());
                } catch (Exception e) {
                    LogUtils.e("入网验证异常", e.getMessage());
                }
            }
        });
@@ -196,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());
@@ -207,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());
@@ -255,19 +261,19 @@
                            String localSecret = "";
                            String gatewayId = "";
                            String ipAddress = "";
                            String homeId="";
                            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();
                                homeId = bean.getObjects().getHomeId();
                            }
                            if (ipAddress == null) {
                                ipAddress = bean.getIp_address();
                            }
                            if(!TextUtils.isEmpty(homeId)){
                            if (!TextUtils.isEmpty(homeId)) {
                                HDLLinkConfig.getInstance().setHomeId(homeId);
                            }
                            HDLLinkConfig.getInstance().setAuthBean(request.getAuth());
@@ -551,6 +557,51 @@
    }
    /**
     * 通用发送指令
     * 发送一次
     *
     * @param topic     发送数据
     * @param bodyStr   回复的主题
     * @param broadcast 是否要广播
     * @param callBack  回调
     */
    public void udpSendMsgOneTime(String topic, String bodyStr, boolean broadcast, HDLLinkResponseCallBack callBack) {
        if (TextUtils.isEmpty(topic) || TextUtils.isEmpty(bodyStr)) {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR));
            }
            return;
        }
        if (!HDLLinkConfig.getInstance().checkIfCertified()) {
            if (callBack != null) {
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR));
            }
            return;
        }
        LinkRequest message = new LinkRequest(topic, bodyStr);
        String ip = HDLLinkConfig.getInstance().getIpAddress();
        if (broadcast) {
            ip = IpUtils.getBroadcastAddress();
        }
        HdlSocketHelper.sendUdp(getUdpBoot(), ip, UDP_PORT, message,"", 1, new HdlSocketHelper.HdlSocketListener() {
                    @Override
                    public void onSucceed(Object msg) {
                        if (callBack == null) return;
                        callBack.onSuccess((LinkResponse) msg);
                    }
                    @Override
                    public void onFailure() {
                        if (callBack == null) return;
                        callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_TIMEOUT_ERROR));
                    }
                }
        );
    }
    /**
     * 通用发送指令 只发一次,不监听回复,不重发
     *
     * @param topic     发送数据