ifw-fcf  5.0.0
device.hpp
Go to the documentation of this file.
1 
9 #ifndef FCF_DEVMGR_COMMON_DEVICE_HPP
10 #define FCF_DEVMGR_COMMON_DEVICE_HPP
11 
12 // Third party headers
13 #include <boost/algorithm/string/trim.hpp>
14 
15 #include <ifw/core/protocol/base/dispatcher.hpp>
20 
21 namespace fcf {
22 namespace devmgr {
23  namespace common {
24 
25  class DeviceConfig;
26  class DeviceLcsIf;
33  class Device : public IDevice {
34 
35  public:
42  Device(const std::string filename,
43  const std::string name,
44  DataContext& data_ctx);
45 
49  virtual ~Device();
50 
51 
57  virtual bool IsNotReady() const override;
63  virtual bool IsReady() const override;
64 
70  virtual bool IsOperational() const override;
71 
77  virtual void CheckHwFailure() const override;
78 
84  virtual bool IsDisabling() const override;
85 
91  virtual void Init() override;
92 
98  virtual void Enable() override;
99 
105  virtual void Disable() override;
106 
112  virtual void Stop() override;
113 
119  virtual void Reset() override;
120 
121 
122 
123  virtual void GetStatusBuffer(const std::string& stat_prefix,
124  const DeviceControllerData* const data,
125  std::string& buffer);
126 
137  void GetStatusHeader(const std::string& prefix,
138  const core::dit::did::Did& dictionary,
139  std::shared_ptr<CCfits::FITS>& fits_handle);
140 
141 
149  virtual void Simulate(rad::AnyEvent const& last_event) override;
150 
158  virtual void StopSim(rad::AnyEvent const& last_event) override;
159 
167  virtual void Ignore(rad::AnyEvent const& last_event) override;
168 
176  virtual void StopIgn(rad::AnyEvent const& last_event) override;
177 
185  virtual void HwReset(rad::AnyEvent const& last_event) override;
186 
194  virtual void HwInit(rad::AnyEvent const& last_event) override;
195 
203  virtual void HwEnable(rad::AnyEvent const& last_event) override;
204 
212  virtual void HwDisable(rad::AnyEvent const& last_event) override;
213 
217  virtual void StartMonitoring() override;
218 
222  virtual void StopMonitoring() override;
223 
228  inline virtual std::string GetName() const noexcept override {
229  return m_name;
230  };
231 
236  inline virtual std::string GetLogName() const noexcept {
237  string name = "[" + m_name + "]";
238  return name;
239  };
240 
245  virtual std::shared_ptr<fcf::devmgr::common::DeviceLcsIf> GetLcsIf() const noexcept {
246  return m_lcs_if;
247  };
248 
254  virtual std::shared_ptr<fcf::devmgr::common::IDeviceConfig> GetConfig() const noexcept {
255  return m_config;
256  };
257 
258 
274  void RegisterComm(std::shared_ptr<protocol::base::IComm> comm_if,
275  protocol::base::Dispatcher<>& failure,
276  protocol::base::Dispatcher<>& normal);
277 
278  protected:
279 
286  inline bool IsMsgForMe(const std::string& id) const noexcept {
287  if (m_name.compare(boost::algorithm::trim_copy(id)) == 0) {
288  return true;
289  }
290  return false;
291  };
292 
298  void UpdateDb(utils::bat::DbVector& vec);
299 
304  void SetIgnore(bool flag);
305 
310  void SetSimulation(bool flag);
311 
317  void GetPrefix(const std::vector<std::string> prefix_list, std::string& prefix) const;
318 
319  std::string GetCfgPrefix(const std::vector<std::string> prefix_list) const;
320  std::string GetStatPrefix(const std::vector<std::string> prefix_list) const;
321 
329  bool CheckNameParam(const std::any& payload);
330 
331  void GetStatusList(utils::bat::DbVector& cfg_list,
332  const DeviceControllerData& status);
333 
337  virtual void WriteConfig();
338 
339  protected:
340  std::string m_filename;
341  std::string m_name;
343 
345  protocol::base::Dispatcher<> m_failure;
347  protocol::base::Dispatcher<> m_normal;
348 
350  std::shared_ptr<DeviceConfig> m_config;
351 
353  std::shared_ptr<DeviceLcsIf> m_lcs_if;
354 
355  private:
356  log4cplus::Logger m_logger;
357 
358  };
359 
360  }
361  }
362 }
363 
364 
365 #endif //FCF_DEVMGR_COMMON_DEVICE_HPP
Definition: dataContext.hpp:90
virtual void Ignore(rad::AnyEvent const &last_event) override
Executes a Ignore.
Definition: device.cpp:353
virtual void Reset() override
Executes a Reset command.
Definition: device.cpp:125
virtual void Disable() override
Executes a Disable command.
Definition: device.cpp:94
bool IsMsgForMe(const std::string &id) const noexcept
Check if received message id is addressed to me.
Definition: device.hpp:286
virtual bool IsOperational() const override
Check if device is Operational.
Definition: device.cpp:574
virtual std::string GetLogName() const noexcept
Get device id for logging purposes.
Definition: device.hpp:236
virtual bool IsReady() const override
Check if device is Standby/Ready.
Definition: device.cpp:555
std::string m_name
device ID.
Definition: device.hpp:341
virtual void HwEnable(rad::AnyEvent const &last_event) override
Executes a hardware enable command.
Definition: device.cpp:490
protocol::base::Dispatcher m_normal
Dispatcher for managing positive events.
Definition: device.hpp:347
virtual ~Device()
Default destructor.
Definition: device.cpp:40
virtual std::shared_ptr< fcf::devmgr::common::DeviceLcsIf > GetLcsIf() const noexcept
Definition: device.hpp:245
std::string m_filename
device configuration filename.
Definition: device.hpp:340
virtual void StopMonitoring() override
Stop device monitoring.
Definition: device.cpp:729
virtual void CheckHwFailure() const override
Check if device is in failure state.
Definition: device.cpp:592
void GetStatusList(utils::bat::DbVector &cfg_list, const DeviceControllerData &status)
Definition: device.cpp:834
virtual std::string GetName() const noexcept override
Get device id.
Definition: device.hpp:228
virtual void HwInit(rad::AnyEvent const &last_event) override
Executes a hardware init command.
Definition: device.cpp:467
protocol::base::Dispatcher m_failure
Dispatcher for managing failures.
Definition: device.hpp:345
virtual void StartMonitoring() override
Start device monitoring via OPCUA subscriptions.
Definition: device.cpp:716
virtual void GetStatusBuffer(const std::string &stat_prefix, const DeviceControllerData *const data, std::string &buffer)
Definition: device.cpp:158
void SetSimulation(bool flag)
SetSimulation.
Definition: device.cpp:660
virtual bool IsNotReady() const override
Check if device is Standby/NotReady.
Definition: device.cpp:536
virtual void Init() override
Executes a Init command.
Definition: device.cpp:45
virtual void StopSim(rad::AnyEvent const &last_event) override
Executes a StopSim.
Definition: device.cpp:250
virtual void Simulate(rad::AnyEvent const &last_event) override
Executes a Simulat.
Definition: device.cpp:193
Device(const std::string filename, const std::string name, DataContext &data_ctx)
Device abstract class constructor.
Definition: device.cpp:31
bool CheckNameParam(const std::any &payload)
Determine whether paramater is included (device name).
Definition: device.cpp:770
virtual void HwReset(rad::AnyEvent const &last_event) override
Executes a hardware reset command.
Definition: device.cpp:444
void GetStatusHeader(const std::string &prefix, const core::dit::did::Did &dictionary, std::shared_ptr< CCfits::FITS > &fits_handle)
Obtain the status of the device.
Definition: device.cpp:804
std::string GetCfgPrefix(const std::vector< std::string > prefix_list) const
Definition: device.cpp:690
DataContext & m_data_ctx
reference to the data context object.
Definition: device.hpp:342
void SetIgnore(bool flag)
SetIgnore.
Definition: device.cpp:641
std::shared_ptr< DeviceLcsIf > m_lcs_if
Local Control System Interface.
Definition: device.hpp:353
virtual void Enable() override
Executes a Enable command.
Definition: device.cpp:76
std::string GetStatPrefix(const std::vector< std::string > prefix_list) const
Definition: device.cpp:703
virtual void WriteConfig()
Write configuration into OLDB.
Definition: device.cpp:745
void UpdateDb(utils::bat::DbVector &vec)
Update device database.
Definition: device.cpp:632
virtual void HwDisable(rad::AnyEvent const &last_event) override
Executes a hardware disable command.
Definition: device.cpp:513
virtual void Stop() override
Executes a Stop command.
Definition: device.cpp:110
virtual bool IsDisabling() const override
Check if device is disablig.
Definition: device.cpp:614
virtual std::shared_ptr< fcf::devmgr::common::IDeviceConfig > GetConfig() const noexcept
Get a pointer of device configuration.
Definition: device.hpp:254
void RegisterComm(std::shared_ptr< protocol::base::IComm > comm_if, protocol::base::Dispatcher<> &failure, protocol::base::Dispatcher<> &normal)
Register a communication interface object.
Definition: device.cpp:794
void GetPrefix(const std::vector< std::string > prefix_list, std::string &prefix) const
Get prefix for writing attributes to the DB.
Definition: device.cpp:680
std::shared_ptr< DeviceConfig > m_config
Pointer to configuration object.
Definition: device.hpp:350
virtual void StopIgn(rad::AnyEvent const &last_event) override
Executes a StopIgn.
Definition: device.cpp:394
Definition: iDevice.hpp:39
DataContext class header file.
DeviceConfig class header file.
deviceLcsIf class header file.
Device class header file.
Definition: Device.py:1
Definition: actionMgr.cpp:29
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:36
std::string const
Definition: test{{cookiecutter.device_name|capitalize()}}.cpp:161