rk3399_arm_lvds/capimage/deviceconfig.h

65 lines
1.8 KiB
C++

#pragma once
#include <json.hpp>
#include <string>
#include <mutex>
using json = nlohmann::json;
class DeviceConfig
{
private:
const std::string ParamPath ="/usr/local/huago/deviceconfig.json";
const std::string lock_enable = "lockenable";
const std::string token_code = "tokencode";
const std::string gray_correct_enable = "graycorrectenable";
const std::string language = "Language";
public:
struct DeviceParam
{
bool is_lock;
uint32_t gray_param;
uint32_t language;
std::string token;
};
union Gray_Apply
{
struct
{
uint32_t en_200_gray : 1;
uint32_t en_200_clr : 1;
uint32_t en_300_gray : 1;
uint32_t en_300_clr : 1;
uint32_t en_600_gray : 1;
uint32_t en_600_clr : 1;
uint32_t en_slow_gray : 1;
uint32_t en_slow_clr : 1;
uint32_t en_slow_300_gray : 1;
uint32_t en_slow_300_clr : 1;
uint32_t en_long_Manuscript_200_gray : 1;
uint32_t en_long_Manuscript_200_clr : 1;
uint32_t en_long_Manuscript_300_gray : 1;
uint32_t en_long_Manuscript_300_clr : 1;
uint32_t reserved : 18;
}Param_Setting;
uint32_t value;
};
DeviceConfig(/* args */);
~DeviceConfig();
DeviceConfig::DeviceParam GetParam();
void SaveParam(DeviceConfig::DeviceParam param);
private:
json struct2json(DeviceConfig::DeviceParam param);
DeviceConfig::DeviceParam json2struct(json js);
void savejson(json js);
json getjson();
json getdefaultjson();
std::mutex m_lock;
};
extern DeviceConfig m_static_deviceconfig;
static DeviceConfig& Get_static_deviceconfig()
{
return m_static_deviceconfig;
}