ifw-fcf 6.0.0
Loading...
Searching...
No Matches
adcLcsIf.hpp
Go to the documentation of this file.
1
9#ifndef FCF_DEVMGR_DEVICE_ADC_IF_HPP
10#define FCF_DEVMGR_DEVICE_ADC_IF_HPP
11
12#include <unordered_map>
13
14#include <yaml-cpp/yaml.h>
18
19namespace fcf::devmgr::adc {
20
29 public:
31 virtual ~AdcControllerData();
32
33 void SetData(const AdcControllerData& data);
34
35 inline virtual std::string GetErrorText() const;
36 inline virtual std::string GetSubstateStr() const;
37
38 inline short GetTrackingMode() const;
39 inline std::string GetTrackingModeStr() const;
40 inline void SetTrackingMode(short mode);
41
42 inline double GetAlpha() const;
43 inline void SetAlpha(double alpha);
44
45 inline double GetDelta() const;
46 inline void SetDelta(double delta);
47
48 inline fcf::devmgr::motor::MotorControllerData GetMotor(std::string motor) const;
49
50 inline void ClearMotors();
51
52 inline void AddMotor(const std::string motor,
54
55 inline void GetMotorNames(std::vector<std::string>& motor_vector);
56
57 protected:
59 double m_alpha {};
60 double m_delta {};
61
62 std::map<std::string, fcf::devmgr::motor::MotorControllerData> m_motors;
63 };
64
65
66
81
82 // enumerations for Adc status
83 enum {
84 STAT_LOCAL = 100,
85 STAT_ERROR = 101,
86 STAT_STATE = 102,
87 STAT_SUBSTATE = 103,
88 STAT_TRACK_MODE = 104,
89 STAT_ALPHA = 105,
90 STAT_DELTA = 106
91 };
92
93 public:
102 AdcLcsIf(std::shared_ptr<fcf::devmgr::common::IDeviceConfig> config,
104
108 virtual ~AdcLcsIf() {};
109
118 virtual void InitObject();
119
125 virtual void Init();
126
127 std::optional<double> GetTargetInUserUnits(int axis_id, double value);
128 void UpdateTargetPosition(int axis_id, double position, std::string move_type);
135 void MoveAbs(int axis_id, double position, double velocity, ::fcfif::MotorPosUnit unit = ::fcfif::MotorPosUnit::UU);
136
143 void MoveRel(int axis_id, double position, double velocity, ::fcfif::MotorPosUnit unit = ::fcfif::MotorPosUnit::UU);
144
145 void MoveEncAbs(int axis_id, long int encoders);
146
147 void MoveEncRel(int axis_id, long int encoders);
157 void MoveVel(int axis_id, double velocity);
158
159
160
166 void StartTrack(const double& angle);
167
171 void StopTrack();
172
177 void MoveAngle(const double& angle, ::fcfif::MotorPosUnit unit = ::fcfif::MotorPosUnit::UU);
178
183 bool IsTracking() const;
184
189 bool IsMoving() const;
190
196 bool IsInPosition(const int axis = -1) const;
197
202 bool IsStandstill() const;
203
204
211
212 std::string GetMotorMapValue(std::string motor, std::string category, std::string key);
213
214
215
216
225 virtual void ReadStatus(AdcControllerData& status);
226
228 void StopTrackMonitoring();
229
241 void Listener(protocol::base::VectorVariant& params);
242
248 virtual std::string GetRpcError(const short error_code) const;
249
250 protected:
251
257
258 private:
259
260
268 void StoreMotorPosition(const std::string nodeid_prefix,
269 const protocol::base::Variant& value,
270 int attribute);
271
272 void StoreMotorAttribute(const std::string nodeid_prefix,
273 const protocol::base::Variant& value,
274 int attribute);
275
276 void MovePos(int axis_id, double position, double velocity,
277 std::string move_type=fcf::devmgr::motor::RPC_MOVE_ABS);
278
279 protected:
281 std::vector<std::string> m_monitor_track_vector;
282 //std::map<std::string, int> m_motor_index;
286 std::unique_ptr<elt::configng::CiiConfigDocument> m_motor_map_doc;
287
288 double m_mot_actual_pos {0.0};
289 double m_mot_actual_pos_axis[2] {0.0,0.0};
290 double m_alpha {};
291 double m_delta {};
292 short m_track_mode {};
293
294 std::map<std::string, fcf::devmgr::motor::MotorControllerData> m_motors_status;
295
296 private:
297 log4cplus::Logger m_logger;
298 };
299
300}
301
302#include "adcLcsIf.ipp"
303
304#endif //FCF_DEVMGR_DEVICE_ADC_IF_HPP
AdcConfig class header file.
Adc Local Control System (LCS) Interface (IF) class.
Definition: adcLcsIf.hpp:80
void StopTrackMonitoring()
Definition: adcLcsIf.cpp:664
void MoveEncRel(int axis_id, long int encoders)
Definition: adcLcsIf.cpp:379
void LoadConfig()
Load the YAML configuration.
double m_mot_actual_pos
Definition: adcLcsIf.hpp:288
void MoveAbs(int axis_id, double position, double velocity, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
Executes the MoveAbs RPC.
Definition: adcLcsIf.cpp:322
virtual std::string GetRpcError(const short error_code) const
Definition: adcLcsIf.cpp:744
bool IsMoving() const
IsMoving.
Definition: adcLcsIf.cpp:690
std::vector< std::string > m_monitor_track_vector
Special monitor vector of attributes to be monitored only in tracking mode.
Definition: adcLcsIf.hpp:281
std::map< std::string, fcf::devmgr::motor::MotorControllerData > m_motors_status
Definition: adcLcsIf.hpp:294
void Listener(protocol::base::VectorVariant &params)
Callback to manage changes on the monitored items.
Definition: adcLcsIf.cpp:774
virtual void InitObject()
Initialize object.
Definition: adcLcsIf.cpp:77
double m_alpha
Definition: adcLcsIf.hpp:290
virtual void Init()
Executes the Init RPC.
Definition: adcLcsIf.cpp:184
void StartTrackMonitoring()
Definition: adcLcsIf.cpp:651
void StopTrack()
StopTrack.
Definition: adcLcsIf.cpp:542
void MoveVel(int axis_id, double velocity)
Executes the MoveVel RPC.
Definition: adcLcsIf.cpp:391
std::unique_ptr< elt::configng::CiiConfigDocument > m_motor_map_doc
Config document for mapping file.
Definition: adcLcsIf.hpp:286
void MoveAngle(const double &angle, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
MoveAngle.
Definition: adcLcsIf.cpp:569
void UpdateTargetPosition(int axis_id, double position, std::string move_type)
Definition: adcLcsIf.cpp:293
void MoveEncAbs(int axis_id, long int encoders)
Definition: adcLcsIf.cpp:367
void ReadConfig()
Read the configuration.
std::string GetMotorMapValue(std::string motor, std::string category, std::string key)
Definition: adcLcsIf.cpp:486
void MoveRel(int axis_id, double position, double velocity, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
Executes the MoveRel RPC.
Definition: adcLcsIf.cpp:345
virtual ~AdcLcsIf()
Default destructor.
Definition: adcLcsIf.hpp:108
void StartTrack(const double &angle)
Start ADC tracking.
Definition: adcLcsIf.cpp:507
bool IsTracking() const
IsTracking.
Definition: adcLcsIf.cpp:676
double m_delta
Definition: adcLcsIf.hpp:291
short m_track_mode
Definition: adcLcsIf.hpp:292
virtual void ReadStatus(AdcControllerData &status)
Read status from the controller.
Definition: adcLcsIf.cpp:623
double m_mot_actual_pos_axis[2]
Definition: adcLcsIf.hpp:289
bool IsStandstill() const
IsStandstill.
Definition: adcLcsIf.cpp:735
std::optional< double > GetTargetInUserUnits(int axis_id, double value)
Definition: adcLcsIf.cpp:256
bool IsInPosition(const int axis=-1) const
IsInPosition.
Definition: adcLcsIf.cpp:705
Definition: dataContext.hpp:90
Definition: deviceLcsIf.hpp:87
DataContext class header file.
drotLcsIf class header file.
Definition: adc.cpp:20
constexpr auto RPC_MOVE_ABS
Definition: motorBaseConfig.hpp:51
The adcControllerData struct.
Definition: adcLcsIf.hpp:28
void AddMotor(const std::string motor, const fcf::devmgr::motor::MotorControllerData motor_data)
AdcControllerData()
Definition: adcLcsIf.cpp:48
double m_alpha
Definition: adcLcsIf.hpp:59
virtual std::string GetSubstateStr() const
void GetMotorNames(std::vector< std::string > &motor_vector)
short m_tracking_mode
Definition: adcLcsIf.hpp:58
virtual std::string GetErrorText() const
std::string GetTrackingModeStr() const
void SetData(const AdcControllerData &data)
Definition: adcLcsIf.cpp:60
std::map< std::string, fcf::devmgr::motor::MotorControllerData > m_motors
Definition: adcLcsIf.hpp:62
virtual ~AdcControllerData()
Definition: adcLcsIf.cpp:57
double m_delta
Definition: adcLcsIf.hpp:60
fcf::devmgr::motor::MotorControllerData GetMotor(std::string motor) const
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:46
The MotorControllerData struct.
Definition: motorLcsIf.hpp:34