ifw  0.0.1-dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
sensorLcsIf.hpp
Go to the documentation of this file.
1 
10 #ifndef DEVMGR_DEVICE_SENSOR_LCSIF_HPP
11 #define DEVMGR_DEVICE_SENSOR_LCSIF_HPP
12 
13 // System headers
14 #include <unordered_map>
15 
16 // Third party headers
17 #include <yaml-cpp/yaml.h>
18 
19 #include <devmgr/common/deviceLcsIf.hpp>
20 #include <devmgr/devices/sensorConfig.hpp>
21 #include <devmgr/common/dataContext.hpp>
22 
23 namespace devmgr {
24  namespace sensor {
25 
30  struct ChannelData {
31  ChannelData();
32  virtual ~ChannelData();
33 
34 
35  void GetValue(bool& value) const;
36  void GetValue(double& value) const;
37  void GetValue(int& value) const;
38 
39 
40  void SetValue(const fcf::common::Variant value);
41  friend std::ostream& operator<<(std::ostream& dest, const ChannelData& obj);
42 
43  protected:
44 
45  fcf::common::Variant m_value;
46  };
47 
55  class SensorLcsIf;
56 
57  struct SensorControllerData : devmgr::common::DeviceControllerData {
58  public:
60  virtual ~SensorControllerData();
61 
62  inline std::string GetErrorText() const;
63 
64  inline void ClearChannelValues();
65  inline void SetChannelValue(std::string channel,
66  fcf::common::Variant value);
67  inline void GetChannelValue(std::string channel,
68  ChannelData& data);
69 
70 
71  void SetData(const SensorControllerData& data);
72 
73  friend class SensorLcsIf;
74  protected:
75  std::unordered_map<std::string, ChannelData> m_values;
76  };
77 
78 
92  class SensorLcsIf : public devmgr::common::DeviceLcsIf
93  {
94  // enumerations for the Sensor status
95 
96  enum {
97  STAT_LOCAL = 1,
98  STAT_ERROR = 2,
99  STAT_STATE = 3,
100  STAT_SUBSTATE = 4,
101  STAT_CHANNEL = 5,
102  };
103 
104  public:
110  SensorLcsIf(std::shared_ptr<devmgr::common::IDeviceConfig> config,
111  devmgr::common::DataContext& data_ctx);
112 
117  virtual bool IsReady();
118 
123  virtual bool IsOperational() ;
124 
131  void ReadConfig();
132 
133 
138  bool IsHwFailure();
139 
149  virtual void ReadStatus(SensorControllerData& status);
150 
160  void StartMonitoring();
161 
169  void StopMonitoring();
170 
182  void Listener(fcf::common::VectorVariant& params);
183 
189  virtual std::string GetRpcError(const short error_code) const;
190 
195  virtual std::string GetHwError(int& error_code, const bool update = false);
196 
197  private:
198 
206  void PublishState(const fcf::common::Variant& value);
207 
215  void PublishSubstate(const fcf::common::Variant& value);
216 
217  void PublishChannel(const std::string channel,
218  const fcf::common::Variant& value);
219 
220 
221  protected:
225  std::unordered_map<std::string, short> m_status_map;
226 
229  std::vector<std::string> m_monitor_vector;
230 
233  std::unordered_map<std::string, std::string> m_channels_map;
234 
235  private:
236  devmgr::common::DataContext& m_data_ctx;
237  static std::timed_mutex m_mutex;
238 
239 
240  };
241  }
242 }
243 
244 #include "sensorLcsIf.inline"
245 
246 #endif //DEVMGR_DEVICE_SENSOR_LCSIF_HPP
double value
Definition: easylogging++.h:814
Device Local Control System (LCS) Interface (IF) class.
Definition: deviceLcsIf.hpp:69
void GetChannelValue(std::string channel, ChannelData &data)
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:30
void GetValue(bool &value) const
virtual ~SensorControllerData()
Definition: sensorLcsIf.cpp:50
fcf::common::Variant m_value
Definition: sensorLcsIf.hpp:45
void ReadConfig()
Read the configuration.
Definition: sensorLcsIf.cpp:111
void SetValue(const fcf::common::Variant value)
void Listener(fcf::common::VectorVariant &params)
Callback to manage changes on the monitored items.
Definition: sensorLcsIf.cpp:344
std::unordered_map< std::string, ChannelData > m_values
Definition: sensorLcsIf.hpp:75
SensorControllerData()
Definition: sensorLcsIf.cpp:46
void StopMonitoring()
Stop monitoring of controller attributes.
Definition: sensorLcsIf.cpp:326
ChannelData()
Definition: sensorLcsIf.cpp:35
virtual ~ChannelData()
Definition: sensorLcsIf.cpp:38
virtual bool IsOperational()
Check if controller is in Operational.
Definition: sensorLcsIf.cpp:181
friend class SensorLcsIf
Definition: sensorLcsIf.hpp:73
SensorLcsIf(std::shared_ptr< devmgr::common::IDeviceConfig > config, devmgr::common::DataContext &data_ctx)
sensorLcsIf constructor.
Definition: sensorLcsIf.cpp:60
void SetData(const SensorControllerData &data)
Definition: sensorLcsIf.cpp:53
friend std::ostream & operator<<(std::ostream &dest, const ChannelData &obj)
Definition: sensorLcsIf.cpp:41
Definition: dataContext.hpp:73
virtual void ReadStatus(SensorControllerData &status)
Read status from the controller.
Definition: sensorLcsIf.cpp:218
void StartMonitoring()
Start monitoring of controller attributes.
Definition: sensorLcsIf.cpp:308
std::unordered_map< std::string, short > m_status_map
Definition: sensorLcsIf.hpp:225
virtual std::string GetHwError(int &error_code, const bool update=false)
Get error message.
Definition: sensorLcsIf.cpp:439
std::unordered_map< std::string, std::string > m_channels_map
Definition: sensorLcsIf.hpp:233
virtual bool IsReady()
Check if controller is in Standby/Ready state.
Definition: sensorLcsIf.cpp:161
optional int32 error_code
Definition: topics.proto:14
void SetChannelValue(std::string channel, fcf::common::Variant value)
std::vector< std::string > m_monitor_vector
Definition: sensorLcsIf.hpp:229
bool IsHwFailure()
Check if Sensor is in hardware error.
Definition: sensorLcsIf.cpp:200
virtual std::string GetRpcError(const short error_code) const
Definition: sensorLcsIf.cpp:413