ifw-fcf 7.1.4
Loading...
Searching...
No Matches
iodevLcsIf.hpp
Go to the documentation of this file.
1
8#ifndef FCF_DEVMGR_DEVICE_IODEV_LCSIF_HPP
9#define FCF_DEVMGR_DEVICE_IODEV_LCSIF_HPP
10
11#include <unordered_map>
12
13#include <yaml-cpp/yaml.h>
14
18
19#include <Fcfif.hpp>
20#include <rad/mal/publisher.hpp>
21
22
24
29 struct IODevData {
30 IODevData();
31 virtual ~IODevData();
32
33 void GetValue(bool& value) const;
34 void GetValue(double& value) const;
35 void GetValue(int& value) const;
36 std::string GetNamedValue() const;
37 void SetValue(const bool& value);
38 void SetValue(const double& value);
39 void SetValue(const int& value);
40 void SetNamedValue( const std::string& value);
41
42 ifw::core::protocol::base::Variant GetRawValue() const;
43 void SetRawValue(const ifw::core::protocol::base::Variant& value);
44 friend std::ostream& operator<<(std::ostream& dest, const IODevData& obj);
45
46 private:
47
48 ifw::core::protocol::base::Variant m_value;
49 std::string m_named_value;
50 };
51
62 public:
64 virtual ~IODevControllerData();
65
66 inline std::string GetErrorText() const;
67 inline virtual std::string GetSubstateStr() const;
68
69 inline void ClearChannelValues();
70 inline void SetChannelValue(const std::string& channel,
71 const IODevData& value);
72 inline void GetChannelValue(const std::string& channel,
73 IODevData& data) const;
74
75
76
77 void SetData(const IODevControllerData& data);
78
79
80 private:
81 std::unordered_map<std::string, IODevData> m_values;
82 };
83
84
100 // enumerations for the iodev status
101 public:
102 enum {
108
109 };
110
111 public:
120 IODevLcsIf(std::shared_ptr<ifw::fcf::devmgr::common::IDeviceConfig> config,
122
126 virtual ~IODevLcsIf() {};
127
128
137 virtual void InitObject();
138
148 void GetStates(int& state, int& substate) override;
149
156 void Enable() override;
157
166 void Stop() override;
167
172 virtual bool IsReady() const;
173
174 virtual bool IsNotReady() const;
175
180 virtual bool IsOperational() const;
181
186 bool IsHwFailure() const;
187
188 void WriteOutputs(const ifw::core::protocol::base::VectorVariant& channel_list);
189 void SetOutputs(const ifw::core::protocol::base::VectorVariant& channel_list);
190
200 void StartMonitoring();
201
209 void StopMonitoring();
210
211
221 virtual void ReadStatus(IODevControllerData& status);
222
223
235 void Listener(ifw::core::protocol::base::VectorVariant& params);
236
242 virtual std::string GetRpcError(const short error_code) const;
243
244 private:
245
253 void PublishState(const ifw::core::protocol::base::Variant& value);
254
262 void PublishSubstate(const ifw::core::protocol::base::Variant& value);
263
264 void PublishError(const ifw::core::protocol::base::Variant& value);
265
266 void PublishChannel(const std::string channel,
267 const ifw::core::protocol::base::Variant& value);
268
269 private:
272 std::unordered_map<std::string, std::string> m_channels_map;
273 std::unordered_map<std::string, IODevData> m_channel_values;
274 log4cplus::Logger m_logger;
275
276 };
277}
278
279#include "iodevLcsIf.ipp"
280
281#endif //FCF_DEVMGR_DEVICE_IODEV_LCSIF_HPP
Definition dataContext.hpp:86
Definition deviceLcsIf.hpp:84
Sensor Local Control System (LCS) Interface (IF) class.
Definition iodevLcsIf.hpp:99
void WriteOutputs(const ifw::core::protocol::base::VectorVariant &channel_list)
Definition iodevLcsIf.cpp:239
void StopMonitoring()
Stop monitoring of controller attributes.
Definition iodevLcsIf.cpp:317
virtual bool IsReady() const
Check if controller is in Standby/Ready state.
Definition iodevLcsIf.cpp:173
void Stop() override
Executes the Stop RPC.
Definition iodevLcsIf.cpp:167
void Listener(ifw::core::protocol::base::VectorVariant &params)
Callback to manage changes on the monitored items.
Definition iodevLcsIf.cpp:350
void GetStates(int &state, int &substate) override
Get states (state and substate) of the controller.
Definition iodevLcsIf.cpp:134
bool IsHwFailure() const
Check if Sensor is in hardware error.
Definition iodevLcsIf.cpp:224
IODevLcsIf(std::shared_ptr< ifw::fcf::devmgr::common::IDeviceConfig > config, ifw::fcf::devmgr::common::DataContext &data_ctx)
IODevLcsIf constructor.
Definition iodevLcsIf.cpp:39
virtual void InitObject()
Initialize object.
Definition iodevLcsIf.cpp:49
virtual bool IsNotReady() const
Check if controller is in Standby/NotReady state.
Definition iodevLcsIf.cpp:192
@ STAT_SUBSTATE
Definition iodevLcsIf.hpp:106
@ STAT_STATE
Definition iodevLcsIf.hpp:105
@ STAT_ERROR
Definition iodevLcsIf.hpp:104
@ STAT_CHANNEL
Definition iodevLcsIf.hpp:107
@ STAT_LOCAL
Definition iodevLcsIf.hpp:103
void StartMonitoring()
Start monitoring of controller attributes.
Definition iodevLcsIf.cpp:295
virtual void ReadStatus(IODevControllerData &status)
Read status from the controller.
Definition iodevLcsIf.cpp:339
virtual bool IsOperational() const
Check if controller is in Operational.
Definition iodevLcsIf.cpp:204
virtual ~IODevLcsIf()
Default destructor.
Definition iodevLcsIf.hpp:126
void Enable() override
Executes the Enable RPC.
Definition iodevLcsIf.cpp:157
virtual std::string GetRpcError(const short error_code) const
Definition iodevLcsIf.cpp:392
void SetOutputs(const ifw::core::protocol::base::VectorVariant &channel_list)
Definition iodevLcsIf.cpp:271
IODev class header file.
Definition iodev.hpp:17
The DeviceControllerData struct.
Definition deviceLcsIf.hpp:42
The IODevControllerData struct.
Definition iodevLcsIf.hpp:61
void SetData(const IODevControllerData &data)
Definition iodevLcsIf.cpp:34
virtual std::string GetSubstateStr() const
void SetChannelValue(const std::string &channel, const IODevData &value)
void GetChannelValue(const std::string &channel, IODevData &data) const
IODevControllerData()
Definition iodevLcsIf.cpp:27
virtual ~IODevControllerData()
Definition iodevLcsIf.cpp:31
The ChannelData struct.
Definition iodevLcsIf.hpp:29
void SetNamedValue(const std::string &value)
void GetValue(bool &value) const
void SetValue(const double &value)
void GetValue(int &value) const
void GetValue(double &value) const
void SetRawValue(const ifw::core::protocol::base::Variant &value)
void SetValue(const bool &value)
ifw::core::protocol::base::Variant GetRawValue() const
std::string GetNamedValue() const
IODevData()
Definition iodevLcsIf.cpp:16
void SetValue(const int &value)
virtual ~IODevData()
Definition iodevLcsIf.cpp:19
friend std::ostream & operator<<(std::ostream &dest, const IODevData &obj)
Definition iodevLcsIf.cpp:22