package com.hdl.sdk.link.core.config; import com.hdl.sdk.link.common.utils.LogUtils; import com.hdl.sdk.link.common.utils.SPUtils; import com.hdl.sdk.link.core.bean.request.AuthenticateRequest; import com.hdl.sdk.link.core.bean.response.GatewaySearchBean; import androidx.annotation.NonNull; /** * Created by jlchen on 11/11/21. * * @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 final String AUTHENTICATE_IS_CLOUD_ENCRYPT_KEY = "cloud_isencrypt_key"; private static final String AUTHENTICATE_CLOUD_ENCRYPT_KEY = "cloud_encrypt_key"; private static final String HOME_ID="home_id"; private String localSecret;//本地加密密钥 private String gatewayId; private String ipAddress; private boolean isLocalEncrypt;//网关是否需要加密通讯 private String homeId; private GatewaySearchBean currentGateway;//当前网关 private String aesKey; //云端网关是否加密 private boolean isCloudEncrypt = true; private AuthenticateRequest.AuthenticateDeviceInfoBean deviceInfoBean;//当前设备基本信息 /** * instance */ private volatile static HDLLinkConfig instance; /** * getInstance * * @return AuthenticateConfig */ public static synchronized HDLLinkConfig getInstance() { if (instance == null) { synchronized (HDLLinkConfig.class) { if (instance == null) { instance = new HDLLinkConfig(); instance.loadConfig(); } } } return instance; } /** * 清空缓存 */ public void clearConfig() { this.gatewayId = ""; this.ipAddress = ""; this.localSecret = ""; this.isLocalEncrypt = false; this.homeId=""; SPUtils.remove(AUTHENTICATE_LS_KEY); SPUtils.remove(AUTHENTICATE_GATEWAYID_KEY); SPUtils.remove(AUTHENTICATE_IPADDRESS_KEY); SPUtils.remove(AUTHENTICATE_IS_LS_KEY); SPUtils.remove(HOME_ID); } /** * 加载缓存 */ 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); isCloudEncrypt = SPUtils.getBoolean(AUTHENTICATE_IS_CLOUD_ENCRYPT_KEY, false); aesKey = SPUtils.getString(AUTHENTICATE_CLOUD_ENCRYPT_KEY, ""); homeId=SPUtils.getString(HOME_ID, ""); } /** * 保存配置 * * @param localSecret * @param gatewayId * @param ipAddress */ public void saveConfig(String localSecret, String gatewayId, String ipAddress) { 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); } /** * 重新保存 */ public void reSaveConfig() { this.saveConfig(this.localSecret, this.gatewayId, this.ipAddress); } public String getAesKey() { return aesKey == null ? "" : aesKey; } public void setAesKey(@NonNull String aesKey) { this.aesKey = aesKey; SPUtils.put(AUTHENTICATE_CLOUD_ENCRYPT_KEY, aesKey); } public boolean isCloudEncrypt() { return isCloudEncrypt; } public void setCloudEncrypt(@NonNull boolean cloudEncrypt) { isCloudEncrypt = cloudEncrypt; SPUtils.put(AUTHENTICATE_IS_CLOUD_ENCRYPT_KEY, cloudEncrypt); } /** * 检测是否已经认证过 * * @return */ public boolean checkIfCertified() { //localSecret不为空并且长度等于16 网关id不能为空 return true;//!TextUtils.isEmpty(localSecret) //&& localSecret.length() == 16 //&& !TextUtils.isEmpty(gatewayId); } public void setLocalSecret(String localSecret) { this.localSecret = localSecret; SPUtils.put(AUTHENTICATE_LS_KEY, localSecret); } public String getLocalSecret() { return localSecret; } /** * 当前住宅网关Id,oid,mac * @return */ public String getGatewayId() { return gatewayId; } /** * 当前住宅网关Id * @param gatewayId */ public void setGatewayId(String gatewayId) { this.gatewayId= gatewayId; } public String getHomeId() { return homeId; } public void setHomeId(String homeId) { this.homeId = homeId; } public String getIpAddress() { return ipAddress; } public void setIpAddress(String ipAddress){ this.ipAddress = ipAddress; } public boolean isLocalEncrypt() { return isLocalEncrypt; } public void setLocalEncrypt(boolean localEncrypt) { isLocalEncrypt = localEncrypt; SPUtils.put(AUTHENTICATE_IS_LS_KEY, isLocalEncrypt); } /** * 拼接网关ID获取完整的主题 * * @param topicStr * @return */ 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; } }