ifw  0.0.1-dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
device.hpp
Go to the documentation of this file.
1 
9 #ifndef DEVMGR_COMMON_DEVICE_HPP
10 #define DEVMGR_COMMON_DEVICE_HPP
11 
12 #include <fcf/common/dispatcher.hpp>
14 #include <devmgr/common/deviceConfig.hpp>
15 #include <devmgr/common/deviceLcsIf.hpp>
16 #include <devmgr/common/iDevice.hpp>
17 #include <devmgr/common/dataContext.hpp>
18 
19 
20 namespace devmgr {
21  namespace common {
22 
23  class DeviceConfig;
24  class DeviceLcsIf;
32  class Device : public IDevice {
33 
34  public:
41  Device(const std::string filename,
42  const std::string name,
43  DataContext& data_ctx);
44 
48  virtual ~Device();
49 
65  virtual void RegisterComm(std::shared_ptr<fcf::common::IComm> comm_if,
66  fcf::common::Dispatcher<>& failure,
67  fcf::common::Dispatcher<>& normal) = 0;
68 
69 
75  virtual bool IsNotReady() const;
81  virtual bool IsReady() const;
82 
88  virtual bool IsOperational() const;
89 
95  virtual void CheckHwFailure() const;
96 
102  virtual bool IsDisabling() const;
103 
109  virtual void Init();
110 
116  virtual void Enable();
117 
123  virtual void Disable();
124 
130  virtual void Stop();
131 
137  virtual void Reset();
138 
146  virtual void HwReset(modif::ReqHwReset& hwResetMsg);
147 
155  virtual void HwInit(modif::ReqHwInit& hwInitMsg);
156 
164  virtual void HwEnable(modif::ReqHwEnable& hwEnableMsg);
165 
173  virtual void HwDisable(modif::ReqHwDisable& hwDisableMsg);
174 
178  virtual void UpdateStatus() = 0;
179 
187  virtual void Setup(const modif::ReqSetup& setupMsg) = 0;
188 
198  virtual bool IsSetupActive(const modif::ReqSetup& setupMsg) const = 0;
199 
205  virtual void Status(const modif::ReqStatus& statusMsg, std::string& buffer) = 0;
206 
217  virtual void Status(bool end_acq,
218  const dit::did::Did& dictionary,
219  CCfits::FITS* fits_handle = nullptr) = 0;
220 
228  virtual void Simulate(const modif::ReqSimulate& msg);
229 
237  virtual void StopSim(const modif::ReqStopSim& msg);
238 
246  virtual void Ignore(const modif::ReqIgnore& msg);
247 
255  virtual void StopIgn(const modif::ReqStopIgn& msg);
256 
262  virtual std::shared_ptr<DeviceLcsIf> GetLcsIf() const = 0;
263 
269  virtual std::shared_ptr<IDeviceConfig> GetConfig() const = 0;
270 
274  virtual void StartMonitoring();
275 
279  virtual void StopMonitoring();
280 
285  virtual std::string GetName() const;
286 
287 
288  protected:
289 
296  bool IsMsgForMe(const std::string& id) const;
297 
303  void UpdateDb(std::vector<std::string> attr_vector);
304 
309  void SetIgnore(bool flag);
310 
315  void SetSimulation(bool flag);
316 
322  void GetPrefix(const std::vector<std::string> prefix_list, std::string& prefix);
323 
324  protected:
325  std::string m_filename;
326  std::string m_name;
327  DataContext& m_data_ctx;
328 
329  // Dispatcher for managing failures.
330  fcf::common::Dispatcher<> m_failure;
331  // Dispatcher for managing positive events.
332  fcf::common::Dispatcher<> m_normal;
333 
334  // Pointer to configuration object
335  std::shared_ptr<DeviceConfig> m_config;
336 
337  // Local Control System Interface
338  std::shared_ptr<DeviceLcsIf> m_lcs_if;
339 
340  };
341  }
342 }
343 
344 
345 #endif //DEVMGR_COMMON_DEVICE_HPP
virtual void HwInit(modif::ReqHwInit &hwInitMsg)
Executes a hardware init command.
Definition: device.cpp:153
virtual void Enable()
Executes a Enable command.
Definition: device.cpp:55
virtual bool IsDisabling() const
Check if device is disablig.
Definition: device.cpp:533
DataContext & m_data_ctx
reference to the data context object.
Definition: device.hpp:327
virtual void HwDisable(modif::ReqHwDisable &hwDisableMsg)
Executes a hardware disable command.
Definition: device.cpp:193
virtual bool IsNotReady() const
Check if device is Standby/NotReady.
Definition: device.cpp:455
virtual void HwEnable(modif::ReqHwEnable &hwEnableMsg)
Executes a hardware enable command.
Definition: device.cpp:173
virtual void Setup(const modif::ReqSetup &setupMsg)=0
Executes a setup.
Definition: requests.pb.h:6543
fcf::common::Dispatcher m_failure
Definition: device.hpp:330
virtual void Disable()
Executes a Disable command.
Definition: device.cpp:71
virtual void RegisterComm(std::shared_ptr< fcf::common::IComm > comm_if, fcf::common::Dispatcher<> &failure, fcf::common::Dispatcher<> &normal)=0
Register a communication interface object.
std::shared_ptr< DeviceLcsIf > m_lcs_if
Definition: device.hpp:338
Definition: requests.pb.h:5446
virtual ~Device()
Default destructor.
Definition: device.cpp:29
virtual bool IsSetupActive(const modif::ReqSetup &setupMsg) const =0
Check if setup is still active.
Definition: requests.pb.h:2480
virtual void StartMonitoring()
Start device monitoring via OPCUA subscriptions.
Definition: device.cpp:631
optional string msg
Definition: topics.proto:7
virtual void Reset()
Executes a Reset command.
Definition: device.cpp:102
std::string m_filename
device configuration filename.
Definition: device.hpp:325
virtual bool IsReady() const
Check if device is Standby/Ready.
Definition: device.cpp:474
Definition: requests.pb.h:2263
virtual void StopMonitoring()
Stop device monitoring.
Definition: device.cpp:644
virtual void Status(const modif::ReqStatus &statusMsg, std::string &buffer)=0
Obtain the status of the device.
virtual void CheckHwFailure() const
Check if device is in failure state.
Definition: device.cpp:511
Definition: requests.pb.h:1829
virtual std::shared_ptr< DeviceLcsIf > GetLcsIf() const =0
Get a pointer of device LCS interface.
virtual void Stop()
Executes a Stop command.
Definition: device.cpp:87
void SetSimulation(bool flag)
SetSimulation.
Definition: device.cpp:593
Definition: requests.pb.h:6760
std::shared_ptr< DeviceConfig > m_config
Definition: device.hpp:335
Definition: requests.pb.h:6326
Device(const std::string filename, const std::string name, DataContext &data_ctx)
Device abstract class constructor.
Definition: device.cpp:21
virtual void StopSim(const modif::ReqStopSim &msg)
Executes a StopSim.
Definition: device.cpp:269
virtual void StopIgn(const modif::ReqStopIgn &msg)
Executes a StopIgn.
Definition: device.cpp:408
void SetIgnore(bool flag)
SetIgnore.
Definition: device.cpp:573
void GetPrefix(const std::vector< std::string > prefix_list, std::string &prefix)
Get prefix for writing attributes to the DB.
Definition: device.cpp:613
virtual void HwReset(modif::ReqHwReset &hwResetMsg)
Executes a hardware reset command.
Definition: device.cpp:133
void UpdateDb(std::vector< std::string > attr_vector)
Update device database.
Definition: device.cpp:563
std::string m_name
device ID.
Definition: device.hpp:326
virtual std::string GetName() const
Get device id.
Definition: device.cpp:626
virtual void Simulate(const modif::ReqSimulate &msg)
Executes a Simulat.
Definition: device.cpp:213
bool IsMsgForMe(const std::string &id) const
Check if received message id is addressed to me.
Definition: device.cpp:551
Data Interface Dictionary class.
Definition: Did.hpp:25
virtual void Init()
Executes a Init command.
Definition: device.cpp:34
virtual void UpdateStatus()=0
UpdateStatus.
Definition: requests.pb.h:1584
virtual void Ignore(const modif::ReqIgnore &msg)
Executes a Ignore.
Definition: device.cpp:370
virtual std::shared_ptr< IDeviceConfig > GetConfig() const =0
Get a pointer of device configuration.
optional string name
Definition: topics.proto:50
virtual bool IsOperational() const
Check if device is Operational.
Definition: device.cpp:493
Definition: requests.pb.h:6977
fcf::common::Dispatcher m_normal
Definition: device.hpp:332
Definition: requests.pb.h:2046