ifw-fcf  3.0.0
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 <fcf/common/iComm.hpp>
22 
23 namespace fcf {
24  namespace devmgr {
25  namespace common {
26 
27  // Constants for common configuration
28  constexpr auto CI_IDENTIFIER = "identifier";
29  constexpr auto CI_SIMULATED = "simulated";
30  constexpr auto CI_IGNORED = "ignored";
31  constexpr auto CI_ADDRESS = "address";
32  constexpr auto CI_SIM_ADDRESS = "simaddr";
33  constexpr auto CI_TYPE = "type";
34  constexpr auto CI_PREFIX = "prefix";
35  constexpr auto CI_NAMESPACE = "namespace";
36  constexpr auto CI_MAP_FILE = "mapfile";
37  constexpr auto CI_FITS_PREFIX = "fits_prefix";
38  constexpr auto CI_ALIAS = "alias";
39  constexpr auto CI_CFG_FILE = "cfgfile";
40  constexpr auto CI_CTRL_CONFIG = "ctrl_config";
41 
42  // Constants for common RPC calls
43  constexpr auto RPC_INIT = "rpcInit";
44  constexpr auto RPC_ENABLE = "rpcEnable";
45  constexpr auto RPC_DISABLE = "rpcDisable";
46  constexpr auto RPC_STOP = "rpcStop";
47  constexpr auto RPC_RESET = "rpcReset";
48 
49  // Constants for common status attributes
50  constexpr auto CI_STAT_SUBSTATE = "substate";
51  constexpr auto CI_STAT_STATE = "state";
52  constexpr auto CI_STAT_STATU = "status";
53  constexpr auto CI_STAT_LOCAL = "local";
54  constexpr auto CI_STAT_ERROR_CODE = "error_code";
55  constexpr auto CI_STAT_ERROR_STR = "error_str";
56  constexpr auto DB_CONTROLLER_PREFIX = "lcs";
57 
58  // Constants for address categories
59  constexpr auto CAT_STAT = "stat";
60  constexpr auto CAT_CFG = "cfg";
61  constexpr auto CAT_RPC = "rpc";
62 
63  // Constants for state values
64  constexpr int STATE_NOT_OPERATIONAL = 1;
65  constexpr int STATE_OPERATIONAL = 2;
66 
67  constexpr auto STATE_NOT_OPERATIONAL_STR = "NotOperational";
68  constexpr auto STATE_OPERATIONAL_STR = "Operational";
69  constexpr auto STATE_UNAVAILABLE_STR = "Unavailable";
70 
71  const std::unordered_map<short, std::string> StateMap = {
74  };
75 
76  const std::unordered_map<std::string, short> StateStrMap = {
79  };
80 
81  // Constants for substate values
82  constexpr int SUBSTATE_NOTREADY = 100;
83  constexpr int SUBSTATE_READY = 101;
84  constexpr int SUBSTATE_INITIALISING = 102;
85  constexpr int SUBSTATE_ERROR = 199;
86 
87  constexpr auto SUBSTATE_NOTREADY_STR = "NotReady";
88  constexpr auto SUBSTATE_INITIALISING_STR = "Initialising";
89  constexpr auto SUBSTATE_READY_STR = "Ready";
90  constexpr auto SUBSTATE_ERROR_STR = "Error";
91 
92  constexpr int SUBSTATE_OP_DISABLING = 205;
93  constexpr int SUBSTATE_OP_ERROR = 299;
94 
95  constexpr auto SUBSTATE_OP_DISABLING_STR = "Disabling";
96  constexpr auto SUBSTATE_OP_ERROR_STR = "OpError";
97 
98  constexpr auto FITS_PARAM_ID = "ID";
99  constexpr auto FITS_PARAM_NAME = "NAME";
100  constexpr auto FITS_PARAM_STAT = "STAT";
101  constexpr auto FITS_PARAM_DEVSIM = "DEVSIM";
102  constexpr auto FITS_PARAM_DEVIGN = "DEVIGN";
103 
104  // Type definitions
110 
111 
112  using MapCfgBool = std::map<int, CfgBool>;
113  using MapCfgShort = std::map<int, CfgShort>;
114  using MapCfgInt = std::map<int, CfgInt>;
115  using MapCfgUInt = std::map<int, CfgUInt>;
116  using MapCfgDouble = std::map<int, CfgDouble>;
117 
125  class DeviceConfig : public IDeviceConfig {
126 
127  public:
133  DeviceConfig(const std::string& filename, const std::string& name);
134 
142  DeviceConfig(const std::string& name);
143 
147  virtual ~DeviceConfig();
148 
153  bool Init();
154 
165  void InitFromString(std::string config);
166 
178  void InitFromFile(const std::string& filename);
179 
190  void CheckConfig();
191 
200  virtual void ReadConfig();
201 
209  virtual void GetConfig(fcf::common::VectorVariant& params);
210 
215  std::string GetIdentifier();
216 
220  std::string GetPrefix();
221 
226  std::string GetAddress();
227 
232  std::string GetSimAddress();
233 
238  std::string GetFitsPrefix();
239 
240 
244  std::string GetType();
245 
250  int GetNamespace();
251 
256  std::string GetAlias();
257 
262  std::string GetName();
263 
272  std::string GetNodeId(const std::string& attrib);
273 
284  std::string GetProcId(const std::string& attrib);
285 
295  std::string GetObjId();
296 
306  virtual void GetConfigList(std::vector<std::string>& cfg_list, std::string prefix);
307 
312  std::string GetCfgFile();
313 
318  std::string GetCfgAsString();
319 
320 
325  virtual void SetSimulateFlag(bool flag);
326 
331  virtual void SetIgnoreFlag(bool flag);
332 
337  virtual bool GetIgnored();
338 
343  virtual bool GetSimulated();
344 
349  virtual std::string GetMapFile();
350 
351  protected:
352  // All configuration parameters related to the LCS are stored in
353  // dedicated STL maps to make them easilly accessible when downloading
354  // the configuration to the LCS.
360 
361  std::string m_filename;
362  std::string m_name;
363  YAML::Node m_config_node;
364  std::string m_identifier;
365  std::string m_type;
366  std::string m_fits_prefix;
368  bool m_ignored;
369  std::string m_lcs_prefix;
370  std::string m_address;
371  std::string m_sim_address;
372  std::string m_map_file;
373  std::string m_alias;
375  };
376 
377  }
378  }
379 }
380 
381 
382 #endif //FCF_DEVMGR_COMMON_DEVICECONFIG_HPP_
fcf::devmgr::common::DeviceConfig::m_lcs_namespace
int m_lcs_namespace
Definition: deviceConfig.hpp:374
fcf::devmgr::common::DeviceConfig::GetMapFile
virtual std::string GetMapFile()
Get name of the device mapping file.
Definition: deviceConfig.cpp:528
fcf::devmgr::common::DeviceConfig::m_ignored
bool m_ignored
Definition: deviceConfig.hpp:368
fcf::devmgr::common::MapCfgBool
std::map< int, CfgBool > MapCfgBool
Definition: deviceConfig.hpp:112
fcf::devmgr::common::FITS_PARAM_NAME
constexpr auto FITS_PARAM_NAME
Definition: deviceConfig.hpp:99
fcf::devmgr::common::DeviceConfig::GetProcId
std::string GetProcId(const std::string &attrib)
Get procedure id.
Definition: deviceConfig.cpp:435
fcf::devmgr::common::MapCfgShort
std::map< int, CfgShort > MapCfgShort
Definition: deviceConfig.hpp:113
fcf::devmgr::common::DeviceConfig::m_filename
std::string m_filename
filename of device configuration file
Definition: deviceConfig.hpp:361
fcf::devmgr::common::STATE_OPERATIONAL
constexpr int STATE_OPERATIONAL
Definition: deviceConfig.hpp:65
fcf::devmgr::common::DeviceConfig::SetSimulateFlag
virtual void SetSimulateFlag(bool flag)
Set simulation flag.
Definition: deviceConfig.cpp:518
fcf::devmgr::common::DeviceConfig::m_map_cfg_int
MapCfgInt m_map_cfg_int
Definition: deviceConfig.hpp:357
fcf::devmgr::common::DeviceConfig::m_map_cfg_short
MapCfgShort m_map_cfg_short
Definition: deviceConfig.hpp:356
fcf::devmgr::common::CI_TYPE
constexpr auto CI_TYPE
Definition: deviceConfig.hpp:33
fcf::devmgr::common::DB_CONTROLLER_PREFIX
constexpr auto DB_CONTROLLER_PREFIX
Definition: deviceConfig.hpp:56
fcf::devmgr::common::CAT_RPC
constexpr auto CAT_RPC
Definition: deviceConfig.hpp:61
fcf::devmgr::common::CI_STAT_ERROR_CODE
constexpr auto CI_STAT_ERROR_CODE
Definition: deviceConfig.hpp:54
fcf::devmgr::common::CI_ADDRESS
constexpr auto CI_ADDRESS
Definition: deviceConfig.hpp:31
fcf::devmgr::common::CI_CFG_FILE
constexpr auto CI_CFG_FILE
Definition: deviceConfig.hpp:39
fcf::devmgr::common::DeviceConfig::GetSimulated
virtual bool GetSimulated()
Get simulated flag.
Definition: deviceConfig.cpp:386
fcf::devmgr::common::DeviceConfig::m_map_cfg_uint
MapCfgUInt m_map_cfg_uint
Definition: deviceConfig.hpp:358
fcf::devmgr::common::DeviceConfig::m_identifier
std::string m_identifier
Address space identifier.
Definition: deviceConfig.hpp:364
fcf::devmgr::common::SUBSTATE_OP_DISABLING_STR
constexpr auto SUBSTATE_OP_DISABLING_STR
Definition: deviceConfig.hpp:95
fcf::devmgr::common::DeviceConfig::m_map_cfg_bool
MapCfgBool m_map_cfg_bool
Definition: deviceConfig.hpp:355
fcf::devmgr::common::DeviceConfig::CheckConfig
void CheckConfig()
Verify Configuration Data.
Definition: deviceConfig.cpp:109
fcf::devmgr::common::STATE_NOT_OPERATIONAL_STR
constexpr auto STATE_NOT_OPERATIONAL_STR
Definition: deviceConfig.hpp:67
fcf::devmgr::common::StateStrMap
const std::unordered_map< std::string, short > StateStrMap
Definition: deviceConfig.hpp:76
fcf::devmgr::common::DeviceConfig::m_config_node
YAML::Node m_config_node
YAML node object for configuration file.
Definition: deviceConfig.hpp:363
fcf::devmgr::common::DeviceConfig::GetAddress
std::string GetAddress()
Definition: deviceConfig.cpp:374
fcf::devmgr::common::CI_STAT_STATE
constexpr auto CI_STAT_STATE
Definition: deviceConfig.hpp:51
fcf::devmgr::common::CI_STAT_LOCAL
constexpr auto CI_STAT_LOCAL
Definition: deviceConfig.hpp:53
fcf::devmgr::common::CI_IGNORED
constexpr auto CI_IGNORED
Definition: deviceConfig.hpp:30
fcf::devmgr::common::CI_FITS_PREFIX
constexpr auto CI_FITS_PREFIX
Definition: deviceConfig.hpp:37
fcf::devmgr::common::CI_NAMESPACE
constexpr auto CI_NAMESPACE
Definition: deviceConfig.hpp:35
fcf::devmgr::common::DeviceConfig::m_sim_address
std::string m_sim_address
Definition: deviceConfig.hpp:371
fcf::devmgr::common::STATE_OPERATIONAL_STR
constexpr auto STATE_OPERATIONAL_STR
Definition: deviceConfig.hpp:68
fcf::devmgr::common::DeviceConfig::m_address
std::string m_address
Definition: deviceConfig.hpp:370
fcf::devmgr::common::DeviceConfig::SetIgnoreFlag
virtual void SetIgnoreFlag(bool flag)
Set ignore flag.
Definition: deviceConfig.cpp:523
fcf::devmgr::common::RPC_STOP
constexpr auto RPC_STOP
Definition: deviceConfig.hpp:46
fcf::devmgr::common::CI_ALIAS
constexpr auto CI_ALIAS
Definition: deviceConfig.hpp:38
fcf::devmgr::common::RPC_DISABLE
constexpr auto RPC_DISABLE
Definition: deviceConfig.hpp:45
fcf::devmgr::common::DeviceConfig::m_fits_prefix
std::string m_fits_prefix
Definition: deviceConfig.hpp:366
fcf::devmgr::common::SUBSTATE_OP_DISABLING
constexpr int SUBSTATE_OP_DISABLING
Definition: deviceConfig.hpp:92
fcf::devmgr::common::FITS_PARAM_STAT
constexpr auto FITS_PARAM_STAT
Definition: deviceConfig.hpp:100
fcf::devmgr::common::MapCfgUInt
std::map< int, CfgUInt > MapCfgUInt
Definition: deviceConfig.hpp:115
fcf::devmgr::common::SUBSTATE_NOTREADY_STR
constexpr auto SUBSTATE_NOTREADY_STR
Definition: deviceConfig.hpp:87
fcf
Definition: actionMgr.cpp:29
configSet.hpp
configSet class header file.
fcf::devmgr::common::DeviceConfig::GetSimAddress
std::string GetSimAddress()
Definition: deviceConfig.cpp:380
fcf::devmgr::common::SUBSTATE_INITIALISING_STR
constexpr auto SUBSTATE_INITIALISING_STR
Definition: deviceConfig.hpp:88
fcf::devmgr::common::CI_STAT_STATU
constexpr auto CI_STAT_STATU
Definition: deviceConfig.hpp:52
fcf::devmgr::common::FITS_PARAM_DEVSIM
constexpr auto FITS_PARAM_DEVSIM
Definition: deviceConfig.hpp:101
fcf::devmgr::common::FITS_PARAM_DEVIGN
constexpr auto FITS_PARAM_DEVIGN
Definition: deviceConfig.hpp:102
fcf::devmgr::common::DeviceConfig::GetConfig
virtual void GetConfig(fcf::common::VectorVariant &params)
Obtain the list of configuration parameters.
Definition: deviceConfig.cpp:314
fcf::devmgr::common::DeviceConfig::m_name
std::string m_name
device identifier
Definition: deviceConfig.hpp:362
fcf::devmgr::common::IDeviceConfig
Device Configuration class.
Definition: iDeviceConfig.hpp:32
fcf::devmgr::common::SUBSTATE_NOTREADY
constexpr int SUBSTATE_NOTREADY
Definition: deviceConfig.hpp:82
fcf::devmgr::common::DeviceConfig::m_type
std::string m_type
Device type.
Definition: deviceConfig.hpp:365
fcf::devmgr::common::CI_CTRL_CONFIG
constexpr auto CI_CTRL_CONFIG
Definition: deviceConfig.hpp:40
fcf::devmgr::common::FITS_PARAM_ID
constexpr auto FITS_PARAM_ID
Definition: deviceConfig.hpp:98
fcf::devmgr::common::SUBSTATE_INITIALISING
constexpr int SUBSTATE_INITIALISING
Definition: deviceConfig.hpp:84
fcf::devmgr::common::StateMap
const std::unordered_map< short, std::string > StateMap
Definition: deviceConfig.hpp:71
fcf::devmgr::common::DeviceConfig::GetName
std::string GetName()
Definition: deviceConfig.cpp:418
fcf::devmgr::common::DeviceConfig::GetObjId
std::string GetObjId()
Get object id.
Definition: deviceConfig.cpp:441
fcf::devmgr::common::DeviceConfig::GetType
std::string GetType()
Definition: deviceConfig.cpp:399
fcf::devmgr::common::DeviceConfig::GetNodeId
std::string GetNodeId(const std::string &attrib)
Get node id.
Definition: deviceConfig.cpp:428
fcf::devmgr::common::DeviceConfig::GetCfgFile
std::string GetCfgFile()
GetCfgFile.
Definition: deviceConfig.cpp:506
fcf::devmgr::common::RPC_ENABLE
constexpr auto RPC_ENABLE
Definition: deviceConfig.hpp:44
fcf::devmgr::common::SUBSTATE_OP_ERROR
constexpr int SUBSTATE_OP_ERROR
Definition: deviceConfig.hpp:93
fcf::devmgr::common::DeviceConfig::DeviceConfig
DeviceConfig(const std::string &filename, const std::string &name)
DeviceConfig constructor.
Definition: deviceConfig.cpp:29
iDeviceConfig.hpp
IDeviceConfig class header file.
fcf::devmgr::common::SUBSTATE_OP_ERROR_STR
constexpr auto SUBSTATE_OP_ERROR_STR
Definition: deviceConfig.hpp:96
fcf::devmgr::common::CAT_STAT
constexpr auto CAT_STAT
Definition: deviceConfig.hpp:59
fcf::devmgr::common::DeviceConfig::GetCfgAsString
std::string GetCfgAsString()
GetCfgAsString.
Definition: deviceConfig.cpp:511
fcf::devmgr::common::DeviceConfig::GetAlias
std::string GetAlias()
Definition: deviceConfig.cpp:423
fcf::devmgr::common::CI_MAP_FILE
constexpr auto CI_MAP_FILE
Definition: deviceConfig.hpp:36
fcf::devmgr::common::DeviceConfig::GetConfigList
virtual void GetConfigList(std::vector< std::string > &cfg_list, std::string prefix)
Get configuration list.
Definition: deviceConfig.cpp:448
fcf::devmgr::common::CI_STAT_SUBSTATE
constexpr auto CI_STAT_SUBSTATE
Definition: deviceConfig.hpp:50
fcf::devmgr::common::SUBSTATE_ERROR
constexpr int SUBSTATE_ERROR
Definition: deviceConfig.hpp:85
fcf::devmgr::common::CI_PREFIX
constexpr auto CI_PREFIX
Definition: deviceConfig.hpp:34
fcf::devmgr::common::DeviceConfig::Init
bool Init()
Initialises a device.
Definition: deviceConfig.cpp:88
fcf::devmgr::common::CI_STAT_ERROR_STR
constexpr auto CI_STAT_ERROR_STR
Definition: deviceConfig.hpp:55
fcf::devmgr::common::DeviceConfig::GetFitsPrefix
std::string GetFitsPrefix()
Get Fits Prefix.
Definition: deviceConfig.cpp:405
fcf::devmgr::common::RPC_INIT
constexpr auto RPC_INIT
Definition: deviceConfig.hpp:43
fcf::devmgr::common::DeviceConfig::GetPrefix
std::string GetPrefix()
Definition: deviceConfig.cpp:368
fcf::devmgr::common::ConfigSet
Definition: configSet.hpp:17
fcf::devmgr::common::DeviceConfig
Device Configuration class.
Definition: deviceConfig.hpp:125
fcf::devmgr::common::CI_IDENTIFIER
constexpr auto CI_IDENTIFIER
Definition: deviceConfig.hpp:28
fcf::devmgr::common::DeviceConfig::~DeviceConfig
virtual ~DeviceConfig()
DeviceConfig destructor.
Definition: deviceConfig.cpp:49
fcf::devmgr::common::DeviceConfig::InitFromString
void InitFromString(std::string config)
Init the internal configuration from a string.
Definition: deviceConfig.cpp:53
fcf::devmgr::common::SUBSTATE_READY_STR
constexpr auto SUBSTATE_READY_STR
Definition: deviceConfig.hpp:89
fcf::devmgr::common::SUBSTATE_READY
constexpr int SUBSTATE_READY
Definition: deviceConfig.hpp:83
fcf::devmgr::common::MapCfgDouble
std::map< int, CfgDouble > MapCfgDouble
Definition: deviceConfig.hpp:116
fcf::devmgr::common::DeviceConfig::GetIgnored
virtual bool GetIgnored()
Get ignored flag.
Definition: deviceConfig.cpp:392
fcf::devmgr::common::DeviceConfig::m_map_file
std::string m_map_file
Definition: deviceConfig.hpp:372
fcf::devmgr::common::STATE_UNAVAILABLE_STR
constexpr auto STATE_UNAVAILABLE_STR
Definition: deviceConfig.hpp:69
fcf::devmgr::common::DeviceConfig::m_lcs_prefix
std::string m_lcs_prefix
Definition: deviceConfig.hpp:369
fcf::devmgr::common::DeviceConfig::m_alias
std::string m_alias
Definition: deviceConfig.hpp:373
fcf::devmgr::common::DeviceConfig::m_map_cfg_double
MapCfgDouble m_map_cfg_double
Definition: deviceConfig.hpp:359
fcf::devmgr::common::CAT_CFG
constexpr auto CAT_CFG
Definition: deviceConfig.hpp:60
fcf::devmgr::common::DeviceConfig::ReadConfig
virtual void ReadConfig()
Read the configuration.
Definition: deviceConfig.cpp:210
fcf::devmgr::common::SUBSTATE_ERROR_STR
constexpr auto SUBSTATE_ERROR_STR
Definition: deviceConfig.hpp:90
fcf::devmgr::common::CI_SIM_ADDRESS
constexpr auto CI_SIM_ADDRESS
Definition: deviceConfig.hpp:32
fcf::devmgr::common::DeviceConfig::m_simulated
bool m_simulated
Definition: deviceConfig.hpp:367
fcf::devmgr::common::CI_SIMULATED
constexpr auto CI_SIMULATED
Definition: deviceConfig.hpp:29
fcf::devmgr::common::STATE_NOT_OPERATIONAL
constexpr int STATE_NOT_OPERATIONAL
Definition: deviceConfig.hpp:64
fcf::devmgr::common::DeviceConfig::InitFromFile
void InitFromFile(const std::string &filename)
Init the internal configuration from a given file.
Definition: deviceConfig.cpp:68
fcf::devmgr::common::MapCfgInt
std::map< int, CfgInt > MapCfgInt
Definition: deviceConfig.hpp:114
fcf::devmgr::common::DeviceConfig::GetNamespace
int GetNamespace()
Definition: deviceConfig.cpp:411
fcf::devmgr::common::DeviceConfig::GetIdentifier
std::string GetIdentifier()
Definition: deviceConfig.cpp:362
fcf::devmgr::common::RPC_RESET
constexpr auto RPC_RESET
Definition: deviceConfig.hpp:47