ifw-fcf 8.0.2
 
Loading...
Searching...
No Matches
motor.hpp
Go to the documentation of this file.
1
7
8#ifndef FCF_DEVMGR_DEVICE_MOTOR_HPP
9#define FCF_DEVMGR_DEVICE_MOTOR_HPP
10
11#include <chrono>
16
17
19
37 {
38
39 enum {
40 POS_TARGET = 0,
41 POS_ACTUAL,
42 SCALE_FACTOR,
43 AXIS_STATUS,
44 BCKLASHSTEP,
45 LAST_CMD,
46 ERROR_CODE,
47 INIT_STEP,
48 REF_SWITCH,
49 AT_MAX_POS,
50 AT_MAX_POS_VAL,
51 AT_MIN_POS,
52 AT_MIN_POS_VAL,
53 INFO_DATA1,
54 INFO_DATA2,
55 SWITCH_LHW,
56 BRAKE_ACTIVE,
57 LOCAL,
58 SWITCH_INDEX,
59 SWITCH_REF,
60 VEL_TARGET,
61 VEL_ACTUAL,
62 SWITCH_LSTOP,
63 SWITCH_USTOP
64 };
65
66 public:
73 Motor(const std::string filename,
74 const std::string name,
76
77
81 virtual ~Motor() = default;
82
94 void CreateObjects(std::shared_ptr<ifw::fcf::devmgr::common::IDeviceConfig> config = nullptr) override ;
95
103 virtual void Setup(const std::any& payload) override ;
104
112 virtual bool IsSetupActive(const std::any& payload) const override;
113
114
115
121 virtual void Status(const std::any& payload, std::string& buffer) override;
122
133 virtual void Status(bool end_acq,
134 const ifw::core::dit::did::Did& dictionary,
135 std::shared_ptr<CCfits::FITS>& fits_handle) override;
136
137
146 void GetStatusList(ifw::core::utils::bat::DbVector& cfg_status,
147 const MotorControllerData& status_data);
160 virtual void UpdateStatus() override;
161
162 void SetTargetNamedPosition(const std::string named_position);
163 const std::string GetTargetNamedPosition();
164
165 protected:
177 void GetStatusBuffer(const std::string& stat_prefix,
178 const MotorControllerData* const data,
179 std::string& buffer);
180
188 void GetStatusHeader(const std::string& prefix,
189 const MotorControllerData* const data,
190 bool end_acq,
191 const ifw::core::dit::did::Did& dictionary,
192 std::shared_ptr<CCfits::FITS>& fits_handle);
193
194 protected:
195 void HandleAction(const std::shared_ptr<fcfif::MotorDevice>& motor);
196
197
198 private:
200 MotorControllerData m_controller_status;
201 std::string m_target_named_pos;
202 mutable std::chrono::steady_clock::time_point m_hw_failure_start;
203 static constexpr int HW_FAILURE_RETRIES = 5;
204
205 log4cplus::Logger m_logger;
206 };
207
208}
209
210
211#endif //FCF_DEVMGR_DEVICE_MOTOR_HPP
Definition dataContext.hpp:86
Definition device.hpp:33
void SetTargetNamedPosition(const std::string named_position)
Definition motor.cpp:215
const std::string GetTargetNamedPosition()
Definition motor.cpp:222
virtual void Status(const std::any &payload, std::string &buffer) override
Obtain the status of the device.
Definition motor.cpp:464
void HandleAction(const std::shared_ptr< fcfif::MotorDevice > &motor)
Definition motor.cpp:49
void GetStatusList(ifw::core::utils::bat::DbVector &cfg_status, const MotorControllerData &status_data)
Get a vector with device status data.
Definition motor.cpp:228
virtual void UpdateStatus() override
Update the status of the motor device in the OLDB.
Definition motor.cpp:321
void GetStatusBuffer(const std::string &stat_prefix, const MotorControllerData *const data, std::string &buffer)
Get status buffer.
Definition motor.cpp:352
Motor(const std::string filename, const std::string name, ifw::fcf::devmgr::common::DataContext &data_ctx)
Motor constructor.
Definition motor.cpp:24
virtual bool IsSetupActive(const std::any &payload) const override
Check if last setup message is still active.
Definition motor.cpp:113
virtual void Setup(const std::any &payload) override
Executes a setup of the motor device.
Definition motor.cpp:80
virtual ~Motor()=default
Default destructor.
void CreateObjects(std::shared_ptr< ifw::fcf::devmgr::common::IDeviceConfig > config=nullptr) override
Create object instances.
Definition motor.cpp:33
void GetStatusHeader(const std::string &prefix, const MotorControllerData *const data, bool end_acq, const ifw::core::dit::did::Did &dictionary, std::shared_ptr< CCfits::FITS > &fits_handle)
Get device status for the data acquisition.
Definition motor.cpp:496
Motor class source file.
Definition motor.hpp:18
Definition __init__.py:1
The MotorControllerData struct.
Definition motorLcsIf.hpp:32