ifw-fcf 7.1.4
Loading...
Searching...
No Matches
device.hpp
Go to the documentation of this file.
1
8#ifndef FCF_DEVMGR_COMMON_DEVICE_HPP
9#define FCF_DEVMGR_COMMON_DEVICE_HPP
10
11#include <boost/algorithm/string/trim.hpp>
12
13#include <ifw/core/protocol/base/dispatcher.hpp>
18
19
20namespace ifw::fcf {
21namespace devmgr {
22 namespace common {
23
24 class DeviceConfig;
25 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
50
56 virtual bool IsNotReady() const override;
62 virtual bool IsReady() const override;
63
69 virtual bool IsOperational() const override;
70
76 virtual void CheckHwFailure() const override;
77
83 virtual bool IsDisabling() const override;
84
90 virtual void Init() override;
91
97 virtual void Enable() override;
98
104 virtual void Disable() override;
105
111 virtual void Stop() override;
112
118 virtual void Reset() override;
119
120
121
122 void GetStatusBuffer(const std::string& stat_prefix,
123 const DeviceControllerData* const data,
124 std::string& buffer);
125
136 void GetStatusHeader(const std::string& prefix,
137 const ifw::core::dit::did::Did& dictionary,
138 std::shared_ptr<CCfits::FITS>& fits_handle);
139
140
148 virtual void Simulate(rad::AnyEvent const& last_event) override;
149
157 virtual void StopSim(rad::AnyEvent const& last_event) override;
158
166 virtual void Ignore(rad::AnyEvent const& last_event) override;
167
175 virtual void StopIgn(rad::AnyEvent const& last_event) override;
176
184 virtual void HwReset(rad::AnyEvent const& last_event) override;
185
193 virtual void HwInit(rad::AnyEvent const& last_event) override;
194
202 virtual void HwEnable(rad::AnyEvent const& last_event) override;
203
211 virtual void HwDisable(rad::AnyEvent const& last_event) override;
212
216 virtual void StartMonitoring() override;
217
221 virtual void StopMonitoring() override;
222
227 inline virtual std::string GetName() const noexcept override {
228 return m_name;
229 };
230
235 inline virtual std::string GetLogName() const noexcept {
236 string name = "[" + m_name + "]";
237 return name;
238 };
239
244 virtual std::shared_ptr<ifw::fcf::devmgr::common::DeviceLcsIf> GetLcsIf() const noexcept {
245 return m_lcs_if;
246 };
247
253 virtual std::shared_ptr<ifw::fcf::devmgr::common::IDeviceConfig> GetConfig() const noexcept {
254 return m_config;
255 };
256
257
273 void RegisterComm(std::shared_ptr<ifw::core::protocol::base::IComm> comm_if,
274 ifw::core::protocol::base::Dispatcher<>& failure,
275 ifw::core::protocol::base::Dispatcher<>& normal);
276
277 protected:
278
285 inline bool IsMsgForMe(const std::string& id) const noexcept {
286 if (m_name.compare(boost::algorithm::trim_copy(id)) == 0) {
287 return true;
288 }
289 return false;
290 };
291
292 std::string GetFileName() const noexcept {
293 return m_filename;
294 };
295
297 return m_data_ctx;
298 };
299
305 void UpdateDb(ifw::core::utils::bat::DbVector& vec);
306
311 void SetIgnore(bool flag);
312
317 void SetSimulation(bool flag);
318
324 void GetPrefix(const std::vector<std::string> prefix_list, std::string& prefix) const;
325
326 std::string GetCfgPrefix(const std::vector<std::string> prefix_list) const;
327 std::string GetStatPrefix(const std::vector<std::string> prefix_list) const;
328
336 bool CheckNameParam(const std::any& payload);
337
338 void GetStatusList(ifw::core::utils::bat::DbVector& cfg_list,
339 const DeviceControllerData& status);
340
344 virtual void WriteConfig();
345
346 protected:
347 // NOLINTBEGIN(misc-non-private-member-variables-in-classes)
348 std::string m_filename;
349 std::string m_name;
351
353 ifw::core::protocol::base::Dispatcher<> m_failure;
355 ifw::core::protocol::base::Dispatcher<> m_normal;
356
358 std::shared_ptr<DeviceConfig> m_config;
359
361 std::shared_ptr<DeviceLcsIf> m_lcs_if;
362 // NOLINTEND(misc-non-private-member-variables-in-classes)
363 private:
364 log4cplus::Logger m_logger;
365
366 };
367
368 }
369 }
370}
371
372
373#endif //FCF_DEVMGR_COMMON_DEVICE_HPP
Definition dataContext.hpp:86
Definition device.hpp:32
virtual bool IsOperational() const override
Check if device is Operational.
Definition device.cpp:568
virtual void Stop() override
Executes a Stop command.
Definition device.cpp:104
virtual void Enable() override
Executes a Enable command.
Definition device.cpp:70
virtual void HwDisable(rad::AnyEvent const &last_event) override
Executes a hardware disable command.
Definition device.cpp:507
virtual void HwInit(rad::AnyEvent const &last_event) override
Executes a hardware init command.
Definition device.cpp:461
virtual void HwEnable(rad::AnyEvent const &last_event) override
Executes a hardware enable command.
Definition device.cpp:484
std::string GetFileName() const noexcept
Definition device.hpp:292
virtual bool IsDisabling() const override
Check if device is disablig.
Definition device.cpp:608
virtual void Ignore(rad::AnyEvent const &last_event) override
Executes a Ignore.
Definition device.cpp:347
virtual void WriteConfig()
Write configuration into OLDB.
Definition device.cpp:739
virtual void StopIgn(rad::AnyEvent const &last_event) override
Executes a StopIgn.
Definition device.cpp:388
bool CheckNameParam(const std::any &payload)
Determine whether paramater is included (device name).
Definition device.cpp:764
void GetStatusBuffer(const std::string &stat_prefix, const DeviceControllerData *const data, std::string &buffer)
Definition device.cpp:152
DataContext & GetDataCtx() const noexcept
Definition device.hpp:296
virtual bool IsNotReady() const override
Check if device is Standby/NotReady.
Definition device.cpp:530
ifw::core::protocol::base::Dispatcher m_failure
Dispatcher for managing failures.
Definition device.hpp:353
std::shared_ptr< DeviceConfig > m_config
Pointer to configuration object.
Definition device.hpp:358
std::string m_filename
device configuration filename.
Definition device.hpp:348
virtual void HwReset(rad::AnyEvent const &last_event) override
Executes a hardware reset command.
Definition device.cpp:438
void SetIgnore(bool flag)
SetIgnore.
Definition device.cpp:635
void RegisterComm(std::shared_ptr< ifw::core::protocol::base::IComm > comm_if, ifw::core::protocol::base::Dispatcher<> &failure, ifw::core::protocol::base::Dispatcher<> &normal)
Register a communication interface object.
Definition device.cpp:788
virtual void Init() override
Executes a Init command.
Definition device.cpp:39
virtual std::shared_ptr< ifw::fcf::devmgr::common::IDeviceConfig > GetConfig() const noexcept
Get a pointer of device configuration.
Definition device.hpp:253
virtual void CheckHwFailure() const override
Check if device is in failure state.
Definition device.cpp:586
virtual bool IsReady() const override
Check if device is Standby/Ready.
Definition device.cpp:549
void SetSimulation(bool flag)
SetSimulation.
Definition device.cpp:654
std::string m_name
device ID.
Definition device.hpp:349
virtual std::string GetLogName() const noexcept
Get device id for logging purposes.
Definition device.hpp:235
std::string GetCfgPrefix(const std::vector< std::string > prefix_list) const
Definition device.cpp:684
virtual void StopMonitoring() override
Stop device monitoring.
Definition device.cpp:723
virtual std::shared_ptr< ifw::fcf::devmgr::common::DeviceLcsIf > GetLcsIf() const noexcept
Definition device.hpp:244
virtual void Disable() override
Executes a Disable command.
Definition device.cpp:88
virtual void StartMonitoring() override
Start device monitoring via OPCUA subscriptions.
Definition device.cpp:710
std::shared_ptr< DeviceLcsIf > m_lcs_if
Local Control System Interface.
Definition device.hpp:361
void GetStatusHeader(const std::string &prefix, const ifw::core::dit::did::Did &dictionary, std::shared_ptr< CCfits::FITS > &fits_handle)
Obtain the status of the device.
Definition device.cpp:798
void UpdateDb(ifw::core::utils::bat::DbVector &vec)
Update device database.
Definition device.cpp:626
Device(const std::string filename, const std::string name, DataContext &data_ctx)
Device abstract class constructor.
Definition device.cpp:27
virtual std::string GetName() const noexcept override
Get device id.
Definition device.hpp:227
virtual ~Device()
Default destructor.
Definition device.cpp:35
void GetPrefix(const std::vector< std::string > prefix_list, std::string &prefix) const
Get prefix for writing attributes to the DB.
Definition device.cpp:674
virtual void Reset() override
Executes a Reset command.
Definition device.cpp:119
ifw::core::protocol::base::Dispatcher m_normal
Dispatcher for managing positive events.
Definition device.hpp:355
virtual void Simulate(rad::AnyEvent const &last_event) override
Executes a Simulat.
Definition device.cpp:187
DataContext & m_data_ctx
reference to the data context object.
Definition device.hpp:350
virtual void StopSim(rad::AnyEvent const &last_event) override
Executes a StopSim.
Definition device.cpp:244
void GetStatusList(ifw::core::utils::bat::DbVector &cfg_list, const DeviceControllerData &status)
Definition device.cpp:820
std::string GetStatPrefix(const std::vector< std::string > prefix_list) const
Definition device.cpp:697
bool IsMsgForMe(const std::string &id) const noexcept
Check if received message id is addressed to me.
Definition device.hpp:285
Definition iDevice.hpp:38
ActionsEnable class source file.
Definition actionMgr.cpp:28
The DeviceControllerData struct.
Definition deviceLcsIf.hpp:42
std::string const
Definition test{{cookiecutter.device_name|capitalize()}}.cpp:161