ifw-fcf  5.0.0-pre2
iodevConfig.hpp
Go to the documentation of this file.
1 
10 #ifndef FCF_DEVMGR_DEVICE_IODEV_CONFIG_HPP
11 #define FCF_DEVMGR_DEVICE_IODEV_CONFIG_HPP
12 
13 // System headers
14 #include <string>
15 #include <vector>
16 #include <utility>
17 
18 
19 // Third party headers
20 #include <yaml-cpp/yaml.h>
21 
22 #include <utils/bat/logger.hpp>
27 
28 namespace fcf::devmgr::iodev {
29 
30 constexpr auto LOGGER_NAME = "iodev";
31 constexpr auto CI_NO_RPC = "norpc";
32 constexpr auto CI_SENSOR = "sensor";
33 
34 // Constants for internal mapping
35 constexpr auto CI_CHANNELS = "channels";
36 constexpr auto CI_NAME = "name";
37 constexpr auto CI_DESCRIPTION = "description";
38 constexpr auto CI_ALIAS = "alias";
39 constexpr auto CI_TYPE = "type";
40 constexpr auto CI_HEADER = "header";
41 constexpr auto CI_LOG = "log";
42 constexpr auto CI_UNIT = "unit";
43 constexpr auto CI_MAP = "map";
44 constexpr auto CI_VALUE = "value";
45 constexpr auto CI_NAMED_MAPPING = "named_values";
46 
47 
48 // Specific constant values for Sensor device state/substate
49 constexpr int SUBSTATE_OP_MONITORING = 200;
50 constexpr auto SUBSTATE_OP_MONITORING_STR = "Monitoring";
51 
52 const std::unordered_map<short, std::string> SubstateMap = {
58 };
59 
60 constexpr auto DI_TYPE_STR = "DI";
61 constexpr auto AI_TYPE_STR = "AI";
62 constexpr auto II_TYPE_STR = "II";
63 constexpr auto SI_TYPE_STR = "SI";
64 
65 constexpr auto DO_TYPE_STR = "DO";
66 constexpr auto AO_TYPE_STR = "AO";
67 constexpr auto IO_TYPE_STR = "IO";
68 constexpr auto SO_TYPE_STR = "SO";
69 
70 constexpr auto DI_CAT_STR = "diChannels";
71 constexpr auto AI_CAT_STR = "aiChannels";
72 constexpr auto II_CAT_STR = "iiChannels";
73 constexpr auto SI_CAT_STR = "siChannels";
74 
75 constexpr auto DO_CAT_STR = "doChannels";
76 constexpr auto AO_CAT_STR = "aoChannels";
77 constexpr auto IO_CAT_STR = "ioChannels";
78 constexpr auto SO_CAT_STR = "soChannels";
79 
80 // Specific iodev RPC
81 constexpr auto RPC_SET_OUTPUTS = "rpcSetOutputs";
82 
83 
84 const std::unordered_map<std::string, std::string> IODevTypeMap = {
93 };
94 
95 
96 struct IODevChannel {
97 public:
98  IODevChannel();
99  virtual ~IODevChannel() = default;
100 
101  inline std::string GetDescription() const;
102  inline std::string GetAlias() const;
103  inline std::string GetType() const;
104  inline bool GetHeaderFlag() const;
105  inline bool GetLogFlag() const;
106  inline std::string GetUnit() const;
107  inline std::string GetMap() const;
108  inline std::string GetCat() const;
109  inline std::string GetFitsPrefix() const;
110  inline std::string GetNamedValue(std::string value) const;
111 
112  inline void SetDescription(std::string description);
113  inline void SetAlias(std::string alias);
114  inline void SetType(std::string type);
115  inline void SetHeaderFlag(bool flag);
116  inline void SetLogFlag(bool flag);
117  inline void SetUnit(std::string unit);
118  inline void SetMap(std::string map);
119  inline void SetFitsPrefix(std::string prefix);
120  inline void AddNamedValue(std::string value, std::string name);
121 
122 
123 protected:
124  std::string m_description;
125  std::string m_alias;
126  std::string m_type;
127  bool m_header;
128  bool m_log;
129  std::string m_unit;
130  std::string m_map;
131  std::string m_prefix;
132  std::unordered_map<std::string, string> m_named_values_map;
133 };
134 
135 class IODev;
144 
145  friend class IODev;
146  friend class IODevLcsIf;
147 
148 public:
149 
155  IODevConfig(const std::string filename,
156  const std::string name);
157 
162  IODevConfig(const std::string name);
163 
167  virtual ~IODevConfig() = default;
168 
177  virtual void Init();
178 
186  virtual void GetConfig(protocol::base::VectorVariant& params) const override;
187 
197  virtual void GetConfigList(utils::bat::DbVector& cfg_list,
198  std::string prefix) const override;
199 
207  virtual void GetInputList(std::vector<std::string>& channel_list) const ;
208 
216  virtual void GetOutputList(std::vector<std::pair<std::string, std::string>>& channel_list) const ;
217 
228  bool IsNoRpc() const;
229 
236  bool IsSensor() const;
237 
238  std::string GetChannelType(const std::string& channel) const;
239  std::string GetChannelDescription(const std::string& channel) const;
240  std::string GetChannelNamedValue(const std::string& channel,
241  const std::string& value) const;
242 
243  std::optional<IODevChannel> GetChannelConfig(const std::string& channel) const;
244 
245 private:
246  std::map<std::string, IODevChannel> m_channel_map;
247  log4cplus::Logger m_logger;
248 };
249 
250 }
251 
252 #include "iodevConfig.ipp"
253 #endif //FCF_DEVMGR_DEVICE_IODEV_CONFIG_HPP
m_logger(log4cplus::Logger::getInstance(LOGGER_NAME))
Definition: {{cookiecutter.device_name}}.cpp:32
Device Configuration class.
Definition: deviceConfig.hpp:126
sensor Configuration class
Definition: iodevConfig.hpp:143
bool IsNoRpc() const
Get NO RPC flag.
Definition: iodevConfig.cpp:248
IODevConfig(const std::string filename, const std::string name)
IODevConfig constructor.
Definition: iodevConfig.cpp:36
bool IsSensor() const
Get Sensor flag.
Definition: iodevConfig.cpp:255
std::string GetChannelType(const std::string &channel) const
Definition: iodevConfig.cpp:263
virtual void GetConfigList(utils::bat::DbVector &cfg_list, std::string prefix) const override
Get configuration list.
Definition: iodevConfig.cpp:150
virtual void GetConfig(protocol::base::VectorVariant &params) const override
Obtain the list of configuration parameters.
Definition: iodevConfig.cpp:142
virtual void GetOutputList(std::vector< std::pair< std::string, std::string >> &channel_list) const
Get output channel list.
Definition: iodevConfig.cpp:235
virtual void Init()
Read the configuration.
Definition: iodevConfig.cpp:53
std::string GetChannelDescription(const std::string &channel) const
Definition: iodevConfig.cpp:276
std::optional< IODevChannel > GetChannelConfig(const std::string &channel) const
Definition: iodevConfig.cpp:303
virtual void GetInputList(std::vector< std::string > &channel_list) const
Get input channel list.
Definition: iodevConfig.cpp:222
virtual ~IODevConfig()=default
DeviceConfig destructor.
std::string GetChannelNamedValue(const std::string &channel, const std::string &value) const
Definition: iodevConfig.cpp:289
Sensor Local Control System (LCS) Interface (IF) class.
Definition: iodevLcsIf.hpp:103
The IODev class.
Definition: iodev.hpp:38
DataContext class header file.
DeviceConfig class header file.
SensorHwErrors header file.
SensorRpcErrors header file.
type
Definition: fcfLampGui.py:20
constexpr int SUBSTATE_OP_ERROR
Definition: deviceConfig.hpp:108
constexpr int SUBSTATE_READY
Definition: deviceConfig.hpp:98
constexpr auto SUBSTATE_OP_ERROR_STR
Definition: deviceConfig.hpp:111
constexpr auto SUBSTATE_ERROR_STR
Definition: deviceConfig.hpp:105
constexpr int SUBSTATE_ERROR
Definition: deviceConfig.hpp:100
constexpr int SUBSTATE_NOTREADY
Definition: deviceConfig.hpp:97
constexpr auto SUBSTATE_NOTREADY_STR
Definition: deviceConfig.hpp:102
constexpr auto SUBSTATE_READY_STR
Definition: deviceConfig.hpp:104
Definition: iodev.hpp:18
constexpr auto SI_CAT_STR
Definition: iodevConfig.hpp:73
constexpr auto DO_TYPE_STR
Definition: iodevConfig.hpp:65
constexpr int SUBSTATE_OP_MONITORING
Definition: iodevConfig.hpp:49
constexpr auto IO_CAT_STR
Definition: iodevConfig.hpp:77
constexpr auto CI_LOG
Definition: iodevConfig.hpp:41
constexpr auto SO_CAT_STR
Definition: iodevConfig.hpp:78
constexpr auto CI_TYPE
Definition: iodevConfig.hpp:39
constexpr auto CI_NAMED_MAPPING
Definition: iodevConfig.hpp:45
constexpr auto CI_NAME
Definition: iodevConfig.hpp:36
constexpr auto SI_TYPE_STR
Definition: iodevConfig.hpp:63
constexpr auto CI_HEADER
Definition: iodevConfig.hpp:40
constexpr auto II_TYPE_STR
Definition: iodevConfig.hpp:62
constexpr auto CI_CHANNELS
Definition: iodevConfig.hpp:35
constexpr auto SUBSTATE_OP_MONITORING_STR
Definition: iodevConfig.hpp:50
constexpr auto AO_CAT_STR
Definition: iodevConfig.hpp:76
constexpr auto CI_VALUE
Definition: iodevConfig.hpp:44
constexpr auto CI_ALIAS
Definition: iodevConfig.hpp:38
const std::unordered_map< short, std::string > SubstateMap
Definition: iodevConfig.hpp:52
constexpr auto CI_NO_RPC
Definition: iodevConfig.hpp:31
constexpr auto AI_CAT_STR
Definition: iodevConfig.hpp:71
constexpr auto DI_CAT_STR
Definition: iodevConfig.hpp:70
constexpr auto CI_UNIT
Definition: iodevConfig.hpp:42
constexpr auto LOGGER_NAME
Definition: iodevConfig.hpp:30
constexpr auto RPC_SET_OUTPUTS
Definition: iodevConfig.hpp:81
constexpr auto CI_SENSOR
Definition: iodevConfig.hpp:32
constexpr auto IO_TYPE_STR
Definition: iodevConfig.hpp:67
constexpr auto SO_TYPE_STR
Definition: iodevConfig.hpp:68
constexpr auto AO_TYPE_STR
Definition: iodevConfig.hpp:66
constexpr auto DI_TYPE_STR
Definition: iodevConfig.hpp:60
constexpr auto CI_DESCRIPTION
Definition: iodevConfig.hpp:37
const std::unordered_map< std::string, std::string > IODevTypeMap
Definition: iodevConfig.hpp:84
constexpr auto DO_CAT_STR
Definition: iodevConfig.hpp:75
constexpr auto II_CAT_STR
Definition: iodevConfig.hpp:72
constexpr auto AI_TYPE_STR
Definition: iodevConfig.hpp:61
constexpr auto CI_MAP
Definition: iodevConfig.hpp:43
Definition: iodevConfig.hpp:96
std::string m_map
Definition: iodevConfig.hpp:130
std::string GetAlias() const
bool m_log
Definition: iodevConfig.hpp:128
std::string GetDescription() const
std::string m_unit
Definition: iodevConfig.hpp:129
void SetDescription(std::string description)
void SetMap(std::string map)
void AddNamedValue(std::string value, std::string name)
void SetType(std::string type)
std::string m_type
Definition: iodevConfig.hpp:126
bool m_header
Definition: iodevConfig.hpp:127
IODevChannel()
Definition: iodevConfig.cpp:26
void SetFitsPrefix(std::string prefix)
void SetAlias(std::string alias)
std::string m_alias
Definition: iodevConfig.hpp:125
std::string m_prefix
Definition: iodevConfig.hpp:131
std::unordered_map< std::string, string > m_named_values_map
Definition: iodevConfig.hpp:132
std::string GetNamedValue(std::string value) const
void SetUnit(std::string unit)
std::string m_description
Definition: iodevConfig.hpp:124
std::string GetFitsPrefix() const