103 lines
2.0 KiB
C++
103 lines
2.0 KiB
C++
#include "deviceconfig.h"
|
|
#include <fstream>
|
|
#include <iomanip>
|
|
#include <sys/stat.h>
|
|
#include "commondef.h"
|
|
#include <unistd.h>
|
|
|
|
DeviceConfig::DeviceConfig()
|
|
{
|
|
|
|
}
|
|
|
|
DeviceConfig::~DeviceConfig()
|
|
{
|
|
|
|
}
|
|
|
|
DeviceConfig::DeviceParam DeviceConfig::GetParam()
|
|
{
|
|
std::lock_guard<std::mutex> lc(m_lock);
|
|
json tmp = getjson();
|
|
return json2struct(tmp);
|
|
}
|
|
|
|
void DeviceConfig::SaveParam(DeviceConfig::DeviceParam param)
|
|
{
|
|
std::lock_guard<std::mutex> lc(m_lock);
|
|
auto tmp = struct2json(param);
|
|
savejson(tmp);
|
|
}
|
|
|
|
json DeviceConfig::struct2json(DeviceConfig::DeviceParam param)
|
|
{
|
|
json js;
|
|
js[token_code] = param.token;
|
|
js[lock_enable] = param.is_lock;
|
|
return js;
|
|
}
|
|
|
|
DeviceConfig::DeviceParam DeviceConfig::json2struct(json js)
|
|
{
|
|
DeviceConfig::DeviceParam param;
|
|
if(js[lock_enable].is_boolean())
|
|
param.is_lock = js[lock_enable];
|
|
else
|
|
param.is_lock = false;
|
|
if(js[token_code].is_string())
|
|
param.token = js[token_code];
|
|
else
|
|
param.token = "null";
|
|
return param;
|
|
}
|
|
|
|
json DeviceConfig::getdefaultjson()
|
|
{
|
|
json m_json;
|
|
m_json[lock_enable] = false;
|
|
m_json[token_code] = "null";
|
|
return m_json;
|
|
}
|
|
|
|
void DeviceConfig::savejson(json js)
|
|
{
|
|
//std::lock_guard<std::mutex> lc(m_lock);
|
|
std::ofstream o(ParamPath);
|
|
o << std::setw(4) << js <<std::endl;
|
|
o.flush();
|
|
o.close();
|
|
}
|
|
|
|
|
|
json DeviceConfig::getjson()
|
|
{
|
|
if(access(JSON_CORRECTDIR_PATH,0) == -1)
|
|
{
|
|
auto ret = mkdir(JSON_CORRECTDIR_PATH, 0777);
|
|
if (ret != 0)
|
|
{
|
|
printf("make dir failed .path=%s \n", JSON_CORRECTDIR_PATH);
|
|
}
|
|
}
|
|
if (access(ParamPath.c_str(), F_OK) != 0)
|
|
{
|
|
auto cfs = getdefaultjson();
|
|
savejson(cfs);
|
|
return cfs;
|
|
}
|
|
std::ifstream i(ParamPath);
|
|
auto pos = i.tellg();
|
|
i.seekg(0, std::ios::end);
|
|
if (i.tellg() <= 2)
|
|
{
|
|
auto cfs = getdefaultjson();
|
|
savejson(cfs);
|
|
return cfs;
|
|
}
|
|
i.seekg(pos);
|
|
json m_json;
|
|
i >> m_json;
|
|
i.close();
|
|
return m_json;
|
|
}
|