ifw  0.0.1-dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
shutterLcsIf.hpp
Go to the documentation of this file.
1 
10 #ifndef DEVMGR_DEVICE_SHUTTER_IF_HPP
11 #define DEVMGR_DEVICE_SHUTTER_IF_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/shutterConfig.hpp>
21 #include <devmgr/common/dataContext.hpp>
22 
23 
24 namespace devmgr {
25  namespace shutter {
26 
34  struct ShutterControllerData : devmgr::common::DeviceControllerData {
35  public:
37  virtual ~ShutterControllerData();
38 
39  inline std::string GetErrorText() const;
40 
41  void SetData(const ShutterControllerData& data);
42 
43  protected:
44 
45  };
46 
60  class ShutterLcsIf : public devmgr::common::DeviceLcsIf
61  {
62 
63  enum {
64  STAT_LOCAL = 1,
65  STAT_ERROR = 2,
66  STAT_HW_STATUS = 3,
67  STAT_STATE = 4,
68  STAT_SUBSTATE = 5,
69  STAT_STATUS = 6
70  };
71 
72  public:
73 
79  ShutterLcsIf(std::shared_ptr<devmgr::common::IDeviceConfig> config,
80  devmgr::common::DataContext& data_ctx);
81 
88  void ReadConfig();
89 
94  virtual bool IsReady();
95 
100  virtual bool IsOperational();
101 
108  void Open();
109 
116  void Close();
117 
122  bool IsOpening();
123 
128  bool IsClosing();
129 
134  bool IsOpen() ;
135 
140  bool IsClose() ;
141 
146  bool IsHwFailure();
147 
152  virtual void ReadStatus(devmgr::common::DeviceControllerData& status);
153 
162  void StartMonitoring();
163 
172  void StopMonitoring();
173 
185  void Listener(fcf::common::VectorVariant& params);
186 
192  virtual std::string GetRpcError(const short error) const;
193 
198  virtual std::string GetHwError(int& error_code, const bool update = false);
199 
200  private:
201 
213  void StoreAttribute(const std::string key,
214  const fcf::common::Variant& value,
215  bool publish,
216  int attribute);
217 
218 
226  void PublishState(const fcf::common::Variant& value);
227 
235  void PublishSubstate(const fcf::common::Variant& value);
236 
237  protected:
241  std::unordered_map<std::string, short> m_status_map;
242 
243 
246  std::vector<std::string> m_monitor_vector;
247 
248  private:
249  devmgr::common::DataContext& m_data_ctx;
250  static std::timed_mutex m_mutex;
251  };
252  }
253 }
254 
255 #include "shutterLcsIf.inline"
256 
257 #endif //DEVMGR_DEVICE_SHUTTER_IF_HPP
void SetData(const ShutterControllerData &data)
double value
Definition: easylogging++.h:814
Device Local Control System (LCS) Interface (IF) class.
Definition: deviceLcsIf.hpp:69
bool IsClose()
Check if shutter is close.
Definition: shutterLcsIf.cpp:308
void Listener(fcf::common::VectorVariant &params)
Callback to manage changes on the monitored items.
Definition: shutterLcsIf.cpp:429
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:30
void ReadConfig()
Read the configuration.
Definition: shutterLcsIf.cpp:90
void StartMonitoring()
Start monitoring of controller attributes.
Definition: shutterLcsIf.cpp:409
bool IsHwFailure()
Check if shutter is hardware error.
Definition: shutterLcsIf.cpp:326
void Close()
Executes the Close RPC.
Definition: shutterLcsIf.cpp:179
bool IsOpening()
Check if controller is opening the shutter.
Definition: shutterLcsIf.cpp:254
std::unordered_map< std::string, short > m_status_map
Definition: shutterLcsIf.hpp:241
std::vector< std::string > m_monitor_vector
Definition: shutterLcsIf.hpp:246
virtual ~ShutterControllerData()
Definition: shutterLcsIf.cpp:37
void Open()
Executes the Open RPC.
Definition: shutterLcsIf.cpp:143
virtual std::string GetRpcError(const short error) const
Definition: shutterLcsIf.cpp:494
bool IsOpen()
Check if shutter is open.
Definition: shutterLcsIf.cpp:292
virtual bool IsOperational()
Check if controller is in Operational.
Definition: shutterLcsIf.cpp:237
Definition: dataContext.hpp:73
virtual void ReadStatus(devmgr::common::DeviceControllerData &status)
Read status from the controller.
Definition: shutterLcsIf.cpp:344
ShutterLcsIf(std::shared_ptr< devmgr::common::IDeviceConfig > config, devmgr::common::DataContext &data_ctx)
ShutterLcsIf constructor.
Definition: shutterLcsIf.cpp:42
optional bool error
Definition: requests.proto:11
optional int32 error_code
Definition: topics.proto:14
virtual std::string GetHwError(int &error_code, const bool update=false)
Get error message.
Definition: shutterLcsIf.cpp:524
ShutterControllerData()
Definition: shutterLcsIf.cpp:33
void StopMonitoring()
Stop monitoring of controller attributes.
Definition: shutterLcsIf.cpp:419
virtual bool IsReady()
Check if controller is in Standby/Ready state.
Definition: shutterLcsIf.cpp:216
bool IsClosing()
Check if controller is closing the shutter.
Definition: shutterLcsIf.cpp:273