562935844@qq.com
2022-05-13 a3f9e5ce8dce3d86a60a79b85ce44424a612c6fa
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java
@@ -1,48 +1,44 @@
package com.hdl.sdk.connect.config;
import android.text.TextUtils;
import com.hdl.sdk.common.config.TopicConstant;
import com.hdl.sdk.common.utils.SPUtils;
import com.hdl.sdk.common.utils.TextUtils;
import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
import com.hdl.sdk.connect.bean.response.GatewaySearchBean;
/**
 * Created by jlchen on 11/11/21.
 * Modify by panlili on 5/7/22
 *
 * @Description : HDLLinkConfig
 */
public class HDLLinkConfig {
    private static final String AUTHENTICATE_LS_KEY = "auth_ls_key";
    private static final String AUTHENTICATE_GATEWAYID_KEY = "auth_gatewayid_key";
    private static final String AUTHENTICATE_IPADDRESS_KEY = "auth_ipaddress_key";
    private static final String AUTHENTICATE_IS_LS_KEY = "auth_isls_key";
    private static String AUTHENTICATE_LS_KEY = "";
    private static String AUTHENTICATE_GATEWAYID_KEY = "";
    private static String AUTHENTICATE_IPADDRESS_KEY = "";
    private String localSecret;//本地加密密钥
    private String gatewayId;
    private String ipAddress;
    private boolean isLocalEncrypt;//网关是否需要加密通讯
    private GatewaySearchBean currentGateway;//当前网关
    private AuthenticateRequest.AuthenticateDeviceInfoBean deviceInfoBean;//当前设备基本信息
    /**
     * instance
     */
    private volatile static HDLLinkConfig instance;
    private static final HDLLinkConfig instance = new HDLLinkConfig();
    private HDLLinkConfig() {
        loadConfig();
    }
    /**
     * getInstance
     *
     * @return AuthenticateConfig
     */
    public static synchronized HDLLinkConfig getInstance() {
        if (instance == null) {
            synchronized (HDLLinkConfig.class) {
                if (instance == null) {
                    instance = new HDLLinkConfig();
                    instance.loadConfig();
                }
            }
        }
    public static HDLLinkConfig getInstance() {
        return instance;
    }
@@ -53,21 +49,15 @@
        this.gatewayId = "";
        this.ipAddress = "";
        this.localSecret = "";
        this.isLocalEncrypt = false;
        SPUtils.remove(AUTHENTICATE_LS_KEY);
        SPUtils.remove(AUTHENTICATE_GATEWAYID_KEY);
        SPUtils.remove(AUTHENTICATE_IPADDRESS_KEY);
        SPUtils.remove(AUTHENTICATE_IS_LS_KEY);
    }
    /**
     * 加载缓存
     */
    void loadConfig() {
        localSecret = SPUtils.getString(AUTHENTICATE_LS_KEY, "");
        gatewayId = SPUtils.getString(AUTHENTICATE_GATEWAYID_KEY, "");
        ipAddress = SPUtils.getString(AUTHENTICATE_IPADDRESS_KEY, "");
        isLocalEncrypt = SPUtils.getBoolean(AUTHENTICATE_IS_LS_KEY, false);
        localSecret = AUTHENTICATE_LS_KEY;
        gatewayId = AUTHENTICATE_GATEWAYID_KEY;
        ipAddress = AUTHENTICATE_IPADDRESS_KEY;
    }
    /**
@@ -81,9 +71,16 @@
        this.localSecret = localSecret;
        this.gatewayId = gatewayId;
        this.ipAddress = ipAddress;
        SPUtils.put(AUTHENTICATE_LS_KEY, localSecret);
        SPUtils.put(AUTHENTICATE_GATEWAYID_KEY, gatewayId);
        SPUtils.put(AUTHENTICATE_IPADDRESS_KEY, ipAddress);
        AUTHENTICATE_LS_KEY = localSecret;
        AUTHENTICATE_GATEWAYID_KEY = gatewayId;
        AUTHENTICATE_IPADDRESS_KEY = ipAddress;
    }
    /**
     * 重新保存
     */
    public void reSaveConfig() {
        this.saveConfig(this.localSecret, this.gatewayId, this.ipAddress);
    }
    /**
@@ -100,7 +97,7 @@
    public void setLocalSecret(String localSecret) {
        this.localSecret = localSecret;
        SPUtils.put(AUTHENTICATE_LS_KEY, localSecret);
        AUTHENTICATE_LS_KEY = localSecret;
    }
    public String getLocalSecret() {
@@ -111,17 +108,16 @@
        return gatewayId;
    }
    public void setGatewayId(String gatewayId) {
        this.gatewayId = gatewayId;
    }
    public String getIpAddress() {
        return ipAddress;
    }
    public boolean isLocalEncrypt() {
        return isLocalEncrypt;
    }
    public void setLocalEncrypt(boolean localEncrypt) {
        isLocalEncrypt = localEncrypt;
        SPUtils.put(AUTHENTICATE_IS_LS_KEY, isLocalEncrypt);
    public void setIpAddress(String ipAddress) {
        this.ipAddress = ipAddress;
    }
    public GatewaySearchBean getCurrentGateway() {
@@ -134,7 +130,7 @@
            if (!this.ipAddress.equals(this.currentGateway.getIp_address())) {
                //如果IP地址有变化则更新
                this.ipAddress = this.currentGateway.getIp_address();
                SPUtils.put(AUTHENTICATE_IPADDRESS_KEY, ipAddress);
                AUTHENTICATE_IPADDRESS_KEY = ipAddress;
            }
        }
    }
@@ -150,7 +146,8 @@
        return (!topicStr.contains(TopicConstant.GATEWAY_AUTH_BROADCAST) //网关广播入网指令
                && !topicStr.contains(TopicConstant.DEIVCE_AUTH_REQUEST) //入网认证
                && !topicStr.contains(TopicConstant.GATEWAY_SEARCH) //搜索网关主题
                && isLocalEncrypt//启用加密标志
                && !topicStr.contains(TopicConstant.BROADCAST)
                && !TextUtils.isEmpty(localSecret) //有密钥就是加密
        );
    }
@@ -164,4 +161,11 @@
        return String.format(topicStr, gatewayId);
    }
    public AuthenticateRequest.AuthenticateDeviceInfoBean getDeviceInfoBean() {
        return deviceInfoBean;
    }
    public void setDeviceInfoBean(AuthenticateRequest.AuthenticateDeviceInfoBean deviceInfoBean) {
        this.deviceInfoBean = deviceInfoBean;
    }
}