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;
|
}
|
}
|