ifw-fgf 2.0.0
 
Loading...
Searching...
No Matches
config.hpp
Go to the documentation of this file.
1
6
7#ifndef DCS_ANDOR_CONFIG_HPP_H_
8#define DCS_ANDOR_CONFIG_HPP_H_
9
10#include <yaml-cpp/yaml.h>
11#include <optional>
12
13namespace ifw::fgf::andor {
14
15 constexpr auto NODE_CAMERA = "Camera";
16 constexpr auto NODE_SERVER = "Server";
17
18 constexpr auto FEATURE_SENSOR_COOLING = "SensorCooling";
19 constexpr auto FEATURE_TEMPERATURE_CTRL = "TemperatureControl";
20 constexpr auto FEATURE_FAN_SPEED = "FanSpeed";
21 constexpr auto FEATURE_PIXEL_ENCODING = "PixelEncoding";
22 constexpr auto FEATURE_ELECTRONIC_SHUTTERING_MODE = "ElectronicShutteringMode";
23 constexpr auto FEATURE_GAIN_MODE = "GainMode";
24 constexpr auto FEATURE_METADATA_ENABLE = "MetadataEnable";
25 constexpr auto FEATURE_TRIGGER_MODE = "TriggerMode";
26 constexpr auto FEATURE_OVERLAP = "Overlap";
27 constexpr auto FEATURE_PIXEL_READOUT_RATE = "PixelReadoutRate";
28 constexpr auto FEATURE_AOI_HBIN = "Binx";
29 constexpr auto FEATURE_AOI_VBIN = "Biny";
30 constexpr auto FEATURE_AOI_WIDTH = "Width";
31 constexpr auto FEATURE_AOI_HEIGHT = "Height";
32 constexpr auto FEATURE_AOI_LEFT = "Offsetx";
33 constexpr auto FEATURE_AOI_TOP = "Offsety";
34
35
36 void CopyYaml( const YAML::Node& src, YAML::Node& dst );
37 YAML::Node MergeNodes( const YAML::Node& a, const YAML::Node& b );
38
50 class Config {
51 public:
52
53
61 Config();
62
63
71 void LoadConfig(const std::string& filename = "", bool reset = false) ;
72
87 template<typename T>
88 std::optional<T> GetCameraFeature(const char* param);
89
104 template<typename T>
105 std::optional<T> GetServerConfiguration(const char* param);
106
114 const std::string GetConfigAsString() const;
115
116
117 protected:
119 YAML::Node m_config_node;
120
121 private:
122 Config(const Config&) = delete;
123 Config& operator=(const Config&) = delete;
124
125 private:
126
127 log4cplus::Logger m_logger;
129 YAML::Node m_default_node;
131 std::string m_config_filename;
132
133 };
134
135 template<typename T>
136 std::optional<T> Config::GetCameraFeature(const char* param) {
137 if (m_config_node[NODE_CAMERA][param]) {
138 return m_config_node[NODE_CAMERA][param].as<T>();
139 }
140 return std::nullopt; // same as return { };
141 }
142
143 template<typename T>
144 std::optional<T> Config::GetServerConfiguration(const char* param) {
145 if (m_config_node[NODE_SERVER][param]) {
146 return m_config_node[NODE_SERVER][param].as<T>();
147 }
148 return std::nullopt; // same as return { };
149 }
150
151 }
152
153#endif // DCS_ANDOR_CONFIG_HPP_H_
const std::string GetConfigAsString() const
: Get configuration as string
Definition config.cpp:130
void LoadConfig(const std::string &filename="", bool reset=false)
Definition config.cpp:91
YAML::Node m_config_node
YAML node storing the actual configuration.
Definition config.hpp:119
std::optional< T > GetServerConfiguration(const char *param)
: Get a server configuration parameters
Definition config.hpp:144
std::optional< T > GetCameraFeature(const char *param)
: Get a camera feature configuration
Definition config.hpp:136
Config()
Definition config.cpp:69
Definition commAdaptor.cpp:34
constexpr auto NODE_CAMERA
Definition config.hpp:15
constexpr auto FEATURE_FAN_SPEED
Definition config.hpp:20
constexpr auto FEATURE_PIXEL_READOUT_RATE
Definition config.hpp:27
constexpr auto FEATURE_PIXEL_ENCODING
Definition config.hpp:21
constexpr auto FEATURE_AOI_VBIN
Definition config.hpp:29
constexpr auto FEATURE_OVERLAP
Definition config.hpp:26
constexpr auto NODE_SERVER
Definition config.hpp:16
constexpr auto FEATURE_TEMPERATURE_CTRL
Definition config.hpp:19
constexpr auto FEATURE_SENSOR_COOLING
Definition config.hpp:18
void CopyYaml(const YAML::Node &src, YAML::Node &dst)
Definition config.cpp:23
constexpr auto FEATURE_TRIGGER_MODE
Definition config.hpp:25
constexpr auto FEATURE_METADATA_ENABLE
Definition config.hpp:24
constexpr auto FEATURE_ELECTRONIC_SHUTTERING_MODE
Definition config.hpp:22
constexpr auto FEATURE_AOI_LEFT
Definition config.hpp:32
YAML::Node MergeNodes(const YAML::Node &a, const YAML::Node &b)
Definition config.cpp:38
constexpr auto FEATURE_AOI_HEIGHT
Definition config.hpp:31
constexpr auto FEATURE_AOI_WIDTH
Definition config.hpp:30
constexpr auto FEATURE_AOI_TOP
Definition config.hpp:33
constexpr auto FEATURE_AOI_HBIN
Definition config.hpp:28
constexpr auto FEATURE_GAIN_MODE
Definition config.hpp:23