ifw-fcf  4.1.0-pre2
deviceConfig.hpp
Go to the documentation of this file.
1 
9 #ifndef FCF_DEVMGR_COMMON_DEVICECONFIG_HPP_
10 #define FCF_DEVMGR_COMMON_DEVICECONFIG_HPP_
11 
12 // System headers
13 #include <string>
14 #include <unordered_map>
15 
16 // Third party headers
17 #include <yaml-cpp/yaml.h>
18 
19 #include <utils/bat/logger.hpp>
20 #include <utils/bat/config.hpp>
21 #include <fcf/common/iComm.hpp>
24 
25 // New CII Config Service
26 #include <config-ng/ciiConfigApi.hpp>
27 
28 namespace fcf {
29  namespace devmgr {
30  namespace common {
31 
32  // Constants for common configuration
33  constexpr auto CI_IDENTIFIER = "identifier";
34  constexpr auto CI_SIMULATED = "simulated";
35  constexpr auto CI_IGNORED = "ignored";
36  constexpr auto CI_ADDRESS = "dev_endpoint";
37  constexpr auto CI_SIM_ADDRESS = "sim_endpoint";
38  constexpr auto CI_TYPE = "type";
39  constexpr auto CI_PREFIX = "prefix";
40  constexpr auto CI_NAME = "name";
41  constexpr auto CI_NAMESPACE = "namespace";
42  constexpr auto CI_MAP_FILE = "mapfile";
43  constexpr auto CI_FITS_PREFIX = "fits_prefix";
44  constexpr auto CI_ALIAS = "alias";
45  constexpr auto CI_ID = "id";
46  constexpr auto CI_OVERVIEW = "overview";
47  constexpr auto CI_DESCRIPTION = "description";
48  constexpr auto CI_CFG_FILE = "cfgfile";
49  constexpr auto CI_CTRL_CONFIG = "ctrl_config";
50  constexpr auto CI_WIDGET = "widget";
51  constexpr auto CI_WIDGET_MODULE = "module";
52  constexpr auto CI_WIDGET_CLASS = "class";
53  constexpr auto CI_WIDGET_WIDGET = "widget";
54  constexpr auto CI_WIDGET_HEIGHT = "height";
55 
56 
57  // Constants for common RPC calls
58  constexpr auto RPC_INIT = "rpcInit";
59  constexpr auto RPC_ENABLE = "rpcEnable";
60  constexpr auto RPC_DISABLE = "rpcDisable";
61  constexpr auto RPC_STOP = "rpcStop";
62  constexpr auto RPC_RESET = "rpcReset";
63 
64  // Constants for common status attributes
65  constexpr auto CI_STAT_SUBSTATE = "substate";
66  constexpr auto CI_STAT_STATE = "state";
67  constexpr auto CI_STAT_STATU = "status";
68  constexpr auto CI_STAT_LOCAL = "local";
69  constexpr auto CI_STAT_ERROR_CODE = "error_code";
70  constexpr auto CI_STAT_ERROR_STR = "error_str";
71  constexpr auto DB_CONTROLLER_PREFIX = "lcs";
72 
73  // Constants for address categories
74  constexpr auto CAT_STAT = "stat";
75  constexpr auto CAT_CFG = "cfg";
76  constexpr auto CAT_CTRL = "ctrl";
77  constexpr auto CAT_RPC = "rpc";
78 
79  // Constants for state values
80  constexpr int STATE_NOT_OPERATIONAL = 1;
81  constexpr int STATE_OPERATIONAL = 2;
82 
83  constexpr auto STATE_NOT_OPERATIONAL_STR = "NotOperational";
84  constexpr auto STATE_OPERATIONAL_STR = "Operational";
85  constexpr auto STATE_UNAVAILABLE_STR = "Unavailable";
86 
87  const std::unordered_map<short, std::string> StateMap = {
90  };
91 
92  const std::unordered_map<std::string, short> StateStrMap = {
95  };
96 
97  // Constants for substate values
98  constexpr int SUBSTATE_NOTREADY = 100;
99  constexpr int SUBSTATE_READY = 101;
100  constexpr int SUBSTATE_INITIALISING = 102;
101  constexpr int SUBSTATE_ERROR = 199;
102 
103  constexpr auto SUBSTATE_NOTREADY_STR = "NotReady";
104  constexpr auto SUBSTATE_INITIALISING_STR = "Initialising";
105  constexpr auto SUBSTATE_READY_STR = "Ready";
106  constexpr auto SUBSTATE_ERROR_STR = "Error";
107 
108  constexpr int SUBSTATE_OP_DISABLING = 205;
109  constexpr int SUBSTATE_OP_ERROR = 299;
110 
111  constexpr auto SUBSTATE_OP_DISABLING_STR = "Disabling";
112  constexpr auto SUBSTATE_OP_ERROR_STR = "OpError";
113 
114  constexpr auto FITS_PARAM_ID = "ID";
115  constexpr auto FITS_PARAM_NAME = "NAME";
116  constexpr auto FITS_PARAM_STAT = "STAT";
117  constexpr auto FITS_PARAM_DEVSIM = "DEVSIM";
118  constexpr auto FITS_PARAM_DEVIGN = "DEVIGN";
119 
127  class DeviceConfig : public IDeviceConfig {
128 
129  public:
135  DeviceConfig(const std::string& filename, const std::string& name);
136 
144  DeviceConfig(const std::string& name);
145 
149  virtual ~DeviceConfig();
150 
155  bool Init();
156 
167  void InitFromString(std::string config);
168 
180  void InitFromFile(const std::string& filename);
181 
195  virtual void GetConfig(fcf::common::VectorVariant& params) const;
196 
201  std::string GetIdentifier() const;
202 
206  std::string GetPrefix() const;
207 
212  std::string GetAddress() const ;
213 
214  /*
215  *
216  * @return device simulation address
217  */
218  std::string GetSimAddress() const;
219 
224  std::string GetFitsPrefix() const;
225 
226 
230  std::string GetType() const;
231 
236  int GetNamespace() const;
237 
242  std::string GetAlias() const;
243 
248  std::string GetId() const;
249 
254  std::string GetOverview() const;
255 
260  std::string GetDescription() const;
261 
266  inline std::string GetName() const noexcept {return m_name;};
267 
272  inline std::string GetLogName() const noexcept {
273  const string name = "[" + m_name + "]";
274  return name;
275  };
276 
285  std::string GetNodeId(const std::string& attrib) const;
286 
297  std::string GetProcId(const std::string& attrib) const;
298 
308  std::string GetObjId() const;
309 
319  virtual void GetConfigList(utils::bat::DbVector& cfg_list, std::string prefix) const;
320 
325  std::string GetCfgFile() const;
326 
331  std::string GetCfgAsString() const;
332 
333 
338  virtual void SetSimulateFlag(const bool flag);
339 
344  virtual void SetIgnoreFlag(const bool flag);
345 
350  virtual bool GetIgnored() const;
351 
356  virtual bool GetSimulated() const;
357 
362  virtual std::string GetMapFile() const;
363 
369  void CheckConfig() const;
370 
371  protected:
379  void MergeConfig(const elt::configng::CiiConfigDocument &doc, bool check=true);
380 
381 
382 
396  bool GetVariantValue(const elt::configng::CiiConfigInstanceNode node,
397  fcf::common::Variant& value) const;
398 
399  protected:
400  // All configuration parameters related to the LCS are stored in
401  // dedicated STL maps to make them easilly accessible when downloading
402  // the configuration to the LCS.
403 
404  std::string m_filename;
405  std::string m_name;
406  std::string m_identifier;
407  std::string m_type;
408  std::string m_fits_prefix;
410  bool m_ignored;
411  std::string m_lcs_prefix;
412  std::string m_address;
413  std::string m_sim_address;
414  std::string m_map_file;
415  std::string m_alias;
417 
419  std::unique_ptr<elt::configng::CiiConfigDocument> m_config_doc;
420 
421  private:
422  log4cplus::Logger m_logger;
423 
424  };
425 
426  }
427  }
428 }
429 
430 
431 #endif //FCF_DEVMGR_COMMON_DEVICECONFIG_HPP_
fcf::devmgr::common::DeviceConfig::m_lcs_namespace
int m_lcs_namespace
Definition: deviceConfig.hpp:416
fcf::devmgr::common::DeviceConfig::GetConfigList
virtual void GetConfigList(utils::bat::DbVector &cfg_list, std::string prefix) const
Get configuration list.
Definition: deviceConfig.cpp:341
fcf::devmgr::common::CI_DESCRIPTION
constexpr auto CI_DESCRIPTION
Definition: deviceConfig.hpp:47
fcf::devmgr::common::DeviceConfig::m_ignored
bool m_ignored
Definition: deviceConfig.hpp:410
fcf::devmgr::common::DeviceConfig::GetOverview
std::string GetOverview() const
Definition: deviceConfig.cpp:304
fcf::devmgr::common::DeviceConfig::GetVariantValue
bool GetVariantValue(const elt::configng::CiiConfigInstanceNode node, fcf::common::Variant &value) const
Obtain the variant value with the correct type.
Definition: deviceConfig.cpp:454
fcf::devmgr::common::DeviceConfig::GetName
std::string GetName() const noexcept
Definition: deviceConfig.hpp:266
fcf::devmgr::common::FITS_PARAM_NAME
constexpr auto FITS_PARAM_NAME
Definition: deviceConfig.hpp:115
fcf::devmgr::common::DeviceConfig::GetIdentifier
std::string GetIdentifier() const
Definition: deviceConfig.cpp:227
fcf::devmgr::common::DeviceConfig::GetNodeId
std::string GetNodeId(const std::string &attrib) const
Get node id.
Definition: deviceConfig.cpp:316
fcf::devmgr::common::DeviceConfig::m_filename
std::string m_filename
filename of device configuration file
Definition: deviceConfig.hpp:404
fcf::devmgr::common::STATE_OPERATIONAL
constexpr int STATE_OPERATIONAL
Definition: deviceConfig.hpp:81
fcf::devmgr::common::CI_WIDGET_HEIGHT
constexpr auto CI_WIDGET_HEIGHT
Definition: deviceConfig.hpp:54
fcf::devmgr::common::DeviceConfig::GetFitsPrefix
std::string GetFitsPrefix() const
Get Fits Prefix.
Definition: deviceConfig.cpp:277
fcf::devmgr::common::CI_TYPE
constexpr auto CI_TYPE
Definition: deviceConfig.hpp:38
fcf::devmgr::common::DeviceConfig::GetObjId
std::string GetObjId() const
Get object id.
Definition: deviceConfig.cpp:334
fcf::devmgr::common::DB_CONTROLLER_PREFIX
constexpr auto DB_CONTROLLER_PREFIX
Definition: deviceConfig.hpp:71
fcf::devmgr::common::CAT_RPC
constexpr auto CAT_RPC
Definition: deviceConfig.hpp:77
fcf::devmgr::common::DeviceConfig::MergeConfig
void MergeConfig(const elt::configng::CiiConfigDocument &doc, bool check=true)
Merges a configuration file.
Definition: deviceConfig.cpp:133
fcf::devmgr::common::DeviceConfig::GetIgnored
virtual bool GetIgnored() const
Get ignored flag.
Definition: deviceConfig.cpp:265
fcf::devmgr::common::DeviceConfig::m_config_doc
std::unique_ptr< elt::configng::CiiConfigDocument > m_config_doc
Internal configuration document object.
Definition: deviceConfig.hpp:419
fcf::devmgr::common::CI_STAT_ERROR_CODE
constexpr auto CI_STAT_ERROR_CODE
Definition: deviceConfig.hpp:69
fcf::devmgr::common::CI_ADDRESS
constexpr auto CI_ADDRESS
Definition: deviceConfig.hpp:36
fcf::devmgr::common::CI_CFG_FILE
constexpr auto CI_CFG_FILE
Definition: deviceConfig.hpp:48
fcf::devmgr::common::DeviceConfig::GetSimulated
virtual bool GetSimulated() const
Get simulated flag.
Definition: deviceConfig.cpp:256
fcf::devmgr::common::DeviceConfig::m_identifier
std::string m_identifier
Address space identifier.
Definition: deviceConfig.hpp:406
fcf::devmgr::common::SUBSTATE_OP_DISABLING_STR
constexpr auto SUBSTATE_OP_DISABLING_STR
Definition: deviceConfig.hpp:111
const
std::string const
Definition: test{{cookiecutter.device_name|capitalize()}}.cpp:162
fcf::devmgr::common::DeviceConfig::GetMapFile
virtual std::string GetMapFile() const
Get name of the device mapping file.
Definition: deviceConfig.cpp:446
fcf::devmgr::common::STATE_NOT_OPERATIONAL_STR
constexpr auto STATE_NOT_OPERATIONAL_STR
Definition: deviceConfig.hpp:83
fcf::devmgr::common::StateStrMap
const std::unordered_map< std::string, short > StateStrMap
Definition: deviceConfig.hpp:92
fcf::devmgr::common::DeviceConfig::SetSimulateFlag
virtual void SetSimulateFlag(const bool flag)
Set simulation flag.
Definition: deviceConfig.cpp:435
fcf::devmgr::common::CI_STAT_STATE
constexpr auto CI_STAT_STATE
Definition: deviceConfig.hpp:66
fcf::devmgr::common::CI_STAT_LOCAL
constexpr auto CI_STAT_LOCAL
Definition: deviceConfig.hpp:68
fcf::devmgr::common::CI_WIDGET
constexpr auto CI_WIDGET
Definition: deviceConfig.hpp:50
fcf::devmgr::common::CI_IGNORED
constexpr auto CI_IGNORED
Definition: deviceConfig.hpp:35
fcf::devmgr::common::CI_FITS_PREFIX
constexpr auto CI_FITS_PREFIX
Definition: deviceConfig.hpp:43
fcf::devmgr::common::CI_NAMESPACE
constexpr auto CI_NAMESPACE
Definition: deviceConfig.hpp:41
fcf::devmgr::common::DeviceConfig::GetSimAddress
std::string GetSimAddress() const
Definition: deviceConfig.cpp:249
fcf::devmgr::common::DeviceConfig::m_sim_address
std::string m_sim_address
Definition: deviceConfig.hpp:413
fcf::devmgr::common::STATE_OPERATIONAL_STR
constexpr auto STATE_OPERATIONAL_STR
Definition: deviceConfig.hpp:84
fcf::devmgr::common::DeviceConfig::m_address
std::string m_address
Definition: deviceConfig.hpp:412
fcf::devmgr::common::CI_WIDGET_CLASS
constexpr auto CI_WIDGET_CLASS
Definition: deviceConfig.hpp:52
fcf::devmgr::common::RPC_STOP
constexpr auto RPC_STOP
Definition: deviceConfig.hpp:61
fcf::devmgr::common::CI_ALIAS
constexpr auto CI_ALIAS
Definition: deviceConfig.hpp:44
fcf::devmgr::common::RPC_DISABLE
constexpr auto RPC_DISABLE
Definition: deviceConfig.hpp:60
fcf::devmgr::common::DeviceConfig::CheckConfig
void CheckConfig() const
Validates the document configuration.
Definition: deviceConfig.cpp:158
fcf::devmgr::common::DeviceConfig::m_fits_prefix
std::string m_fits_prefix
Definition: deviceConfig.hpp:408
fcf::devmgr::common::SUBSTATE_OP_DISABLING
constexpr int SUBSTATE_OP_DISABLING
Definition: deviceConfig.hpp:108
fcf::devmgr::common::CI_WIDGET_WIDGET
constexpr auto CI_WIDGET_WIDGET
Definition: deviceConfig.hpp:53
fcf::devmgr::common::FITS_PARAM_STAT
constexpr auto FITS_PARAM_STAT
Definition: deviceConfig.hpp:116
fcf::devmgr::common::SUBSTATE_NOTREADY_STR
constexpr auto SUBSTATE_NOTREADY_STR
Definition: deviceConfig.hpp:103
fcf
Definition: actionMgr.cpp:29
configSet.hpp
configSet class header file.
fcf::devmgr::common::DeviceConfig::GetProcId
std::string GetProcId(const std::string &attrib) const
Get procedure id.
Definition: deviceConfig.cpp:328
fcf::devmgr::common::SUBSTATE_INITIALISING_STR
constexpr auto SUBSTATE_INITIALISING_STR
Definition: deviceConfig.hpp:104
fcf::devmgr::common::CI_STAT_STATU
constexpr auto CI_STAT_STATU
Definition: deviceConfig.hpp:67
fcf::devmgr::common::FITS_PARAM_DEVSIM
constexpr auto FITS_PARAM_DEVSIM
Definition: deviceConfig.hpp:117
fcf::devmgr::common::FITS_PARAM_DEVIGN
constexpr auto FITS_PARAM_DEVIGN
Definition: deviceConfig.hpp:118
fcf::devmgr::common::DeviceConfig::m_name
std::string m_name
device identifier
Definition: deviceConfig.hpp:405
fcf::devmgr::common::IDeviceConfig
Device Configuration class.
Definition: iDeviceConfig.hpp:32
fcf::devmgr::common::SUBSTATE_NOTREADY
constexpr int SUBSTATE_NOTREADY
Definition: deviceConfig.hpp:98
fcf::devmgr::common::DeviceConfig::GetLogName
std::string GetLogName() const noexcept
Definition: deviceConfig.hpp:272
fcf::devmgr::common::DeviceConfig::GetCfgAsString
std::string GetCfgAsString() const
GetCfgAsString.
Definition: deviceConfig.cpp:420
fcf::devmgr::common::DeviceConfig::GetConfig
virtual void GetConfig(fcf::common::VectorVariant &params) const
Obtain the list of configuration parameters.
Definition: deviceConfig.cpp:194
fcf::devmgr::common::DeviceConfig::m_type
std::string m_type
Device type.
Definition: deviceConfig.hpp:407
fcf::devmgr::common::CI_CTRL_CONFIG
constexpr auto CI_CTRL_CONFIG
Definition: deviceConfig.hpp:49
fcf::devmgr::common::FITS_PARAM_ID
constexpr auto FITS_PARAM_ID
Definition: deviceConfig.hpp:114
fcf::devmgr::common::SUBSTATE_INITIALISING
constexpr int SUBSTATE_INITIALISING
Definition: deviceConfig.hpp:100
fcf::devmgr::common::StateMap
const std::unordered_map< short, std::string > StateMap
Definition: deviceConfig.hpp:87
fcf::devmgr::common::DeviceConfig::GetType
std::string GetType() const
Definition: deviceConfig.cpp:270
fcf::devmgr::common::DeviceConfig::GetDescription
std::string GetDescription() const
Definition: deviceConfig.cpp:310
fcf::devmgr::common::CI_NAME
constexpr auto CI_NAME
Definition: deviceConfig.hpp:40
fcf::devmgr::common::RPC_ENABLE
constexpr auto RPC_ENABLE
Definition: deviceConfig.hpp:59
fcf::devmgr::common::SUBSTATE_OP_ERROR
constexpr int SUBSTATE_OP_ERROR
Definition: deviceConfig.hpp:109
fcf::devmgr::common::DeviceConfig::DeviceConfig
DeviceConfig(const std::string &filename, const std::string &name)
DeviceConfig constructor.
Definition: deviceConfig.cpp:37
iDeviceConfig.hpp
IDeviceConfig class header file.
fcf::devmgr::common::SUBSTATE_OP_ERROR_STR
constexpr auto SUBSTATE_OP_ERROR_STR
Definition: deviceConfig.hpp:112
fcf::devmgr::common::CAT_CTRL
constexpr auto CAT_CTRL
Definition: deviceConfig.hpp:76
fcf::devmgr::common::CAT_STAT
constexpr auto CAT_STAT
Definition: deviceConfig.hpp:74
fcf::devmgr::common::CI_MAP_FILE
constexpr auto CI_MAP_FILE
Definition: deviceConfig.hpp:42
fcf::devmgr::common::DeviceConfig::GetNamespace
int GetNamespace() const
Definition: deviceConfig.cpp:284
fcf::devmgr::common::CI_STAT_SUBSTATE
constexpr auto CI_STAT_SUBSTATE
Definition: deviceConfig.hpp:65
fcf::devmgr::common::SUBSTATE_ERROR
constexpr int SUBSTATE_ERROR
Definition: deviceConfig.hpp:101
fcf::devmgr::common::CI_PREFIX
constexpr auto CI_PREFIX
Definition: deviceConfig.hpp:39
fcf::devmgr::common::DeviceConfig::Init
bool Init()
Initialises a device.
Definition: deviceConfig.cpp:122
fcf::devmgr::common::CI_STAT_ERROR_STR
constexpr auto CI_STAT_ERROR_STR
Definition: deviceConfig.hpp:70
fcf::devmgr::common::RPC_INIT
constexpr auto RPC_INIT
Definition: deviceConfig.hpp:58
fcf::devmgr::common::DeviceConfig::GetId
std::string GetId() const
Definition: deviceConfig.cpp:298
fcf::devmgr::common::DeviceConfig
Device Configuration class.
Definition: deviceConfig.hpp:127
fcf::devmgr::common::CI_IDENTIFIER
constexpr auto CI_IDENTIFIER
Definition: deviceConfig.hpp:33
fcf::devmgr::common::DeviceConfig::~DeviceConfig
virtual ~DeviceConfig()
DeviceConfig destructor.
Definition: deviceConfig.cpp:62
fcf::devmgr::common::DeviceConfig::SetIgnoreFlag
virtual void SetIgnoreFlag(const bool flag)
Set ignore flag.
Definition: deviceConfig.cpp:441
fcf::devmgr::common::CI_ID
constexpr auto CI_ID
Definition: deviceConfig.hpp:45
fcf::devmgr::common::DeviceConfig::InitFromString
void InitFromString(std::string config)
Init the internal configuration from a string.
Definition: deviceConfig.cpp:66
fcf::devmgr::common::SUBSTATE_READY_STR
constexpr auto SUBSTATE_READY_STR
Definition: deviceConfig.hpp:105
fcf::devmgr::common::SUBSTATE_READY
constexpr int SUBSTATE_READY
Definition: deviceConfig.hpp:99
fcf::devmgr::common::CI_WIDGET_MODULE
constexpr auto CI_WIDGET_MODULE
Definition: deviceConfig.hpp:51
fcf::devmgr::common::DeviceConfig::m_map_file
std::string m_map_file
Definition: deviceConfig.hpp:414
fcf::devmgr::common::DeviceConfig::GetPrefix
std::string GetPrefix() const
Definition: deviceConfig.cpp:235
fcf::devmgr::common::CI_OVERVIEW
constexpr auto CI_OVERVIEW
Definition: deviceConfig.hpp:46
fcf::devmgr::common::STATE_UNAVAILABLE_STR
constexpr auto STATE_UNAVAILABLE_STR
Definition: deviceConfig.hpp:85
fcf::devmgr::common::DeviceConfig::m_lcs_prefix
std::string m_lcs_prefix
Definition: deviceConfig.hpp:411
fcf::devmgr::common::DeviceConfig::m_alias
std::string m_alias
Definition: deviceConfig.hpp:415
fcf::devmgr::common::DeviceConfig::GetAlias
std::string GetAlias() const
Definition: deviceConfig.cpp:292
fcf::devmgr::common::CAT_CFG
constexpr auto CAT_CFG
Definition: deviceConfig.hpp:75
fcf::devmgr::common::SUBSTATE_ERROR_STR
constexpr auto SUBSTATE_ERROR_STR
Definition: deviceConfig.hpp:106
fcf::devmgr::common::CI_SIM_ADDRESS
constexpr auto CI_SIM_ADDRESS
Definition: deviceConfig.hpp:37
fcf::devmgr::common::DeviceConfig::m_simulated
bool m_simulated
Definition: deviceConfig.hpp:409
fcf::devmgr::common::DeviceConfig::GetCfgFile
std::string GetCfgFile() const
GetCfgFile.
Definition: deviceConfig.cpp:416
fcf::devmgr::common::DeviceConfig::GetAddress
std::string GetAddress() const
Definition: deviceConfig.cpp:242
fcf::devmgr::common::CI_SIMULATED
constexpr auto CI_SIMULATED
Definition: deviceConfig.hpp:34
fcf::devmgr::common::STATE_NOT_OPERATIONAL
constexpr int STATE_NOT_OPERATIONAL
Definition: deviceConfig.hpp:80
fcf::devmgr::common::DeviceConfig::InitFromFile
void InitFromFile(const std::string &filename)
Init the internal configuration from a given file.
Definition: deviceConfig.cpp:88
fcf::devmgr::common::RPC_RESET
constexpr auto RPC_RESET
Definition: deviceConfig.hpp:62