ifw-fcf 8.0.2
 
Loading...
Searching...
No Matches
iodevLcsIf.hpp
Go to the documentation of this file.
1
7
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
25 template <typename T>
26 constexpr bool is_supported_scalar_v =
27 std::is_same_v<T, bool> ||
28 std::is_same_v<T, int> ||
29 std::is_same_v<T, unsigned int> ||
30 std::is_same_v<T, short> ||
31 std::is_same_v<T, double> ||
32 std::is_same_v<T, float> ||
33 std::is_same_v<T, uint8_t>;
34
39 struct IODevData
40 {
41 IODevData();
42 virtual ~IODevData();
43
44 void GetValue(bool &value) const;
45 void GetValue(double &value) const;
46 void GetValue(int &value) const;
47 std::string GetNamedValue() const;
48 void SetValue(const bool &value);
49 void SetValue(const double &value);
50 void SetValue(const int &value);
51 void SetNamedValue(const std::string &value);
52
53 ifw::fnd::defs::Value GetRawValue() const;
54 void SetRawValue(const ifw::fnd::defs::Value &value);
55 friend std::ostream &operator<<(std::ostream &dest, const IODevData &obj);
56
57 private:
58 ifw::fnd::defs::Value m_value;
59 std::string m_named_value;
60 };
61
69
70
72 public:
74 virtual ~IODevControllerData();
75
76 inline std::string GetErrorText() const;
77 inline virtual std::string GetSubstateStr() const;
78
79 inline void ClearChannelValues();
80 inline void SetChannelValue(const std::string& channel,
81 const IODevData& value);
82 inline void GetChannelValue(const std::string& channel,
83 IODevData& data) const;
84
85
86
87 void SetData(const IODevControllerData& data);
88
89
90 private:
91 std::unordered_map<std::string, IODevData> m_values;
92 };
93
94
108
110 // enumerations for the iodev status
111 public:
112 enum {
118
119 };
120
121 public:
131 IODevLcsIf(std::shared_ptr<ifw::fcf::devmgr::common::IDeviceConfig> config,
133
137 virtual ~IODevLcsIf() {};
138
139
148 virtual void InitObject();
149
159 void GetStates(int& state, int& substate) override;
160
167 void Enable() override;
168
177 void Stop() override;
178
183 virtual bool IsReady() const;
184
185 virtual bool IsNotReady() const;
186
191 virtual bool IsOperational() const;
192
197 bool IsHwFailure() const;
198
199 void WriteOutputs(const std::vector<ifw::fnd::defs::WriteItem>& channel_list);
200 void SetOutputs(const std::vector<ifw::fnd::defs::WriteItem>& channel_list);
201
211 void StartMonitoring();
212
220 void StopMonitoring();
221
222
232 virtual void ReadStatus(IODevControllerData& status);
233
234
246 void Listener(const ifw::fnd::defs::Notification& note);
247
253 virtual std::string GetRpcError(const short error_code) const;
254
255 private:
256
264 void PublishState(const ifw::fnd::defs::Value& value);
265
273 void PublishSubstate(const ifw::fnd::defs::Value& value);
274
275 void PublishError(const ifw::fnd::defs::Value& value);
276
277 void PublishChannel(const std::string channel,
278 const ifw::fnd::defs::Value& value);
279
280 private:
283 std::unordered_map<std::string, std::string> m_channels_map;
284 std::unordered_map<std::string, IODevData> m_channel_values;
285 log4cplus::Logger m_logger;
286
287 };
288}
289
290#include "iodevLcsIf.ipp"
291
292#endif //FCF_DEVMGR_DEVICE_IODEV_LCSIF_HPP
Definition dataContext.hpp:86
Definition deviceLcsIf.hpp:91
virtual void ReadStatus(DeviceControllerData &status)
ReadStatus.
Definition deviceLcsIf.cpp:651
void StopMonitoring()
Stop monitoring of controller attributes.
Definition iodevLcsIf.cpp:336
virtual bool IsReady() const
Check if controller is in Standby/Ready state.
Definition iodevLcsIf.cpp:190
void Stop() override
Executes the Stop RPC.
Definition iodevLcsIf.cpp:184
void GetStates(int &state, int &substate) override
Get states (state and substate) of the controller.
Definition iodevLcsIf.cpp:151
bool IsHwFailure() const
Check if Sensor is in hardware error.
Definition iodevLcsIf.cpp:241
IODevLcsIf(std::shared_ptr< ifw::fcf::devmgr::common::IDeviceConfig > config, ifw::fcf::devmgr::common::DataContext &data_ctx)
IODevLcsIf constructor.
Definition iodevLcsIf.cpp:56
virtual void InitObject()
Initialize object.
Definition iodevLcsIf.cpp:66
virtual bool IsNotReady() const
Check if controller is in Standby/NotReady state.
Definition iodevLcsIf.cpp:209
void StartMonitoring()
Start monitoring of controller attributes.
Definition iodevLcsIf.cpp:308
virtual void ReadStatus(IODevControllerData &status)
Read status from the controller.
Definition iodevLcsIf.cpp:356
void Listener(const ifw::fnd::defs::Notification &note)
Callback to manage changes on the monitored items.
Definition iodevLcsIf.cpp:367
virtual bool IsOperational() const
Check if controller is in Operational.
Definition iodevLcsIf.cpp:221
virtual ~IODevLcsIf()
Default destructor.
Definition iodevLcsIf.hpp:137
void Enable() override
Executes the Enable RPC.
Definition iodevLcsIf.cpp:174
void WriteOutputs(const std::vector< ifw::fnd::defs::WriteItem > &channel_list)
Definition iodevLcsIf.cpp:256
virtual std::string GetRpcError(const short error_code) const
Definition iodevLcsIf.cpp:406
void SetOutputs(const std::vector< ifw::fnd::defs::WriteItem > &channel_list)
Definition iodevLcsIf.cpp:287
@ STAT_SUBSTATE
Definition iodevLcsIf.hpp:116
@ STAT_STATE
Definition iodevLcsIf.hpp:115
@ STAT_ERROR
Definition iodevLcsIf.hpp:114
@ STAT_CHANNEL
Definition iodevLcsIf.hpp:117
@ STAT_LOCAL
Definition iodevLcsIf.hpp:113
IODev class header file.
Definition iodev.hpp:17
constexpr bool is_supported_scalar_v
Definition iodevLcsIf.hpp:26
The DeviceControllerData struct.
Definition deviceLcsIf.hpp:49
The IODevControllerData struct.
Definition iodevLcsIf.hpp:71
void SetData(const IODevControllerData &data)
Definition iodevLcsIf.cpp:51
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:44
virtual ~IODevControllerData()
Definition iodevLcsIf.cpp:48
The ChannelData struct.
Definition iodevLcsIf.hpp:40
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::fnd::defs::Value &value)
void SetValue(const bool &value)
std::string GetNamedValue() const
IODevData()
Definition iodevLcsIf.cpp:18
void SetValue(const int &value)
ifw::fnd::defs::Value GetRawValue() const
virtual ~IODevData()
Definition iodevLcsIf.cpp:21
friend std::ostream & operator<<(std::ostream &dest, const IODevData &obj)
Definition iodevLcsIf.cpp:24