ifw-fcf 6.0.0
Loading...
Searching...
No Matches
iodevLcsIf.hpp
Go to the documentation of this file.
1
10#ifndef FCF_DEVMGR_DEVICE_IODEV_LCSIF_HPP
11#define FCF_DEVMGR_DEVICE_IODEV_LCSIF_HPP
12
13// System headers
14#include <unordered_map>
15
16// Third party headers
17#include <yaml-cpp/yaml.h>
18
22
23#include <Fcfif.hpp>
24#include <rad/mal/publisher.hpp>
25
26
27namespace fcf::devmgr::iodev {
28
33 struct IODevData {
34 IODevData();
35 virtual ~IODevData();
36
37 void GetValue(bool& value) const;
38 void GetValue(double& value) const;
39 void GetValue(int& value) const;
40 std::string GetNamedValue() const;
41 void SetValue(const bool& value);
42 void SetValue(const double& value);
43 void SetValue(const int& value);
44 void SetNamedValue( const std::string& value);
45
46 protocol::base::Variant GetRawValue() const;
47 void SetRawValue(const protocol::base::Variant& value);
48 friend std::ostream& operator<<(std::ostream& dest, const IODevData& obj);
49
50 protected:
51
52 protocol::base::Variant m_value;
53 std::string m_named_value;
54 };
55
66 public:
68 virtual ~IODevControllerData();
69
70 inline std::string GetErrorText() const;
71 inline virtual std::string GetSubstateStr() const;
72
73 inline void ClearChannelValues();
74 inline void SetChannelValue(const std::string& channel,
75 const IODevData& value);
76 inline void GetChannelValue(const std::string& channel,
77 IODevData& data) const;
78
79
80
81 void SetData(const IODevControllerData& data);
82
83
84 private:
85 std::unordered_map<std::string, IODevData> m_values;
86 };
87
88
104 // enumerations for the iodev status
105 public:
106 enum {
112
113 };
114
115 public:
124 IODevLcsIf(std::shared_ptr<fcf::devmgr::common::IDeviceConfig> config,
126
130 virtual ~IODevLcsIf() {};
131
132
141 virtual void InitObject();
142
152 void GetStates(int& state, int& substate) override;
153
160 void Enable() override;
161
170 void Stop() override;
171
176 virtual bool IsReady() const;
177
178 virtual bool IsNotReady() const;
179
184 virtual bool IsOperational() const;
185
190 bool IsHwFailure() const;
191
192 void WriteOutputs(const protocol::base::VectorVariant& channel_list);
193 void SetOutputs(const protocol::base::VectorVariant& channel_list);
194
204 void StartMonitoring();
205
213 void StopMonitoring();
214
215
225 virtual void ReadStatus(IODevControllerData& status);
226
227
239 void Listener(protocol::base::VectorVariant& params);
240
246 virtual std::string GetRpcError(const short error_code) const;
247
248 private:
249
257 void PublishState(const protocol::base::Variant& value);
258
266 void PublishSubstate(const protocol::base::Variant& value);
267
268 void PublishError(const protocol::base::Variant& value);
269
270 void PublishChannel(const std::string channel,
271 const protocol::base::Variant& value);
272
273 private:
276 std::unordered_map<std::string, std::string> m_channels_map;
277 std::unordered_map<std::string, IODevData> m_channel_values;
278 log4cplus::Logger m_logger;
279
280 };
281}
282
283#include "iodevLcsIf.ipp"
284
285#endif //FCF_DEVMGR_DEVICE_IODEV_LCSIF_HPP
Definition: dataContext.hpp:90
Definition: deviceLcsIf.hpp:87
Sensor Local Control System (LCS) Interface (IF) class.
Definition: iodevLcsIf.hpp:103
void StartMonitoring()
Start monitoring of controller attributes.
Definition: iodevLcsIf.cpp:279
void Stop() override
Executes the Stop RPC.
Definition: iodevLcsIf.cpp:151
virtual bool IsOperational() const
Check if controller is in Operational.
Definition: iodevLcsIf.cpp:188
void Listener(protocol::base::VectorVariant &params)
Callback to manage changes on the monitored items.
Definition: iodevLcsIf.cpp:334
virtual bool IsNotReady() const
Check if controller is in Standby/NotReady state.
Definition: iodevLcsIf.cpp:176
void GetStates(int &state, int &substate) override
Get states (state and substate) of the controller.
Definition: iodevLcsIf.cpp:127
void Enable() override
Executes the Enable RPC.
Definition: iodevLcsIf.cpp:141
bool IsHwFailure() const
Check if Sensor is in hardware error.
Definition: iodevLcsIf.cpp:208
virtual ~IODevLcsIf()
Default destructor.
Definition: iodevLcsIf.hpp:130
virtual std::string GetRpcError(const short error_code) const
Definition: iodevLcsIf.cpp:376
virtual void ReadStatus(IODevControllerData &status)
Read status from the controller.
Definition: iodevLcsIf.cpp:323
void StopMonitoring()
Stop monitoring of controller attributes.
Definition: iodevLcsIf.cpp:301
virtual bool IsReady() const
Check if controller is in Standby/Ready state.
Definition: iodevLcsIf.cpp:157
void SetOutputs(const protocol::base::VectorVariant &channel_list)
Definition: iodevLcsIf.cpp:255
virtual void InitObject()
Initialize object.
Definition: iodevLcsIf.cpp:51
void WriteOutputs(const protocol::base::VectorVariant &channel_list)
Definition: iodevLcsIf.cpp:223
@ STAT_STATE
Definition: iodevLcsIf.hpp:109
@ STAT_ERROR
Definition: iodevLcsIf.hpp:108
@ STAT_SUBSTATE
Definition: iodevLcsIf.hpp:110
@ STAT_CHANNEL
Definition: iodevLcsIf.hpp:111
@ STAT_LOCAL
Definition: iodevLcsIf.hpp:107
DataContext class header file.
deviceLcsIf class header file.
IODevConfig class header file.
Definition: iodev.hpp:18
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:46
The IODevControllerData struct.
Definition: iodevLcsIf.hpp:65
virtual ~IODevControllerData()
Definition: iodevLcsIf.cpp:33
virtual std::string GetSubstateStr() const
void SetData(const IODevControllerData &data)
Definition: iodevLcsIf.cpp:36
void GetChannelValue(const std::string &channel, IODevData &data) const
IODevControllerData()
Definition: iodevLcsIf.cpp:29
void SetChannelValue(const std::string &channel, const IODevData &value)
The ChannelData struct.
Definition: iodevLcsIf.hpp:33
protocol::base::Variant GetRawValue() const
IODevData()
Definition: iodevLcsIf.cpp:18
virtual ~IODevData()
Definition: iodevLcsIf.cpp:21
void SetValue(const int &value)
void GetValue(int &value) const
void GetValue(bool &value) const
void SetRawValue(const protocol::base::Variant &value)
std::string GetNamedValue() const
void SetValue(const double &value)
void GetValue(double &value) const
void SetNamedValue(const std::string &value)
friend std::ostream & operator<<(std::ostream &dest, const IODevData &obj)
Definition: iodevLcsIf.cpp:24
protocol::base::Variant m_value
Definition: iodevLcsIf.hpp:52
std::string m_named_value
Definition: iodevLcsIf.hpp:53
void SetValue(const bool &value)