#pragma once #include #include #include 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; }