hxb
2022-02-16 845bb16392e6b47ec31147d0e7c6ddc39537f2e7
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java
@@ -3,7 +3,9 @@
import android.text.TextUtils;
import com.hdl.sdk.common.config.TopicConstant;
import com.hdl.sdk.common.utils.LogUtils;
import com.hdl.sdk.common.utils.SPUtils;
import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
import com.hdl.sdk.connect.bean.response.GatewaySearchBean;
@@ -24,10 +26,13 @@
    private boolean isLocalEncrypt;//网关是否需要加密通讯
    private GatewaySearchBean currentGateway;//当前网关
    private AuthenticateRequest.AuthenticateDeviceInfoBean deviceInfoBean;//当前设备基本信息
    /**
     * instance
     */
    private volatile static HDLLinkConfig instance;
    /**
     * getInstance
     *
@@ -62,15 +67,16 @@
    /**
     * 加载缓存
     */
    void loadConfig(){
    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);
        isLocalEncrypt = SPUtils.getBoolean(AUTHENTICATE_IS_LS_KEY, false);
    }
    /**
     * 保存配置
     *
     * @param localSecret
     * @param gatewayId
     * @param ipAddress
@@ -85,10 +91,18 @@
    }
    /**
     * 重新保存
     */
    public void reSaveConfig() {
        this.saveConfig(this.localSecret, this.gatewayId, this.ipAddress);
    }
    /**
     * 检测是否已经认证过
     *
     * @return
     */
    public boolean checkIfCertified(){
    public boolean checkIfCertified() {
        //localSecret不为空并且长度等于16 网关id不能为空
        return !TextUtils.isEmpty(localSecret)
                && localSecret.length() == 16
@@ -101,15 +115,22 @@
    }
    public String getLocalSecret() {
        LogUtils.i("HDLLinkConfig","密钥是:"+localSecret);
        return localSecret;
    }
    public String getGatewayId() {
        return gatewayId;
    }
    public void setGatewayId(String gatewayId) {
        this.gatewayId=gatewayId;
    }
    public String getIpAddress() {
        return ipAddress;
    }
    public void setIpAddress(String ipAddress){
        this.ipAddress = ipAddress;
    }
    public boolean isLocalEncrypt() {
@@ -127,29 +148,46 @@
    public void setCurrentGateway(GatewaySearchBean currentGateway) {
        this.currentGateway = currentGateway;
        if (this.currentGateway != null && !TextUtils.isEmpty(this.currentGateway.getIp_address())) {
            if (!this.ipAddress.equals(this.currentGateway.getIp_address())) {
                //如果IP地址有变化则更新
                this.ipAddress = this.currentGateway.getIp_address();
                SPUtils.put(AUTHENTICATE_IPADDRESS_KEY, ipAddress);
            }
        }
    }
    /**
     * 判断当前主题数据是否需要加密
     *
     * @param topicStr 当前主题
     * @return
     */
    public boolean ifNeedEncrypt(String topicStr){
    public boolean ifNeedEncrypt(String topicStr) {
        //过滤相关需要加密的主题
        return (!topicStr.contains(TopicConstant.GATEWAY_AUTH_BROADCAST) //网关广播入网指令
                && !topicStr.contains(TopicConstant.DEIVCE_AUTH_REQUEST) //入网认证
                && !topicStr.contains(TopicConstant.GATEWAY_SEARCH) //搜索网关主题
                && !topicStr.equals(TopicConstant.BROADCAST)
                && isLocalEncrypt//启用加密标志
        );
    }
    /**
     * 拼接网关ID获取完整的主题
     *
     * @param topicStr
     * @return
     */
    public String getFullTopic(String topicStr){
    public String getFullTopic(String topicStr) {
        return String.format(topicStr, gatewayId);
    }
    public AuthenticateRequest.AuthenticateDeviceInfoBean getDeviceInfoBean() {
        return deviceInfoBean;
    }
    public void setDeviceInfoBean(AuthenticateRequest.AuthenticateDeviceInfoBean deviceInfoBean) {
        this.deviceInfoBean = deviceInfoBean;
    }
}