ifw-fcf 6.0.0
Loading...
Searching...
No Matches
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 <ifw/core/protocol/base/iComm.hpp>
23
24// New CII Config Service
25#include <config-ng/ciiConfigApi.hpp>
26
27namespace fcf {
28 namespace devmgr {
29 namespace common {
30
31 // Constants for common configuration
32 constexpr auto CI_IDENTIFIER = "identifier";
33 constexpr auto CI_SIMULATED = "simulated";
34 constexpr auto CI_IGNORED = "ignored";
35 constexpr auto CI_ADDRESS = "dev_endpoint";
36 constexpr auto CI_SIM_ADDRESS = "sim_endpoint";
37 constexpr auto CI_TYPE = "type";
38 constexpr auto CI_PREFIX = "prefix";
39 constexpr auto CI_NAME = "name";
40 constexpr auto CI_NAMESPACE = "namespace";
41 constexpr auto CI_MAP_FILE = "mapfile";
42 constexpr auto CI_FITS_PREFIX = "fits_prefix";
43 constexpr auto CI_ALIAS = "alias";
44 constexpr auto CI_ID = "id";
45 constexpr auto CI_OVERVIEW = "overview";
46 constexpr auto CI_DESCRIPTION = "description";
47 constexpr auto CI_CFG_FILE = "cfgfile";
48 constexpr auto CI_CTRL_CONFIG = "ctrl_config";
49 constexpr auto CI_WIDGET = "widget";
50 constexpr auto CI_WIDGET_MODULE = "module";
51 constexpr auto CI_WIDGET_CLASS = "class";
52 constexpr auto CI_WIDGET_WIDGET = "widget";
53 constexpr auto CI_WIDGET_HEIGHT = "height";
54
55
56 // Constants for common RPC calls
57 constexpr auto RPC_INIT = "rpcInit";
58 constexpr auto RPC_ENABLE = "rpcEnable";
59 constexpr auto RPC_DISABLE = "rpcDisable";
60 constexpr auto RPC_STOP = "rpcStop";
61 constexpr auto RPC_RESET = "rpcReset";
62
63 // Constants for common status attributes
64 constexpr auto CI_STAT_SUBSTATE = "substate";
65 constexpr auto CI_STAT_STATE = "state";
66 constexpr auto CI_STAT_STATU = "status";
67 constexpr auto CI_STAT_LOCAL = "local";
68 constexpr auto CI_STAT_ERROR_CODE = "error_code";
69 constexpr auto CI_STAT_ERROR_STR = "error_str";
70 constexpr auto DB_CONTROLLER_PREFIX = "lcs";
71
72 // Constants for address categories
73 constexpr auto CAT_STAT = "stat";
74 constexpr auto CAT_CFG = "cfg";
75 constexpr auto CAT_CTRL = "ctrl";
76 constexpr auto CAT_RPC = "rpc";
77
78 // Constants for state values
79 constexpr int STATE_NOT_OPERATIONAL = 1;
80 constexpr int STATE_OPERATIONAL = 2;
81
82 constexpr auto STATE_NOT_OPERATIONAL_STR = "NotOperational";
83 constexpr auto STATE_OPERATIONAL_STR = "Operational";
84 constexpr auto STATE_UNAVAILABLE_STR = "Unavailable";
85
86 const std::unordered_map<short, std::string> StateMap = {
89 };
90
91 const std::unordered_map<std::string, short> StateStrMap = {
94 };
95
96 // Constants for substate values
97 constexpr int SUBSTATE_NOTREADY = 100;
98 constexpr int SUBSTATE_READY = 101;
99 constexpr int SUBSTATE_INITIALISING = 102;
100 constexpr int SUBSTATE_ERROR = 199;
101
102 constexpr auto SUBSTATE_NOTREADY_STR = "NotReady";
103 constexpr auto SUBSTATE_INITIALISING_STR = "Initialising";
104 constexpr auto SUBSTATE_READY_STR = "Ready";
105 constexpr auto SUBSTATE_ERROR_STR = "Error";
106
107 constexpr int SUBSTATE_OP_DISABLING = 205;
108 constexpr int SUBSTATE_OP_ERROR = 299;
109
110 constexpr auto SUBSTATE_OP_DISABLING_STR = "Disabling";
111 constexpr auto SUBSTATE_OP_ERROR_STR = "OpError";
112
113 constexpr auto FITS_PARAM_ID = "ID";
114 constexpr auto FITS_PARAM_NAME = "NAME";
115 constexpr auto FITS_PARAM_STAT = "STAT";
116 constexpr auto FITS_PARAM_DEVSIM = "DEVSIM";
117 constexpr auto FITS_PARAM_DEVIGN = "DEVIGN";
118
127
128 public:
133 };
139 DeviceConfig(const std::string& filename, const std::string& name);
140
148 DeviceConfig(const std::string& name);
149
153 virtual ~DeviceConfig();
154
159 bool Init();
160
171 void InitFromString(std::string config);
172
184 void InitFromFile(const std::string& filename);
185
199 virtual void GetConfig(protocol::base::VectorVariant& params) const;
200
205 std::string GetIdentifier() const;
206
210 std::string GetPrefix() const;
211
216 std::string GetAddress() const ;
217
218 /*
219 *
220 * @return device simulation address
221 */
222 std::string GetSimAddress() const;
223
228 std::string GetFitsPrefix() const;
229
230
234 std::string GetType() const;
235
240 int GetNamespace() const;
241
246 std::string GetAlias() const;
247
252 std::string GetId() const;
253
258 std::string GetOverview() const;
259
264 std::string GetDescription() const;
265
270 inline std::string GetName() const noexcept {return m_name;};
271
276 inline std::string GetLogName() const noexcept {
277 const string name = "[" + m_name + "]";
278 return name;
279 };
280
289 std::string GetNodeIdByType(const std::string& attrib, const NodeIdType type = ATTRIB_NODE_ID) const;
290 std::string GetNodeId(const std::string& attrib) const;
291
302 std::string GetProcId(const std::string& attrib) const;
303
313 std::string GetObjId() const;
314
324 virtual void GetConfigList(utils::bat::DbVector& cfg_list, std::string prefix) const;
325
330 std::string GetCfgFile() const;
331
336 std::string GetCfgAsString() const;
337
338
343 virtual void SetSimulateFlag(const bool flag);
344
349 virtual void SetIgnoreFlag(const bool flag);
350
355 virtual bool GetIgnored() const;
356
361 virtual bool GetSimulated() const;
362
367 virtual std::string GetMapFile() const;
368
374 void CheckConfig() const;
375
376 protected:
384 void MergeConfig(const elt::configng::CiiConfigDocument &doc, bool check=true);
385
386
387
401 bool GetVariantValue(const elt::configng::CiiConfigInstanceNode node,
402 protocol::base::Variant& value) const;
403
409 bool IsValidNodeIDFormat(const std::string& nodeIdString) const;
410
411 protected:
412 // All configuration parameters related to the LCS are stored in
413 // dedicated STL maps to make them easilly accessible when downloading
414 // the configuration to the LCS.
415
416 std::string m_filename;
417 std::string m_name;
418 std::string m_identifier;
419 std::string m_type;
420 std::string m_fits_prefix;
423 std::string m_lcs_prefix;
424 std::string m_address;
425 std::string m_sim_address;
426 std::string m_map_file;
427 std::string m_alias;
429
431 std::unique_ptr<elt::configng::CiiConfigDocument> m_config_doc;
432
433 private:
434 log4cplus::Logger m_logger;
435
436 };
437
438 }
439 }
440}
441
442
443#endif //FCF_DEVMGR_COMMON_DEVICECONFIG_HPP_
Device Configuration class.
Definition: deviceConfig.hpp:126
std::string m_identifier
Address space identifier.
Definition: deviceConfig.hpp:418
virtual bool GetIgnored() const
Get ignored flag.
Definition: deviceConfig.cpp:282
virtual void SetSimulateFlag(const bool flag)
Set simulation flag.
Definition: deviceConfig.cpp:497
std::string GetPrefix() const
Definition: deviceConfig.cpp:252
std::string m_map_file
Definition: deviceConfig.hpp:426
virtual void GetConfigList(utils::bat::DbVector &cfg_list, std::string prefix) const
Get configuration list.
Definition: deviceConfig.cpp:408
std::string m_alias
Definition: deviceConfig.hpp:427
std::string m_type
Device type.
Definition: deviceConfig.hpp:419
void InitFromString(std::string config)
Init the internal configuration from a string.
Definition: deviceConfig.cpp:67
virtual void SetIgnoreFlag(const bool flag)
Set ignore flag.
Definition: deviceConfig.cpp:503
std::string GetCfgAsString() const
GetCfgAsString.
Definition: deviceConfig.cpp:482
std::string GetProcId(const std::string &attrib) const
Get procedure id.
Definition: deviceConfig.cpp:396
bool m_simulated
Definition: deviceConfig.hpp:421
std::string GetOverview() const
Definition: deviceConfig.cpp:321
bool Init()
Initialises a device.
Definition: deviceConfig.cpp:123
std::string GetObjId() const
Get object id.
Definition: deviceConfig.cpp:402
virtual std::string GetMapFile() const
Get name of the device mapping file.
Definition: deviceConfig.cpp:508
void CheckConfig() const
Validates the document configuration.
Definition: deviceConfig.cpp:159
virtual bool GetSimulated() const
Get simulated flag.
Definition: deviceConfig.cpp:273
std::string GetType() const
Definition: deviceConfig.cpp:287
std::string GetSimAddress() const
Definition: deviceConfig.cpp:266
int GetNamespace() const
Definition: deviceConfig.cpp:301
NodeIdType
Definition: deviceConfig.hpp:129
@ OBJ_NODE_ID
Definition: deviceConfig.hpp:132
@ ATTRIB_NODE_ID
Definition: deviceConfig.hpp:130
@ RPC_NODE_ID
Definition: deviceConfig.hpp:131
std::string GetName() const noexcept
Definition: deviceConfig.hpp:270
std::string GetLogName() const noexcept
Definition: deviceConfig.hpp:276
std::string GetId() const
Definition: deviceConfig.cpp:315
bool GetVariantValue(const elt::configng::CiiConfigInstanceNode node, protocol::base::Variant &value) const
Obtain the variant value with the correct type.
Definition: deviceConfig.cpp:516
std::string m_fits_prefix
Definition: deviceConfig.hpp:420
std::string GetAlias() const
Definition: deviceConfig.cpp:309
std::string GetFitsPrefix() const
Get Fits Prefix.
Definition: deviceConfig.cpp:294
std::string GetCfgFile() const
GetCfgFile.
Definition: deviceConfig.cpp:478
virtual void GetConfig(protocol::base::VectorVariant &params) const
Obtain the list of configuration parameters.
Definition: deviceConfig.cpp:195
std::string GetIdentifier() const
Definition: deviceConfig.cpp:244
std::string m_filename
filename of device configuration file
Definition: deviceConfig.hpp:416
std::string m_sim_address
Definition: deviceConfig.hpp:425
std::string GetAddress() const
Definition: deviceConfig.cpp:259
std::string GetNodeIdByType(const std::string &attrib, const NodeIdType type=ATTRIB_NODE_ID) const
Get node id.
Definition: deviceConfig.cpp:342
std::string m_address
Definition: deviceConfig.hpp:424
std::string GetNodeId(const std::string &attrib) const
Get node id.
Definition: deviceConfig.cpp:391
std::string GetDescription() const
Definition: deviceConfig.cpp:327
std::unique_ptr< elt::configng::CiiConfigDocument > m_config_doc
Internal configuration document object.
Definition: deviceConfig.hpp:431
std::string m_name
device identifier
Definition: deviceConfig.hpp:417
virtual ~DeviceConfig()
DeviceConfig destructor.
Definition: deviceConfig.cpp:63
int m_lcs_namespace
Definition: deviceConfig.hpp:428
std::string m_lcs_prefix
Definition: deviceConfig.hpp:423
void MergeConfig(const elt::configng::CiiConfigDocument &doc, bool check=true)
Merges a configuration file.
Definition: deviceConfig.cpp:134
bool IsValidNodeIDFormat(const std::string &nodeIdString) const
IsValidNodeIDFormat.
Definition: deviceConfig.cpp:333
bool m_ignored
Definition: deviceConfig.hpp:422
void InitFromFile(const std::string &filename)
Init the internal configuration from a given file.
Definition: deviceConfig.cpp:89
Device Configuration class.
Definition: iDeviceConfig.hpp:31
IDeviceConfig class header file.
constexpr auto FITS_PARAM_NAME
Definition: deviceConfig.hpp:114
constexpr auto CI_PREFIX
Definition: deviceConfig.hpp:38
constexpr auto CI_ADDRESS
Definition: deviceConfig.hpp:35
constexpr int SUBSTATE_OP_ERROR
Definition: deviceConfig.hpp:108
constexpr auto CI_CTRL_CONFIG
Definition: deviceConfig.hpp:48
constexpr auto CI_MAP_FILE
Definition: deviceConfig.hpp:41
constexpr auto STATE_NOT_OPERATIONAL_STR
Definition: deviceConfig.hpp:82
constexpr auto CAT_RPC
Definition: deviceConfig.hpp:76
constexpr auto CI_IDENTIFIER
Definition: deviceConfig.hpp:32
constexpr auto CI_IGNORED
Definition: deviceConfig.hpp:34
constexpr auto STATE_UNAVAILABLE_STR
Definition: deviceConfig.hpp:84
constexpr int SUBSTATE_INITIALISING
Definition: deviceConfig.hpp:99
constexpr auto FITS_PARAM_ID
Definition: deviceConfig.hpp:113
const std::unordered_map< short, std::string > StateMap
Definition: deviceConfig.hpp:86
constexpr auto RPC_INIT
Definition: deviceConfig.hpp:57
constexpr auto CI_DESCRIPTION
Definition: deviceConfig.hpp:46
constexpr auto CI_STAT_ERROR_CODE
Definition: deviceConfig.hpp:68
constexpr auto CAT_STAT
Definition: deviceConfig.hpp:73
constexpr int SUBSTATE_READY
Definition: deviceConfig.hpp:98
constexpr auto SUBSTATE_OP_ERROR_STR
Definition: deviceConfig.hpp:111
constexpr auto CI_STAT_LOCAL
Definition: deviceConfig.hpp:67
constexpr auto CI_FITS_PREFIX
Definition: deviceConfig.hpp:42
constexpr auto CI_STAT_ERROR_STR
Definition: deviceConfig.hpp:69
constexpr auto DB_CONTROLLER_PREFIX
Definition: deviceConfig.hpp:70
constexpr int STATE_OPERATIONAL
Definition: deviceConfig.hpp:80
constexpr auto CI_SIMULATED
Definition: deviceConfig.hpp:33
constexpr auto RPC_STOP
Definition: deviceConfig.hpp:60
constexpr auto FITS_PARAM_STAT
Definition: deviceConfig.hpp:115
constexpr auto CI_WIDGET_CLASS
Definition: deviceConfig.hpp:51
constexpr auto CI_STAT_SUBSTATE
Definition: deviceConfig.hpp:64
constexpr auto FITS_PARAM_DEVSIM
Definition: deviceConfig.hpp:116
constexpr auto CI_CFG_FILE
Definition: deviceConfig.hpp:47
constexpr auto CI_WIDGET_WIDGET
Definition: deviceConfig.hpp:52
constexpr auto CI_STAT_STATE
Definition: deviceConfig.hpp:65
constexpr auto CI_OVERVIEW
Definition: deviceConfig.hpp:45
constexpr auto CI_NAMESPACE
Definition: deviceConfig.hpp:40
constexpr auto SUBSTATE_ERROR_STR
Definition: deviceConfig.hpp:105
constexpr auto FITS_PARAM_DEVIGN
Definition: deviceConfig.hpp:117
constexpr int SUBSTATE_ERROR
Definition: deviceConfig.hpp:100
constexpr auto RPC_ENABLE
Definition: deviceConfig.hpp:58
constexpr auto CI_WIDGET_MODULE
Definition: deviceConfig.hpp:50
constexpr auto STATE_OPERATIONAL_STR
Definition: deviceConfig.hpp:83
constexpr int SUBSTATE_NOTREADY
Definition: deviceConfig.hpp:97
constexpr auto SUBSTATE_NOTREADY_STR
Definition: deviceConfig.hpp:102
constexpr auto RPC_DISABLE
Definition: deviceConfig.hpp:59
constexpr auto SUBSTATE_READY_STR
Definition: deviceConfig.hpp:104
constexpr auto CI_ID
Definition: deviceConfig.hpp:44
constexpr auto CI_WIDGET
Definition: deviceConfig.hpp:49
constexpr int SUBSTATE_OP_DISABLING
Definition: deviceConfig.hpp:107
constexpr auto CAT_CTRL
Definition: deviceConfig.hpp:75
const std::unordered_map< std::string, short > StateStrMap
Definition: deviceConfig.hpp:91
constexpr int STATE_NOT_OPERATIONAL
Definition: deviceConfig.hpp:79
constexpr auto CI_WIDGET_HEIGHT
Definition: deviceConfig.hpp:53
constexpr auto CI_SIM_ADDRESS
Definition: deviceConfig.hpp:36
constexpr auto SUBSTATE_INITIALISING_STR
Definition: deviceConfig.hpp:103
constexpr auto SUBSTATE_OP_DISABLING_STR
Definition: deviceConfig.hpp:110
constexpr auto CI_ALIAS
Definition: deviceConfig.hpp:43
constexpr auto CI_TYPE
Definition: deviceConfig.hpp:37
constexpr auto CAT_CFG
Definition: deviceConfig.hpp:74
constexpr auto RPC_RESET
Definition: deviceConfig.hpp:61
constexpr auto CI_STAT_STATU
Definition: deviceConfig.hpp:66
constexpr auto CI_NAME
Definition: deviceConfig.hpp:39
Definition: actionMgr.cpp:29
std::string const
Definition: test{{cookiecutter.device_name|capitalize()}}.cpp:161