ifw  0.0.1-dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
lampLcsIf.hpp
Go to the documentation of this file.
1 
10 #ifndef DEVMGR_DEVICE_LAMP_IF_HPP
11 #define DEVMGR_DEVICE_LAMP_IF_HPP
12 
13 // System headers
14 #include <unordered_map>
15 
16 // Third party headers
17 #include <yaml-cpp/yaml.h>
18 
19 
20 #include <devmgr/common/deviceLcsIf.hpp>
21 #include <devmgr/devices/lampConfig.hpp>
22 #include <devmgr/common/dataContext.hpp>
23 
24 namespace devmgr {
25  namespace lamp {
26 
34  struct LampControllerData : public devmgr::common::DeviceControllerData {
35  public:
37  virtual ~LampControllerData();
38 
39  inline double GetIntensity() const;
40  inline void SetIntensity(double intensity);
41 
42  inline std::string GetErrorText() const;
43 
44  void SetData(const LampControllerData& data);
45 
46  protected:
47  double m_intensity;
48  };
49 
50 
51 
65  class LampLcsIf : public devmgr::common::DeviceLcsIf
66  {
67 
68  // enumerations for the lamp status
69  enum {
70  STAT_LOCAL = 1,
71  STAT_ERROR = 2,
72  STAT_HW_STATUS = 3,
73  STAT_STATE = 4,
74  STAT_SUBSTATE = 5,
75  STAT_INTENSITY = 6,
76  STAT_STATUS = 7
77  };
78 
79  public:
85  LampLcsIf(std::shared_ptr<devmgr::common::IDeviceConfig> config,
86  devmgr::common::DataContext& data_ctx);
87 
88 
93  virtual bool IsReady();
94 
99  virtual bool IsOperational() ;
100 
107  void ReadConfig();
108 
115  void SwitchOn(double intensity, unsigned int time);
116 
123  void SwitchOff();
124 
129  bool IsTurningOn() ;
130 
135  bool IsTurningOff();
136 
141  bool IsOn() ;
142 
147  bool IsOff() ;
148 
153  bool IsHwFailure();
154 
163  virtual void ReadStatus(LampControllerData& status);
164 
174  void StartMonitoring();
175 
183  void StopMonitoring();
184 
196  void Listener(fcf::common::VectorVariant& params);
197 
203  virtual std::string GetRpcError(const short error_code) const;
204 
209  virtual std::string GetHwError(int& error_code, const bool update = false);
210 
211  private:
212 
224  void StoreAttribute(const std::string key,
225  const fcf::common::Variant& value,
226  bool publish,
227  int attribute);
228 
236  void PublishState(const fcf::common::Variant& value);
237 
245  void PublishSubstate(const fcf::common::Variant& value);
246 
247 
248  protected:
252  std::unordered_map<std::string, short> m_status_map;
253 
256  std::vector<std::string> m_monitor_vector;
257 
258  private:
259  devmgr::common::DataContext& m_data_ctx;
260  static std::timed_mutex m_mutex;
261 
262 
263  };
264  }
265 }
266 
267 #include "lampLcsIf.inline"
268 
269 #endif //DEVMGR_DEVICE_LAMP_IF_HPP
double value
Definition: easylogging++.h:814
void SetIntensity(double intensity)
Device Local Control System (LCS) Interface (IF) class.
Definition: deviceLcsIf.hpp:69
void SwitchOff()
Executes the SwitchOff RPC.
Definition: lampLcsIf.cpp:211
void Listener(fcf::common::VectorVariant &params)
Callback to manageUpdateStatus(); changes on the monitored items.
Definition: lampLcsIf.cpp:471
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:30
bool IsHwFailure()
Check if lamp is in hardware error.
Definition: lampLcsIf.cpp:364
void SwitchOn(double intensity, unsigned int time)
Executes the SwitchOn RPC.
Definition: lampLcsIf.cpp:155
void SetData(const LampControllerData &data)
Definition: lampLcsIf.cpp:42
virtual bool IsOperational()
Check if controller is in Operational.
Definition: lampLcsIf.cpp:268
bool IsOn()
Check if lamp is on.
Definition: lampLcsIf.cpp:328
std::string GetErrorText() const
virtual std::string GetRpcError(const short error_code) const
Definition: lampLcsIf.cpp:540
virtual ~LampControllerData()
Definition: lampLcsIf.cpp:39
bool IsTurningOff()
Check if controller is switching the lamp off.
Definition: lampLcsIf.cpp:308
void StartMonitoring()
Start monitoring of controller attributes.
Definition: lampLcsIf.cpp:450
std::unordered_map< std::string, short > m_status_map
Definition: lampLcsIf.hpp:252
void ReadConfig()
Read the configuration.
Definition: lampLcsIf.cpp:106
LampLcsIf(std::shared_ptr< devmgr::common::IDeviceConfig > config, devmgr::common::DataContext &data_ctx)
LampLcsIf constructor.
Definition: lampLcsIf.cpp:50
bool IsTurningOn()
Check if controller is switching the lamp on.
Definition: lampLcsIf.cpp:288
LampControllerData()
Definition: lampLcsIf.cpp:34
Definition: dataContext.hpp:73
virtual std::string GetHwError(int &error_code, const bool update=false)
Get error message.
Definition: lampLcsIf.cpp:570
bool IsOff()
Check if lamp is off.
Definition: lampLcsIf.cpp:346
virtual bool IsReady()
Check if controller is in Standby/Ready state.
Definition: lampLcsIf.cpp:246
double m_intensity
Definition: lampLcsIf.hpp:47
optional int32 error_code
Definition: topics.proto:14
virtual void ReadStatus(LampControllerData &status)
Read status from the controller.
Definition: lampLcsIf.cpp:382
std::vector< std::string > m_monitor_vector
Definition: lampLcsIf.hpp:256
void StopMonitoring()
Stop monitoring of controller attributes.
Definition: lampLcsIf.cpp:460
optional float intensity
Definition: topics.proto:12