7#ifndef CCF_COMMON_CONFIG_BASE_HPP_H_
8#define CCF_COMMON_CONFIG_BASE_HPP_H_
12#include <boost/program_options.hpp>
14#include <ifw/core/utils/bat/config.hpp>
19namespace bpo = boost::program_options;
71 static ifw::core::utils::bat::Config&
BatCfg();
74 const static elt::configng::CiiConfigInstanceNamespace&
CiiCfg();
87 void LoadConfig(
const std::string& filename =
"",
bool reset =
false);
90 void GetPars(std::map<std::string, std::string>& pars,
91 const std::string& pattern =
"*");
94 elt::configng::CiiConfigInstanceNode&
GetNode(
const std::vector<std::string>& names);
97 bool HasNode(
const std::vector<std::string>& names, elt::configng::CiiConfigInstanceNode& node);
100 template <
class TYPE>
101 bool HasPar(
const std::vector<std::string>& names, TYPE& value) {
102 LOG4CPLUS_TRACE_METHOD(
Logger(), __PRETTY_FUNCTION__);
103 elt::configng::CiiConfigInstanceNode node;
109 value = node.As<TYPE>();
114 bool HasPar(
const std::vector<std::string>& names);
117 template <
class TYPE>
118 TYPE
Get(
const std::vector<std::string>& names) {
119 LOG4CPLUS_TRACE_METHOD(
Logger(), __PRETTY_FUNCTION__);
121 if (!
HasPar(names, value)) {
128 template <
class TYPE>
129 void Set(
const std::vector<std::string>& names, TYPE& value) {
130 LOG4CPLUS_TRACE_METHOD(
Logger(), __PRETTY_FUNCTION__);
147 const std::string& device =
"")
const;
151 template <
class TYPE>
154 LOG4CPLUS_TRACE_METHOD(
Logger(), __PRETTY_FUNCTION__);
157 ifw::core::utils::conversion::Convert(prop.
m_value, value);
169 std::string
GetDeviceName(
const std::string& device =
"")
const;
174 const std::string& device=
"");
176 template <
class TYPE>
177 void SetDeviceProperty(
const std::string& property, TYPE value,
const std::string& device =
"") {
180 std::stringstream svalue;
183 auto it =
s_device_info[tmp_device].m_device_properties.find(property);
184 it->second.m_value= svalue.str();
187 CCFTHROW(
"Trying to set non existing property");
195 bpo::variables_map m_options_map;
#define CCFTHROW(msg)
Definition base.hpp:399
Base()
Definition base.cpp:121
~Config()
Definition config.cpp:37
void GetDeviceProperties(std::map< std::string, DeviceProperty > &device_properties, const std::string &device="") const
Get device properties.
Definition config.cpp:338
static const elt::configng::CiiConfigInstanceNamespace & CiiCfg()
Return reference to internal CII Configuration namespace object.
Definition config.cpp:29
bool HasDeviceProperty(const std::string &name, TYPE &value, const std::string &device="")
Definition config.hpp:153
void GetPars(std::map< std::string, std::string > &pars, const std::string &pattern="*")
Return map with all parameters in the object. Staging pars take precedence.
Definition config.cpp:376
void SetLogProperties(const std::string &filename)
Set the log properties file.
Definition config.cpp:121
TYPE Get(const std::vector< std::string > &names)
Get a parameter value from the configuration.
Definition config.hpp:118
bool ParseOptions(int argc, char *argv[])
Parse command line options.
Definition config.cpp:41
virtual uint32_t GetMaxFrameSizeUser(const std::string &device="")
Definition config.cpp:312
static std::map< std::string, DeviceInfo > s_device_info
Definition config.hpp:65
static ifw::core::utils::bat::Config & BatCfg()
Return reference to internal BAT configuration object.
Definition config.cpp:25
const bpo::variables_map & GetOptions() const
Return map with command line options.
Definition config.cpp:350
static std::vector< std::string > s_devices
Definition config.hpp:62
const DeviceInfo & GetDeviceInfo(const std::string &device="") const
Return reference to Device Info structure.
Definition config.cpp:345
void LoadConfig(const std::string &filename="", bool reset=false)
Load the configuration file.
Definition config.cpp:139
elt::configng::CiiConfigInstanceNode & GetNode(const std::vector< std::string > &names)
Get the reference to a specific node in the CII Cfg Service namespace.
Definition config.cpp:252
uint32_t GetMaxFrameSize(const std::string &device="")
Return the maximum frame size in bytes with the associated camera/configuration.
Definition config.cpp:291
static ifw::core::utils::bat::Config s_bat_cfg
Definition config.hpp:59
Config()
Definition config.cpp:33
bool HasNode(const std::vector< std::string > &names, elt::configng::CiiConfigInstanceNode &node)
Probe if a given node is defined. If yes, return the reference to the node.
Definition config.cpp:274
void SetDeviceProperty(const std::string &property, TYPE value, const std::string &device="")
Definition config.hpp:177
bool HasPar(const std::vector< std::string > &names, TYPE &value)
Probe if a given key is defined. Set the value variable if found and return true.
Definition config.hpp:101
static Config * s_instance
Definition config.hpp:57
static Config & Instance()
Return reference to unique instance of the configuration class.
Definition config.cpp:14
std::string GetDeviceName(const std::string &device="") const
Return name of a specific device. If "" is given the first (maybe only) device defined,...
Definition config.cpp:296
void Set(const std::vector< std::string > &names, TYPE &value)
Set the value of a parameter in the CII Cfg Service namespace.
Definition config.hpp:129
Definition appBase.cpp:10
ifw::ccf::common::Config & GetCfg()
Return reference to the singleton instance of the configuration.
Definition config.hpp:199
log4cplus::Logger & Logger()
Definition base.cpp:24
std::string BuildKey(const std::vector< std::string > &elements)
Build a concatenated key from a number of elements (<el1>.<el2.>...).
Definition base.cpp:241
std::string m_id
Definition config.hpp:37
std::string m_type
Definition config.hpp:38
int8_t m_max_resolution
Definition config.hpp:43
int16_t m_width
Definition config.hpp:41
int8_t m_resolution
Definition config.hpp:44
std::string m_sdk
Definition config.hpp:48
std::string m_sim_address
Definition config.hpp:50
int16_t m_height
Definition config.hpp:42
std::string ToString() const
Definition config.cpp:355
std::string m_data_type
Definition config.hpp:45
std::string m_mapping
Definition config.hpp:47
std::string m_protocol
Definition config.hpp:46
std::string m_model
Definition config.hpp:39
std::string m_name
Definition config.hpp:36
std::map< std::string, DeviceProperty > m_device_properties
Definition config.hpp:51
std::string m_manufacturer
Definition config.hpp:40
std::string m_address
Definition config.hpp:49
std::string m_name
Definition config.hpp:28
std::string ToString() const
Definition config.cpp:371
bool m_write_on_init
Definition config.hpp:30
std::string m_value
Definition config.hpp:29