ifw-fcf 7.1.4
Loading...
Searching...
No Matches
iodevConfig.hpp
Go to the documentation of this file.
1
8#ifndef FCF_DEVMGR_DEVICE_IODEV_CONFIG_HPP
9#define FCF_DEVMGR_DEVICE_IODEV_CONFIG_HPP
10
11#include <string>
12#include <vector>
13#include <utility>
14
15#include <yaml-cpp/yaml.h>
16
17#include <ifw/core/utils/bat/logger.hpp>
22
23
25
26constexpr auto LOGGER_NAME = "iodev";
27constexpr auto CI_NO_RPC = "norpc";
28constexpr auto CI_SENSOR = "sensor";
29
30// Constants for internal mapping
31constexpr auto CI_CHANNELS = "channels";
32constexpr auto CI_NAME = "name";
33constexpr auto CI_DESCRIPTION = "description";
34constexpr auto CI_ALIAS = "alias";
35constexpr auto CI_TYPE = "type";
36constexpr auto CI_HEADER = "header";
37constexpr auto CI_LOG = "log";
38constexpr auto CI_UNIT = "unit";
39constexpr auto CI_MAP = "map";
40constexpr auto CI_VALUE = "value";
41constexpr auto CI_NAMED_MAPPING = "named_values";
42
43
44// Specific constant values for Sensor device state/substate
45constexpr int SUBSTATE_OP_MONITORING = 200;
46constexpr auto SUBSTATE_OP_MONITORING_STR = "Monitoring";
47
55
56constexpr auto DI_TYPE_STR = "DI";
57constexpr auto AI_TYPE_STR = "AI";
58constexpr auto II_TYPE_STR = "II";
59constexpr auto SI_TYPE_STR = "SI";
60
61constexpr auto DO_TYPE_STR = "DO";
62constexpr auto AO_TYPE_STR = "AO";
63constexpr auto IO_TYPE_STR = "IO";
64constexpr auto SO_TYPE_STR = "SO";
65
66constexpr auto DI_CAT_STR = "diChannels";
67constexpr auto AI_CAT_STR = "aiChannels";
68constexpr auto II_CAT_STR = "iiChannels";
69constexpr auto SI_CAT_STR = "siChannels";
70
71constexpr auto DO_CAT_STR = "doChannels";
72constexpr auto AO_CAT_STR = "aoChannels";
73constexpr auto IO_CAT_STR = "ioChannels";
74constexpr auto SO_CAT_STR = "soChannels";
75
76// Specific iodev RPC
77constexpr auto RPC_SET_OUTPUTS = "rpcSetOutputs";
78
79
80const std::unordered_map<std::string, std::string> IO_DEV_TYPE_MAP = {
89};
90
91
93public:
95 virtual ~IODevChannel() = default;
96
97 inline std::string GetDescription() const;
98 inline std::string GetAlias() const;
99 inline std::string GetType() const;
100 inline bool GetHeaderFlag() const;
101 inline bool GetLogFlag() const;
102 inline std::string GetUnit() const;
103 inline std::string GetMap() const;
104 inline std::string GetCat() const;
105 inline std::string GetFitsPrefix() const;
106 inline std::string GetNamedValue(std::string value) const;
107
108 inline void SetDescription(std::string description);
109 inline void SetAlias(std::string alias);
110 inline void SetType(std::string type);
111 inline void SetHeaderFlag(bool flag);
112 inline void SetLogFlag(bool flag);
113 inline void SetUnit(std::string unit);
114 inline void SetMap(std::string map);
115 inline void SetFitsPrefix(std::string prefix);
116 inline void AddNamedValue(std::string value, std::string name);
117
118
119protected:
120 std::string m_description; // NOLINT(misc-non-private-member-variables-in-classes)
121 std::string m_alias; // NOLINT(misc-non-private-member-variables-in-classes)
122 std::string m_type; // NOLINT(misc-non-private-member-variables-in-classes)
123 bool m_header; // NOLINT(misc-non-private-member-variables-in-classes)
124 bool m_log; // NOLINT(misc-non-private-member-variables-in-classes)
125 std::string m_unit; // NOLINT(misc-non-private-member-variables-in-classes)
126 std::string m_map; // NOLINT(misc-non-private-member-variables-in-classes)
127 std::string m_prefix; // NOLINT(misc-non-private-member-variables-in-classes)
128 std::unordered_map<std::string, string> m_named_values_map; // NOLINT(misc-non-private-member-variables-in-classes)
129};
130
131class IODev;
140
141 friend class IODev;
142 friend class IODevLcsIf;
143
144public:
145
151 IODevConfig(const std::string filename,
152 const std::string name);
153
158 IODevConfig(const std::string name);
159
163 virtual ~IODevConfig() = default;
164
173 void Init();
174
182 virtual void GetConfig(ifw::core::protocol::base::VectorVariant& params) const override;
183
193 virtual void GetConfigList(ifw::core::utils::bat::DbVector& cfg_list,
194 std::string prefix) const override;
195
203 virtual void GetInputList(std::vector<std::string>& channel_list) const ;
204
212 virtual void GetOutputList(std::vector<std::pair<std::string, std::string>>& channel_list) const ;
213
224 bool IsNoRpc() const;
225
232 bool IsSensor() const;
233
234 std::string GetChannelType(const std::string& channel) const;
235 std::string GetChannelDescription(const std::string& channel) const;
236 std::string GetChannelNamedValue(const std::string& channel,
237 const std::string& value) const;
238
239 std::optional<IODevChannel> GetChannelConfig(const std::string& channel) const;
240
241private:
242 std::map<std::string, IODevChannel> m_channel_map;
243 log4cplus::Logger m_logger;
244};
245
246}
247
248#include "iodevConfig.ipp"
249#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:124
sensor Configuration class
Definition iodevConfig.hpp:139
virtual void GetOutputList(std::vector< std::pair< std::string, std::string > > &channel_list) const
Get output channel list.
Definition iodevConfig.cpp:230
std::string GetChannelDescription(const std::string &channel) const
Definition iodevConfig.cpp:271
virtual void GetInputList(std::vector< std::string > &channel_list) const
Get input channel list.
Definition iodevConfig.cpp:217
bool IsSensor() const
Get Sensor flag.
Definition iodevConfig.cpp:250
bool IsNoRpc() const
Get NO RPC flag.
Definition iodevConfig.cpp:243
virtual void GetConfigList(ifw::core::utils::bat::DbVector &cfg_list, std::string prefix) const override
Get configuration list.
Definition iodevConfig.cpp:145
IODevConfig(const std::string filename, const std::string name)
IODevConfig constructor.
Definition iodevConfig.cpp:31
std::string GetChannelNamedValue(const std::string &channel, const std::string &value) const
Definition iodevConfig.cpp:284
virtual ~IODevConfig()=default
DeviceConfig destructor.
std::string GetChannelType(const std::string &channel) const
Definition iodevConfig.cpp:258
virtual void GetConfig(ifw::core::protocol::base::VectorVariant &params) const override
Obtain the list of configuration parameters.
Definition iodevConfig.cpp:137
void Init()
Read the configuration.
Definition iodevConfig.cpp:48
std::optional< IODevChannel > GetChannelConfig(const std::string &channel) const
Definition iodevConfig.cpp:298
Sensor Local Control System (LCS) Interface (IF) class.
Definition iodevLcsIf.hpp:99
The IODev class.
Definition iodev.hpp:37
constexpr int SUBSTATE_ERROR
Definition deviceConfig.hpp:97
constexpr int SUBSTATE_READY
Definition deviceConfig.hpp:95
constexpr auto SUBSTATE_ERROR_STR
Definition deviceConfig.hpp:102
constexpr auto SUBSTATE_NOTREADY_STR
Definition deviceConfig.hpp:99
constexpr auto SUBSTATE_READY_STR
Definition deviceConfig.hpp:101
constexpr int SUBSTATE_OP_ERROR
Definition deviceConfig.hpp:105
constexpr int SUBSTATE_NOTREADY
Definition deviceConfig.hpp:94
constexpr auto SUBSTATE_OP_ERROR_STR
Definition deviceConfig.hpp:108
IODev class header file.
Definition iodev.hpp:17
constexpr auto CI_HEADER
Definition iodevConfig.hpp:36
constexpr auto CI_MAP
Definition iodevConfig.hpp:39
constexpr auto CI_NO_RPC
Definition iodevConfig.hpp:27
constexpr auto DI_CAT_STR
Definition iodevConfig.hpp:66
constexpr auto SO_TYPE_STR
Definition iodevConfig.hpp:64
constexpr auto AI_CAT_STR
Definition iodevConfig.hpp:67
constexpr auto IO_CAT_STR
Definition iodevConfig.hpp:73
constexpr auto SUBSTATE_OP_MONITORING_STR
Definition iodevConfig.hpp:46
constexpr auto CI_SENSOR
Definition iodevConfig.hpp:28
const std::unordered_map< short, std::string > SUBSTATE_MAP
Definition iodevConfig.hpp:48
constexpr auto CI_LOG
Definition iodevConfig.hpp:37
constexpr auto CI_CHANNELS
Definition iodevConfig.hpp:31
constexpr auto CI_UNIT
Definition iodevConfig.hpp:38
constexpr int SUBSTATE_OP_MONITORING
Definition iodevConfig.hpp:45
constexpr auto AI_TYPE_STR
Definition iodevConfig.hpp:57
constexpr auto RPC_SET_OUTPUTS
Definition iodevConfig.hpp:77
constexpr auto AO_CAT_STR
Definition iodevConfig.hpp:72
constexpr auto DO_TYPE_STR
Definition iodevConfig.hpp:61
constexpr auto LOGGER_NAME
Definition iodevConfig.hpp:26
constexpr auto II_TYPE_STR
Definition iodevConfig.hpp:58
constexpr auto II_CAT_STR
Definition iodevConfig.hpp:68
constexpr auto SO_CAT_STR
Definition iodevConfig.hpp:74
constexpr auto SI_TYPE_STR
Definition iodevConfig.hpp:59
constexpr auto CI_NAME
Definition iodevConfig.hpp:32
constexpr auto CI_ALIAS
Definition iodevConfig.hpp:34
constexpr auto CI_DESCRIPTION
Definition iodevConfig.hpp:33
constexpr auto DI_TYPE_STR
Definition iodevConfig.hpp:56
constexpr auto AO_TYPE_STR
Definition iodevConfig.hpp:62
constexpr auto CI_TYPE
Definition iodevConfig.hpp:35
const std::unordered_map< std::string, std::string > IO_DEV_TYPE_MAP
Definition iodevConfig.hpp:80
constexpr auto CI_NAMED_MAPPING
Definition iodevConfig.hpp:41
constexpr auto CI_VALUE
Definition iodevConfig.hpp:40
constexpr auto IO_TYPE_STR
Definition iodevConfig.hpp:63
constexpr auto SI_CAT_STR
Definition iodevConfig.hpp:69
constexpr auto DO_CAT_STR
Definition iodevConfig.hpp:71
Definition iodevConfig.hpp:92
std::string m_alias
Definition iodevConfig.hpp:121
std::string m_description
Definition iodevConfig.hpp:120
bool m_log
Definition iodevConfig.hpp:124
std::string GetNamedValue(std::string value) const
std::string m_type
Definition iodevConfig.hpp:122
std::string m_prefix
Definition iodevConfig.hpp:127
void SetFitsPrefix(std::string prefix)
bool m_header
Definition iodevConfig.hpp:123
void AddNamedValue(std::string value, std::string name)
void SetAlias(std::string alias)
IODevChannel()
Definition iodevConfig.cpp:21
std::unordered_map< std::string, string > m_named_values_map
Definition iodevConfig.hpp:128
std::string m_map
Definition iodevConfig.hpp:126
std::string m_unit
Definition iodevConfig.hpp:125
void SetDescription(std::string description)