ifw-fcf 7.1.4
Loading...
Searching...
No Matches
deviceConfig.hpp
Go to the documentation of this file.
1
8#ifndef FCF_DEVMGR_COMMON_DEVICECONFIG_HPP_
9#define FCF_DEVMGR_COMMON_DEVICECONFIG_HPP_
10
11#include <string>
12#include <unordered_map>
13
14#include <yaml-cpp/yaml.h>
15
16#include <ifw/core/utils/bat/logger.hpp>
17#include <ifw/core/utils/bat/config.hpp>
18#include <ifw/core/protocol/base/iComm.hpp>
20
21#include <config-ng/ciiConfigApi.hpp>
22
23
24namespace ifw::fcf {
25 namespace devmgr {
26 namespace common {
27
28 // Constants for common configuration
29 constexpr auto CI_IDENTIFIER = "identifier";
30 constexpr auto CI_SIMULATED = "simulated";
31 constexpr auto CI_IGNORED = "ignored";
32 constexpr auto CI_ADDRESS = "dev_endpoint";
33 constexpr auto CI_SIM_ADDRESS = "sim_endpoint";
34 constexpr auto CI_TYPE = "type";
35 constexpr auto CI_PREFIX = "prefix";
36 constexpr auto CI_NAME = "name";
37 constexpr auto CI_NAMESPACE = "namespace";
38 constexpr auto CI_MAP_FILE = "mapfile";
39 constexpr auto CI_FITS_PREFIX = "fits_prefix";
40 constexpr auto CI_ALIAS = "alias";
41 constexpr auto CI_ID = "id";
42 constexpr auto CI_OVERVIEW = "overview";
43 constexpr auto CI_DESCRIPTION = "description";
44 constexpr auto CI_CFG_FILE = "cfgfile";
45 constexpr auto CI_CTRL_CONFIG = "ctrl_config";
46 constexpr auto CI_WIDGET = "widget";
47 constexpr auto CI_WIDGET_MODULE = "module";
48 constexpr auto CI_WIDGET_CLASS = "class";
49 constexpr auto CI_WIDGET_WIDGET = "widget";
50 constexpr auto CI_WIDGET_HEIGHT = "height";
51 constexpr auto CI_INTERFACE_CFG = "interface_cfg";
52
53 // Constants for common RPC calls
54 constexpr auto RPC_INIT = "rpcInit";
55 constexpr auto RPC_ENABLE = "rpcEnable";
56 constexpr auto RPC_DISABLE = "rpcDisable";
57 constexpr auto RPC_STOP = "rpcStop";
58 constexpr auto RPC_RESET = "rpcReset";
59
60 // Constants for common status attributes
61 constexpr auto CI_STAT_SUBSTATE = "substate";
62 constexpr auto CI_STAT_STATE = "state";
63 constexpr auto CI_STAT_STATU = "status";
64 constexpr auto CI_STAT_LOCAL = "local";
65 constexpr auto CI_STAT_ERROR_CODE = "error_code";
66 constexpr auto CI_STAT_ERROR_STR = "error_str";
67 constexpr auto DB_CONTROLLER_PREFIX = "lcs";
68
69 // Constants for address categories
70 constexpr auto CAT_STAT = "stat";
71 constexpr auto CAT_CFG = "cfg";
72 constexpr auto CAT_CTRL = "ctrl";
73 constexpr auto CAT_RPC = "rpc";
74
75 // Constants for state values
76 constexpr int STATE_NOT_OPERATIONAL = 1;
77 constexpr int STATE_OPERATIONAL = 2;
78
79 constexpr auto STATE_NOT_OPERATIONAL_STR = "NotOperational";
80 constexpr auto STATE_OPERATIONAL_STR = "Operational";
81 constexpr auto STATE_UNAVAILABLE_STR = "Unavailable";
82
83 const std::unordered_map<short, std::string> STATE_MAP = {
86 };
87
88 const std::unordered_map<std::string, short> STATE_STR_MAP = {
91 };
92
93 // Constants for substate values
94 constexpr int SUBSTATE_NOTREADY = 100;
95 constexpr int SUBSTATE_READY = 101;
96 constexpr int SUBSTATE_INITIALISING = 102;
97 constexpr int SUBSTATE_ERROR = 199;
98
99 constexpr auto SUBSTATE_NOTREADY_STR = "NotReady";
100 constexpr auto SUBSTATE_INITIALISING_STR = "Initialising";
101 constexpr auto SUBSTATE_READY_STR = "Ready";
102 constexpr auto SUBSTATE_ERROR_STR = "Error";
103
104 constexpr int SUBSTATE_OP_DISABLING = 205;
105 constexpr int SUBSTATE_OP_ERROR = 299;
106
107 constexpr auto SUBSTATE_OP_DISABLING_STR = "Disabling";
108 constexpr auto SUBSTATE_OP_ERROR_STR = "OpError";
109
110 constexpr auto FITS_PARAM_ID = "ID";
111 constexpr auto FITS_PARAM_NAME = "NAME";
112 constexpr auto FITS_PARAM_STAT = "STAT";
113 constexpr auto FITS_PARAM_DEVSIM = "DEVSIM";
114 constexpr auto FITS_PARAM_DEVIGN = "DEVIGN";
115
123 // cppcheck-suppress unusedStructMember
125
126 public:
137 DeviceConfig(const std::string& filename, const std::string& name);
138
146 explicit DeviceConfig(const std::string& name);
147
151 virtual ~DeviceConfig();
152
157 bool Init();
158
169 void InitFromString(std::string config);
170
182 void InitFromFile(const std::string& filename);
183
197 virtual void GetConfig(ifw::core::protocol::base::VectorVariant& params) const override;
198
203 std::string GetIdentifier() const override;
204
208 std::string GetPrefix() const override;
209
214 std::string GetAddress() const override ;
215
216 /*
217 *
218 * @return device simulation address
219 */
220 std::string GetSimAddress() const override;
221
226 std::string GetFitsPrefix() const;
227
228
232 std::string GetType() const override;
233
238 int GetNamespace() const override;
239
244 std::string GetAlias() const override;
245
250 std::string GetId() const;
251
256 std::string GetOverview() const;
257
262 std::string GetDescription() const;
263
268 inline std::string GetName() const noexcept override {return m_name;};
269
274 inline std::string GetLogName() const noexcept {
275 const string name = "[" + m_name + "]";
276 return name;
277 };
278
287 std::string GetNodeIdByType(const std::string& attrib, const NodeIdType type = ATTRIB_NODE_ID) const;
288 std::string GetNodeId(const std::string& attrib) const override;
289
300 std::string GetProcId(const std::string& attrib) const override;
301
311 std::string GetObjId() const override;
312
322 virtual void GetConfigList(ifw::core::utils::bat::DbVector& cfg_list, std::string prefix) const;
323
328 std::string GetCfgFile() const;
329
334 std::string GetCfgAsString() const override;
335
336
341 virtual void SetSimulateFlag(const bool flag) override;
342
347 virtual void SetIgnoreFlag(const bool flag) override;
348
353 virtual bool GetIgnored() const override;
354
359 virtual bool GetSimulated() const override;
360
365 virtual std::string GetMapFile() const override;
366
372 void CheckConfig() const;
373
374 protected:
382 void MergeConfig(const elt::configng::CiiConfigDocument &doc, bool check=true);
383
384
385
399 bool GetVariantValue(const elt::configng::CiiConfigInstanceNode node,
400 ifw::core::protocol::base::Variant& value) const;
401
407 bool IsValidNodeIDFormat(const std::string& node_id_string) const;
408
409 protected:
410 // NOLINTBEGIN(misc-non-private-member-variables-in-classes)
411 // All configuration parameters related to the LCS are stored in
412 // dedicated STL maps to make them easilly accessible when downloading
413 // the configuration to the LCS.
414
415 std::string m_filename;
416 std::string m_name;
417 std::string m_type;
419 std::unique_ptr<elt::configng::CiiConfigDocument> m_config_doc;
420 // NOLINTEND(misc-non-private-member-variables-in-classes)
421
422 private:
423 log4cplus::Logger m_logger;
424
425 };
426
427 }
428 }
429}
430
431
432#endif //FCF_DEVMGR_COMMON_DEVICECONFIG_HPP_
Device Configuration class.
Definition deviceConfig.hpp:124
std::string m_type
Definition deviceConfig.hpp:417
void MergeConfig(const elt::configng::CiiConfigDocument &doc, bool check=true)
Merges a configuration file.
Definition deviceConfig.cpp:120
virtual void SetSimulateFlag(const bool flag) override
Set simulation flag.
Definition deviceConfig.cpp:483
std::string GetCfgFile() const
GetCfgFile.
Definition deviceConfig.cpp:464
std::string GetProcId(const std::string &attrib) const override
Get procedure id.
Definition deviceConfig.cpp:382
std::string GetCfgAsString() const override
GetCfgAsString.
Definition deviceConfig.cpp:468
virtual ~DeviceConfig()
DeviceConfig destructor.
Definition deviceConfig.cpp:49
std::string GetIdentifier() const override
Definition deviceConfig.cpp:230
std::string GetId() const
Definition deviceConfig.cpp:301
std::string GetPrefix() const override
Definition deviceConfig.cpp:238
int GetNamespace() const override
Definition deviceConfig.cpp:287
std::string GetDescription() const
Definition deviceConfig.cpp:313
virtual void GetConfig(ifw::core::protocol::base::VectorVariant &params) const override
Obtain the list of configuration parameters.
Definition deviceConfig.cpp:181
std::string GetObjId() const override
Get object id.
Definition deviceConfig.cpp:388
std::string GetLogName() const noexcept
Definition deviceConfig.hpp:274
std::string GetAlias() const override
Definition deviceConfig.cpp:295
std::string GetType() const override
Definition deviceConfig.cpp:273
std::string GetFitsPrefix() const
Get Fits Prefix.
Definition deviceConfig.cpp:280
NodeIdType
Definition deviceConfig.hpp:127
@ ATTRIB_NODE_ID
Definition deviceConfig.hpp:128
@ RPC_NODE_ID
Definition deviceConfig.hpp:129
@ OBJ_NODE_ID
Definition deviceConfig.hpp:130
bool IsValidNodeIDFormat(const std::string &node_id_string) const
IsValidNodeIDFormat.
Definition deviceConfig.cpp:319
virtual bool GetSimulated() const override
Get simulated flag.
Definition deviceConfig.cpp:259
DeviceConfig(const std::string &filename, const std::string &name)
DeviceConfig constructor.
Definition deviceConfig.cpp:34
void InitFromString(std::string config)
Init the internal configuration from a string.
Definition deviceConfig.cpp:53
std::string GetAddress() const override
Definition deviceConfig.cpp:245
std::string GetNodeId(const std::string &attrib) const override
Get node id.
Definition deviceConfig.cpp:377
std::string GetNodeIdByType(const std::string &attrib, const NodeIdType type=ATTRIB_NODE_ID) const
Get node id.
Definition deviceConfig.cpp:328
bool GetVariantValue(const elt::configng::CiiConfigInstanceNode node, ifw::core::protocol::base::Variant &value) const
Obtain the variant value with the correct type.
Definition deviceConfig.cpp:502
bool Init()
Initialises a device.
Definition deviceConfig.cpp:109
virtual void GetConfigList(ifw::core::utils::bat::DbVector &cfg_list, std::string prefix) const
Get configuration list.
Definition deviceConfig.cpp:394
void CheckConfig() const
Validates the document configuration.
Definition deviceConfig.cpp:145
std::string GetName() const noexcept override
Definition deviceConfig.hpp:268
void InitFromFile(const std::string &filename)
Init the internal configuration from a given file.
Definition deviceConfig.cpp:75
virtual std::string GetMapFile() const override
Get name of the device mapping file.
Definition deviceConfig.cpp:494
std::string m_name
device identifier
Definition deviceConfig.hpp:416
std::string GetOverview() const
Definition deviceConfig.cpp:307
virtual bool GetIgnored() const override
Get ignored flag.
Definition deviceConfig.cpp:268
std::string GetSimAddress() const override
Definition deviceConfig.cpp:252
virtual void SetIgnoreFlag(const bool flag) override
Set ignore flag.
Definition deviceConfig.cpp:489
std::unique_ptr< elt::configng::CiiConfigDocument > m_config_doc
Internal configuration document object.
Definition deviceConfig.hpp:419
std::string m_filename
filename of device configuration file
Definition deviceConfig.hpp:415
Device Configuration class.
Definition iDeviceConfig.hpp:29
constexpr auto RPC_STOP
Definition deviceConfig.hpp:57
constexpr auto CI_DESCRIPTION
Definition deviceConfig.hpp:43
constexpr auto CI_STAT_SUBSTATE
Definition deviceConfig.hpp:61
constexpr int SUBSTATE_ERROR
Definition deviceConfig.hpp:97
constexpr auto RPC_ENABLE
Definition deviceConfig.hpp:55
constexpr auto CI_STAT_ERROR_CODE
Definition deviceConfig.hpp:65
constexpr auto FITS_PARAM_STAT
Definition deviceConfig.hpp:112
constexpr int STATE_NOT_OPERATIONAL
Definition deviceConfig.hpp:76
constexpr auto CI_STAT_STATE
Definition deviceConfig.hpp:62
constexpr auto CI_ID
Definition deviceConfig.hpp:41
constexpr auto FITS_PARAM_NAME
Definition deviceConfig.hpp:111
constexpr auto CI_SIMULATED
Definition deviceConfig.hpp:30
constexpr auto CI_CTRL_CONFIG
Definition deviceConfig.hpp:45
constexpr auto CI_NAMESPACE
Definition deviceConfig.hpp:37
constexpr int SUBSTATE_OP_DISABLING
Definition deviceConfig.hpp:104
constexpr auto RPC_INIT
Definition deviceConfig.hpp:54
constexpr auto CI_IGNORED
Definition deviceConfig.hpp:31
constexpr auto FITS_PARAM_DEVSIM
Definition deviceConfig.hpp:113
constexpr auto SUBSTATE_INITIALISING_STR
Definition deviceConfig.hpp:100
constexpr auto DB_CONTROLLER_PREFIX
Definition deviceConfig.hpp:67
constexpr auto CI_FITS_PREFIX
Definition deviceConfig.hpp:39
constexpr auto CI_OVERVIEW
Definition deviceConfig.hpp:42
constexpr auto CI_INTERFACE_CFG
Definition deviceConfig.hpp:51
constexpr auto CAT_CTRL
Definition deviceConfig.hpp:72
constexpr auto CI_IDENTIFIER
Definition deviceConfig.hpp:29
constexpr int SUBSTATE_READY
Definition deviceConfig.hpp:95
constexpr auto CI_PREFIX
Definition deviceConfig.hpp:35
constexpr auto CI_STAT_STATU
Definition deviceConfig.hpp:63
constexpr auto CI_TYPE
Definition deviceConfig.hpp:34
constexpr auto CI_WIDGET
Definition deviceConfig.hpp:46
constexpr auto RPC_RESET
Definition deviceConfig.hpp:58
constexpr auto CI_WIDGET_CLASS
Definition deviceConfig.hpp:48
constexpr auto CI_SIM_ADDRESS
Definition deviceConfig.hpp:33
constexpr auto STATE_OPERATIONAL_STR
Definition deviceConfig.hpp:80
constexpr auto SUBSTATE_ERROR_STR
Definition deviceConfig.hpp:102
const std::unordered_map< std::string, short > STATE_STR_MAP
Definition deviceConfig.hpp:88
constexpr auto CI_ADDRESS
Definition deviceConfig.hpp:32
constexpr int SUBSTATE_INITIALISING
Definition deviceConfig.hpp:96
constexpr auto CI_WIDGET_HEIGHT
Definition deviceConfig.hpp:50
constexpr auto CI_STAT_LOCAL
Definition deviceConfig.hpp:64
constexpr auto CI_WIDGET_MODULE
Definition deviceConfig.hpp:47
constexpr auto SUBSTATE_NOTREADY_STR
Definition deviceConfig.hpp:99
constexpr auto CI_NAME
Definition deviceConfig.hpp:36
constexpr auto CI_WIDGET_WIDGET
Definition deviceConfig.hpp:49
constexpr auto STATE_UNAVAILABLE_STR
Definition deviceConfig.hpp:81
constexpr auto SUBSTATE_OP_DISABLING_STR
Definition deviceConfig.hpp:107
constexpr auto CI_MAP_FILE
Definition deviceConfig.hpp:38
constexpr auto SUBSTATE_READY_STR
Definition deviceConfig.hpp:101
constexpr int SUBSTATE_OP_ERROR
Definition deviceConfig.hpp:105
constexpr auto CI_STAT_ERROR_STR
Definition deviceConfig.hpp:66
constexpr auto CAT_STAT
Definition deviceConfig.hpp:70
constexpr int SUBSTATE_NOTREADY
Definition deviceConfig.hpp:94
constexpr int STATE_OPERATIONAL
Definition deviceConfig.hpp:77
constexpr auto RPC_DISABLE
Definition deviceConfig.hpp:56
constexpr auto CAT_CFG
Definition deviceConfig.hpp:71
constexpr auto STATE_NOT_OPERATIONAL_STR
Definition deviceConfig.hpp:79
constexpr auto CAT_RPC
Definition deviceConfig.hpp:73
constexpr auto FITS_PARAM_DEVIGN
Definition deviceConfig.hpp:114
constexpr auto SUBSTATE_OP_ERROR_STR
Definition deviceConfig.hpp:108
const std::unordered_map< short, std::string > STATE_MAP
Definition deviceConfig.hpp:83
constexpr auto CI_ALIAS
Definition deviceConfig.hpp:40
constexpr auto FITS_PARAM_ID
Definition deviceConfig.hpp:110
constexpr auto CI_CFG_FILE
Definition deviceConfig.hpp:44
ActionsEnable class source file.
Definition actionMgr.cpp:28
std::string const
Definition test{{cookiecutter.device_name|capitalize()}}.cpp:161