ifw-fcf  5.0.0-pre2
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 
27 namespace 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:77
Sensor Local Control System (LCS) Interface (IF) class.
Definition: iodevLcsIf.hpp:103
void StartMonitoring()
Start monitoring of controller attributes.
Definition: iodevLcsIf.cpp:274
void Stop() override
Executes the Stop RPC.
Definition: iodevLcsIf.cpp:144
virtual bool IsOperational() const
Check if controller is in Operational.
Definition: iodevLcsIf.cpp:181
void Listener(protocol::base::VectorVariant &params)
Callback to manage changes on the monitored items.
Definition: iodevLcsIf.cpp:329
virtual bool IsNotReady() const
Check if controller is in Standby/NotReady state.
Definition: iodevLcsIf.cpp:169
void GetStates(int &state, int &substate) override
Get states (state and substate) of the controller.
Definition: iodevLcsIf.cpp:120
void Enable() override
Executes the Enable RPC.
Definition: iodevLcsIf.cpp:134
bool IsHwFailure() const
Check if Sensor is in hardware error.
Definition: iodevLcsIf.cpp:202
virtual ~IODevLcsIf()
Default destructor.
Definition: iodevLcsIf.hpp:130
virtual std::string GetRpcError(const short error_code) const
Definition: iodevLcsIf.cpp:396
virtual void ReadStatus(IODevControllerData &status)
Read status from the controller.
Definition: iodevLcsIf.cpp:318
void StopMonitoring()
Stop monitoring of controller attributes.
Definition: iodevLcsIf.cpp:296
virtual bool IsReady() const
Check if controller is in Standby/Ready state.
Definition: iodevLcsIf.cpp:150
void SetOutputs(const protocol::base::VectorVariant &channel_list)
Definition: iodevLcsIf.cpp:250
virtual void InitObject()
Initialize object.
Definition: iodevLcsIf.cpp:51
void WriteOutputs(const protocol::base::VectorVariant &channel_list)
Definition: iodevLcsIf.cpp:217
IODevLcsIf(std::shared_ptr< fcf::devmgr::common::IDeviceConfig > config, fcf::devmgr::common::DataContext &data_ctx)
IODevLcsIf constructor.
Definition: iodevLcsIf.cpp:41
@ 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:36
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
friend std::ostream & operator<<(std::ostream &dest, const IODevData &obj)
Definition: iodevLcsIf.cpp:24
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)
protocol::base::Variant m_value
Definition: iodevLcsIf.hpp:52
std::string m_named_value
Definition: iodevLcsIf.hpp:53
void SetValue(const bool &value)