#pragma once namespace DiosCtrlBox { class ConfigurationManager { public: ConfigurationManager(); ~ConfigurationManager(); public: void Initialize(const std::string &workpath); ResDataObject &GetPositionNumberConfig(const std::string &key); ResDataObject &GetCalibrationConfig(const std::string &key); std::string GetControllerClassID(const std::string &key); BOOL GetAllMachineryConfigs(ResDataObject &out); BOOL GetAllTomoConfigs(ResDataObject &out); ResDataObject &GetTomoConfig(const std::string &key); ResDataObject &GetMachineryConfig(const std::string &key); ResDataObject &GetServoDriveConfig(const std::string &key); ResDataObject &GetExpousreDelayTimeConfig(); BOOL UpdateCalibrationConfig(const std::string &key, ResDataObject ¶ms); public: static ConfigurationManager *Instance(); private: static ConfigurationManager *m_instance; std::string GetConfigPath(const std::string &workpath); void LoadComponentControllerConfig(); void LoadPositionNumberConfig(); void LoadCalibrationConfig(); void LoadMachineryConfig(); void LoadTomoConfig(); void LoadServoDriveConfig(); void LoadExposureDelayTimeConfig(); private: std::string m_workPath; std::string m_configPath; ResDataObject m_componentController; ResDataObject m_positionNumber; ResDataObject m_machineryConfig; ResDataObject m_tomoConfig; ResDataObject m_servoDrive; ResDataObject m_motionParamCalRoot; ResDataObject m_exposureDelayTime; }; }