ifw-fcf 6.0.0
Loading...
Searching...
No Matches
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
28namespace fcf::devmgr::iodev {
29
30constexpr auto LOGGER_NAME = "iodev";
31constexpr auto CI_NO_RPC = "norpc";
32constexpr auto CI_SENSOR = "sensor";
33
34// Constants for internal mapping
35constexpr auto CI_CHANNELS = "channels";
36constexpr auto CI_NAME = "name";
37constexpr auto CI_DESCRIPTION = "description";
38constexpr auto CI_ALIAS = "alias";
39constexpr auto CI_TYPE = "type";
40constexpr auto CI_HEADER = "header";
41constexpr auto CI_LOG = "log";
42constexpr auto CI_UNIT = "unit";
43constexpr auto CI_MAP = "map";
44constexpr auto CI_VALUE = "value";
45constexpr auto CI_NAMED_MAPPING = "named_values";
46
47
48// Specific constant values for Sensor device state/substate
49constexpr int SUBSTATE_OP_MONITORING = 200;
50constexpr auto SUBSTATE_OP_MONITORING_STR = "Monitoring";
51
52const std::unordered_map<short, std::string> SubstateMap = {
58};
59
60constexpr auto DI_TYPE_STR = "DI";
61constexpr auto AI_TYPE_STR = "AI";
62constexpr auto II_TYPE_STR = "II";
63constexpr auto SI_TYPE_STR = "SI";
64
65constexpr auto DO_TYPE_STR = "DO";
66constexpr auto AO_TYPE_STR = "AO";
67constexpr auto IO_TYPE_STR = "IO";
68constexpr auto SO_TYPE_STR = "SO";
69
70constexpr auto DI_CAT_STR = "diChannels";
71constexpr auto AI_CAT_STR = "aiChannels";
72constexpr auto II_CAT_STR = "iiChannels";
73constexpr auto SI_CAT_STR = "siChannels";
74
75constexpr auto DO_CAT_STR = "doChannels";
76constexpr auto AO_CAT_STR = "aoChannels";
77constexpr auto IO_CAT_STR = "ioChannels";
78constexpr auto SO_CAT_STR = "soChannels";
79
80// Specific iodev RPC
81constexpr auto RPC_SET_OUTPUTS = "rpcSetOutputs";
82
83
84const std::unordered_map<std::string, std::string> IODevTypeMap = {
93};
94
95
97public:
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
123protected:
124 std::string m_description;
125 std::string m_alias;
126 std::string m_type;
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
135class IODev;
144
145 friend class IODev;
146 friend class IODevLcsIf;
147
148public:
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
245private:
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
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 Init()
Read the configuration.
Definition: iodevConfig.cpp:53
std::string GetChannelDescription(const std::string &channel) const
Definition: iodevConfig.cpp:276
virtual void GetOutputList(std::vector< std::pair< std::string, std::string > > &channel_list) const
Get output channel list.
Definition: iodevConfig.cpp:235
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.
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