ifw  0.0.1-dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
deviceConfig.hpp
Go to the documentation of this file.
1 
9 #ifndef DEVMGR_COMMON_DEVICECONFIG_HPP_
10 #define 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>
20 #include <devmgr/common/iDeviceConfig.hpp>
21 #include <devmgr/common/configSet.hpp>
22 
23 namespace devmgr {
24  namespace common {
25 
26  // Constants for common configuration
27  const std::string CI_IDENTIFIER = "identifier";
28  const std::string CI_SIMULATED = "simulated";
29  const std::string CI_IGNORED = "ignored";
30  const std::string CI_ADDRESS = "address";
31  const std::string CI_SIM_ADDRESS = "simaddr";
32  const std::string CI_TYPE = "type";
33  const std::string CI_PREFIX = "prefix";
34  const std::string CI_NAMESPACE = "namespace";
35  const std::string CI_MAP_FILE = "mapfile";
36  const std::string CI_FITS_PREFIX = "fits_prefix";
37  const std::string CI_ALIAS = "alias";
38  const std::string CI_CFG_FILE = "cfgfile";
39  const std::string CI_CTRL_CONFIG = "ctrl_config";
40 
41  // Constants for common RPC calls
42  const std::string RPC_INIT = "rpcInit";
43  const std::string RPC_ENABLE = "rpcEnable";
44  const std::string RPC_DISABLE = "rpcDisable";
45  const std::string RPC_STOP = "rpcStop";
46  const std::string RPC_RESET = "rpcReset";
47 
48  // Constants for common status attributes
49  const std::string CI_STAT_SUBSTATE = "substate";
50  const std::string CI_STAT_STATE = "state";
51  const std::string CI_STAT_STATU = "status";
52  const std::string CI_STAT_LOCAL = "local";
53  const std::string CI_STAT_ERROR_CODE = "error_code";
54  const std::string CI_STAT_ERROR_STR = "error_str";
55  const std::string DB_CONTROLLER_PREFIX = "lcs";
56 
57  // Constants for address categories
58  const std::string CAT_STAT = "stat";
59  const std::string CAT_CFG = "cfg";
60  const std::string CAT_RPC = "rpc";
61 
62  // Constants for state values
63  const short STATE_STANDBY = 1;
64  const short STATE_OPERATIONAL = 2;
65 
66  const std::string STATE_STANDBY_STR = "NotOperational";
67  const std::string STATE_OPERATIONAL_STR = "Operational";
68  const std::string STATE_UNAVAILABLE_STR = "Unavailable";
69 
70  const std::unordered_map<short, std::string> StateMap = {
73  };
74 
75  const std::unordered_map<std::string, short> StateStrMap = {
78  };
79 
80  // Constants for substate values
81  const short SUBSTATE_NOTREADY = 100;
82  const short SUBSTATE_INITIALISING = 101;
83  const short SUBSTATE_READY = 102;
84  const short SUBSTATE_DISABLING = 200;
85 
86  const std::string SUBSTATE_NOTREADY_STR = "NotReady";
87  const std::string SUBSTATE_INITIALISING_STR = "Initialising";
88  const std::string SUBSTATE_READY_STR = "Ready";
89  const std::string SUBSTATE_DISABLING_STR = "Disabling";
90 
91  const std::string FITS_PARAM_ID = "ID";
92  const std::string FITS_PARAM_NAME = "NAME";
93  const std::string FITS_PARAM_STAT = "STAT";
94  const std::string FITS_PARAM_DEVSIM = "DEVSIM";
95  const std::string FITS_PARAM_DEVIGN = "DEVIGN";
96 
97 
98  // Type definitions
103 
104  using MapCfgBool = std::map<int, CfgBool>;
105  using MapCfgInt = std::map<int, CfgInt>;
106  using MapCfgUInt = std::map<int, CfgUInt>;
107  using MapCfgDouble = std::map<int, CfgDouble>;
108 
116  class DeviceConfig : public IDeviceConfig {
117 
118  public:
124  DeviceConfig(const std::string& filename, const std::string& name);
125 
129  virtual ~DeviceConfig();
130 
135  virtual bool Init();
136 
137 
142  std::string GetIdentifier();
143 
147  std::string GetPrefix();
148 
153  std::string GetAddress();
154 
159  std::string GetSimAddress();
160 
165  std::string GetFitsPrefix();
166 
167 
171  std::string GetType();
172 
177  int GetNamespace();
178 
183  std::string GetAlias();
184 
189  std::string GetName();
190 
199  std::string GetNodeId(const std::string& attrib);
200 
211  std::string GetProcId(const std::string& attrib);
212 
222  std::string GetObjId();
223 
233  virtual void GetConfigList(std::vector<std::string>& cfg_list, std::string prefix);
234 
239  std::string GetCfgFile();
240 
241 
246  virtual void SetSimulateFlag(bool flag);
247 
252  virtual void SetIgnoreFlag(bool flag);
253 
258  virtual bool GetIgnored();
259 
264  virtual bool GetSimulated();
265 
266  protected:
267 
268  std::string m_filename;
269  std::string m_name;
270  YAML::Node m_configNode;
271  std::string m_identifier;
272  std::string m_type;
273  std::string m_fits_prefix;
274  bool m_simulated;
275  bool m_ignored;
276  std::string m_lcs_prefix;
277  std::string m_address;
278  std::string m_sim_address;
279  std::string m_map_file;
280  std::string m_alias;
281  int m_lcs_namespace;
282  };
283  }
284 }
285 
286 
287 #endif //DEVMGR_COMMON_DEVICECONFIG_HPP_
bool m_simulated
Definition: deviceConfig.hpp:274
const std::string CI_TYPE
Definition: deviceConfig.hpp:32
Definition: configSet.hpp:16
devmgr::common::ConfigSet< unsigned int > CfgUInt
Definition: deviceConfig.hpp:101
const std::unordered_map< std::string, short > StateStrMap
Definition: deviceConfig.hpp:75
virtual void SetIgnoreFlag(bool flag)
Set ignore flag.
Definition: deviceConfig.cpp:325
const short STATE_STANDBY
Definition: deviceConfig.hpp:63
const std::string RPC_STOP
Definition: deviceConfig.hpp:45
const std::string CAT_STAT
Definition: deviceConfig.hpp:58
virtual bool GetIgnored()
Get ignored flag.
Definition: deviceConfig.cpp:221
std::string m_address
Definition: deviceConfig.hpp:277
std::string GetNodeId(const std::string &attrib)
Get node id.
Definition: deviceConfig.cpp:257
DeviceConfig(const std::string &filename, const std::string &name)
DeviceConfig constructor.
Definition: deviceConfig.cpp:26
const std::unordered_map< short, std::string > StateMap
Definition: deviceConfig.hpp:70
std::string GetIdentifier()
Definition: deviceConfig.cpp:191
std::string m_fits_prefix
Definition: deviceConfig.hpp:273
std::map< int, CfgBool > MapCfgBool
Definition: deviceConfig.hpp:104
const std::string RPC_DISABLE
Definition: deviceConfig.hpp:44
const std::string CI_ALIAS
Definition: deviceConfig.hpp:37
const std::string FITS_PARAM_STAT
Definition: deviceConfig.hpp:93
const std::string CI_STAT_ERROR_CODE
Definition: deviceConfig.hpp:53
const std::string FITS_PARAM_DEVSIM
Definition: deviceConfig.hpp:94
int m_lcs_namespace
Definition: deviceConfig.hpp:281
const std::string CI_STAT_SUBSTATE
Definition: deviceConfig.hpp:49
std::string GetType()
Definition: deviceConfig.cpp:228
const std::string CI_IDENTIFIER
Definition: deviceConfig.hpp:27
const std::string CI_PREFIX
Definition: deviceConfig.hpp:33
std::string GetCfgFile()
GetCfgFile.
Definition: deviceConfig.cpp:315
std::string GetFitsPrefix()
Get Fits Prefix.
Definition: deviceConfig.cpp:234
virtual bool Init()
Initialises a device.
Definition: deviceConfig.cpp:41
std::string m_lcs_prefix
Definition: deviceConfig.hpp:276
const std::string RPC_INIT
Definition: deviceConfig.hpp:42
const std::string CI_FITS_PREFIX
Definition: deviceConfig.hpp:36
const std::string CI_STAT_ERROR_STR
Definition: deviceConfig.hpp:54
std::string GetAlias()
Definition: deviceConfig.cpp:252
std::string GetAddress()
Definition: deviceConfig.cpp:203
virtual bool GetSimulated()
Get simulated flag.
Definition: deviceConfig.cpp:215
std::string GetName()
Definition: deviceConfig.cpp:247
const std::string STATE_STANDBY_STR
Definition: deviceConfig.hpp:66
const std::string SUBSTATE_INITIALISING_STR
Definition: deviceConfig.hpp:87
const std::string CI_SIMULATED
Definition: deviceConfig.hpp:28
bool m_ignored
Definition: deviceConfig.hpp:275
const std::string STATE_OPERATIONAL_STR
Definition: deviceConfig.hpp:67
const std::string CI_STAT_STATU
Definition: deviceConfig.hpp:51
std::string GetSimAddress()
Definition: deviceConfig.cpp:209
const short SUBSTATE_NOTREADY
Definition: deviceConfig.hpp:81
std::string m_identifier
Address space identifier.
Definition: deviceConfig.hpp:271
const std::string RPC_RESET
Definition: deviceConfig.hpp:46
std::string m_name
device identifier
Definition: deviceConfig.hpp:269
std::string m_sim_address
Definition: deviceConfig.hpp:278
std::string m_alias
Definition: deviceConfig.hpp:280
std::map< int, CfgInt > MapCfgInt
Definition: deviceConfig.hpp:105
const std::string DB_CONTROLLER_PREFIX
Definition: deviceConfig.hpp:55
const std::string CI_SIM_ADDRESS
Definition: deviceConfig.hpp:31
const short SUBSTATE_READY
Definition: deviceConfig.hpp:83
const std::string CI_STAT_LOCAL
Definition: deviceConfig.hpp:52
const short SUBSTATE_INITIALISING
Definition: deviceConfig.hpp:82
const std::string CI_CTRL_CONFIG
Definition: deviceConfig.hpp:39
YAML::Node m_configNode
YAML node object for configuration file.
Definition: deviceConfig.hpp:270
const std::string SUBSTATE_DISABLING_STR
Definition: deviceConfig.hpp:89
const std::string CI_IGNORED
Definition: deviceConfig.hpp:29
const std::string CAT_RPC
Definition: deviceConfig.hpp:60
const std::string CI_MAP_FILE
Definition: deviceConfig.hpp:35
virtual void SetSimulateFlag(bool flag)
Set simulation flag.
Definition: deviceConfig.cpp:320
devmgr::common::ConfigSet< int > CfgInt
Definition: deviceConfig.hpp:100
const std::string STATE_UNAVAILABLE_STR
Definition: deviceConfig.hpp:68
int GetNamespace()
Definition: deviceConfig.cpp:240
const std::string CI_CFG_FILE
Definition: deviceConfig.hpp:38
std::string m_type
Device type.
Definition: deviceConfig.hpp:272
std::map< int, CfgUInt > MapCfgUInt
Definition: deviceConfig.hpp:106
const std::string CI_ADDRESS
Definition: deviceConfig.hpp:30
const std::string SUBSTATE_READY_STR
Definition: deviceConfig.hpp:88
const std::string CI_STAT_STATE
Definition: deviceConfig.hpp:50
const std::string CI_NAMESPACE
Definition: deviceConfig.hpp:34
const short STATE_OPERATIONAL
Definition: deviceConfig.hpp:64
const short SUBSTATE_DISABLING
Definition: deviceConfig.hpp:84
std::string m_map_file
Definition: deviceConfig.hpp:279
const std::string RPC_ENABLE
Definition: deviceConfig.hpp:43
const std::string FITS_PARAM_NAME
Definition: deviceConfig.hpp:92
std::map< int, CfgDouble > MapCfgDouble
Definition: deviceConfig.hpp:107
virtual void GetConfigList(std::vector< std::string > &cfg_list, std::string prefix)
Get configuration list.
Definition: deviceConfig.cpp:284
const std::string SUBSTATE_NOTREADY_STR
Definition: deviceConfig.hpp:86
optional string name
Definition: topics.proto:50
devmgr::common::ConfigSet< double > CfgDouble
Definition: deviceConfig.hpp:102
const std::string FITS_PARAM_ID
Definition: deviceConfig.hpp:91
virtual ~DeviceConfig()
DeviceConfig destructor.
Definition: deviceConfig.cpp:37
const std::string CAT_CFG
Definition: deviceConfig.hpp:59
const std::string FITS_PARAM_DEVIGN
Definition: deviceConfig.hpp:95
std::string m_filename
filename of device configuration file
Definition: deviceConfig.hpp:268
std::string GetProcId(const std::string &attrib)
Get procedure id.
Definition: deviceConfig.cpp:266
std::string GetPrefix()
Definition: deviceConfig.cpp:197
std::string GetObjId()
Get object id.
Definition: deviceConfig.cpp:275
devmgr::common::ConfigSet< bool > CfgBool
Definition: deviceConfig.hpp:99