ifw-fcf  4.0.0
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 
19 namespace 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:
58  short m_tracking_mode {};
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 
115  virtual void Init();
116 
117  void UpdateTargetPosition(int axis_id, double position, std::string move_type);
124  void MoveAbs(int axis_id, double position, double velocity);
125 
132  void MoveRel(int axis_id, double position, double velocity);
133 
134  void MoveEncAbs(int axis_id, long int encoders);
135 
136  void MoveEncRel(int axis_id, long int encoders);
146  void MoveVel(int axis_id, double velocity);
147 
148 
149 
155  void StartTrack(const double& angle);
156 
160  void StopTrack();
161 
166  void MoveAngle(const double& angle);
167 
172  bool IsTracking() const;
173 
178  bool IsMoving() const;
179 
185  bool IsInPosition(const int axis = -1) const;
186 
191  bool IsStandstill() const;
192 
193 
199  void ReadConfig();
200 
201  std::string GetMotorMapValue(std::string motor, std::string category, std::string key);
202 
203 
204 
205 
214  virtual void ReadStatus(AdcControllerData& status);
215 
216  void StartTrackMonitoring();
217  void StopTrackMonitoring();
218 
230  void Listener(fcf::common::VectorVariant& params);
231 
237  virtual std::string GetRpcError(const short error_code) const;
238 
239  protected:
240 
245  void LoadConfig();
246 
247  private:
248 
249 
257  void StoreMotorPosition(const std::string nodeid_prefix,
258  const fcf::common::Variant& value,
259  int attribute);
260 
261  void StoreMotorAttribute(const std::string nodeid_prefix,
262  const fcf::common::Variant& value,
263  int attribute);
264 
265  void MovePos(int axis_id, double position, double velocity,
266  std::string move_type=fcf::devmgr::motor::RPC_MOVE_ABS);
267 
268  protected:
270  std::vector<std::string> m_monitor_track_vector;
271  //std::map<std::string, int> m_motor_index;
275  std::unique_ptr<elt::configng::CiiConfigDocument> m_motor_map_doc;
276 
277  double m_mot_actual_pos {0.0};
278  double m_mot_actual_pos_axis[2] {0.0,0.0};
279  double m_alpha {};
280  double m_delta {};
281  short m_track_mode {};
282 
283  std::map<std::string, fcf::devmgr::motor::MotorControllerData> m_motors_status;
284 
285  private:
286  log4cplus::Logger m_logger;
287  };
288 
289 }
290 
291 #include "adcLcsIf.ipp"
292 
293 #endif //FCF_DEVMGR_DEVICE_ADC_IF_HPP
fcf::devmgr::adc::AdcControllerData::SetData
void SetData(const AdcControllerData &data)
Definition: adcLcsIf.cpp:35
dataContext.hpp
DataContext class header file.
fcf::devmgr::adc::AdcLcsIf::Init
virtual void Init()
Executes the Init RPC.
Definition: adcLcsIf.cpp:157
fcf::devmgr::adc::AdcLcsIf::ReadStatus
virtual void ReadStatus(AdcControllerData &status)
Read status from the controller.
Definition: adcLcsIf.cpp:506
fcf::devmgr::adc::AdcLcsIf::AdcLcsIf
AdcLcsIf(std::shared_ptr< fcf::devmgr::common::IDeviceConfig > config, fcf::devmgr::common::DataContext &data_ctx)
adcLcsIf constructor.
Definition: adcLcsIf.cpp:43
fcf::devmgr::adc::AdcLcsIf::MoveAbs
void MoveAbs(int axis_id, double position, double velocity)
Executes the MoveAbs RPC.
Definition: adcLcsIf.cpp:251
fcf::devmgr::adc::AdcControllerData::AddMotor
void AddMotor(const std::string motor, const fcf::devmgr::motor::MotorControllerData motor_data)
fcf::devmgr::adc::AdcLcsIf::StopTrackMonitoring
void StopTrackMonitoring()
Definition: adcLcsIf.cpp:544
fcf::devmgr::adc::AdcControllerData::GetDelta
double GetDelta() const
fcf::devmgr::adc::AdcLcsIf::m_track_mode
short m_track_mode
Definition: adcLcsIf.hpp:281
fcf::devmgr::adc::AdcLcsIf::IsStandstill
bool IsStandstill() const
IsStandstill.
Definition: adcLcsIf.cpp:615
fcf::devmgr::adc::AdcLcsIf::GetMotorMapValue
std::string GetMotorMapValue(std::string motor, std::string category, std::string key)
Definition: adcLcsIf.cpp:382
fcf::devmgr::adc::AdcLcsIf::MoveEncRel
void MoveEncRel(int axis_id, long int encoders)
Definition: adcLcsIf.cpp:283
fcf::devmgr::adc::AdcLcsIf::StartTrack
void StartTrack(const double &angle)
Start ADC tracking.
Definition: adcLcsIf.cpp:403
fcf::devmgr::adc::AdcLcsIf::m_alpha
double m_alpha
Definition: adcLcsIf.hpp:279
adcConfig.hpp
AdcConfig class header file.
fcf::devmgr::adc::AdcLcsIf::m_delta
double m_delta
Definition: adcLcsIf.hpp:280
fcf::devmgr::adc::AdcLcsIf::StartTrackMonitoring
void StartTrackMonitoring()
Definition: adcLcsIf.cpp:534
fcf::devmgr::adc::AdcControllerData::m_tracking_mode
short m_tracking_mode
Definition: adcLcsIf.hpp:58
fcf::devmgr::adc::AdcControllerData::m_motors
std::map< std::string, fcf::devmgr::motor::MotorControllerData > m_motors
Definition: adcLcsIf.hpp:62
fcf::devmgr::adc::AdcControllerData
The adcControllerData struct.
Definition: adcLcsIf.hpp:28
fcf::devmgr::adc::AdcLcsIf::LoadConfig
void LoadConfig()
Load the YAML configuration.
fcf::devmgr::adc::AdcLcsIf
Adc Local Control System (LCS) Interface (IF) class.
Definition: adcLcsIf.hpp:80
fcf::devmgr::adc::AdcControllerData::SetDelta
void SetDelta(double delta)
fcf::devmgr::adc::AdcControllerData::SetTrackingMode
void SetTrackingMode(short mode)
fcf::devmgr::adc::AdcLcsIf::m_motor_map_doc
std::unique_ptr< elt::configng::CiiConfigDocument > m_motor_map_doc
Config document for mapping file.
Definition: adcLcsIf.hpp:275
fcf::devmgr::adc::AdcLcsIf::m_monitor_track_vector
std::vector< std::string > m_monitor_track_vector
Special monitor vector of attributes to be monitored only in tracking mode.
Definition: adcLcsIf.hpp:270
fcf::devmgr::adc::AdcLcsIf::GetRpcError
virtual std::string GetRpcError(const short error_code) const
Definition: adcLcsIf.cpp:624
fcf::devmgr::adc::AdcControllerData::GetSubstateStr
virtual std::string GetSubstateStr() const
fcf::devmgr::adc::AdcLcsIf::UpdateTargetPosition
void UpdateTargetPosition(int axis_id, double position, std::string move_type)
Definition: adcLcsIf.cpp:222
fcf::devmgr::adc
Definition: adc.cpp:20
fcf::devmgr::common::DataContext
Definition: dataContext.hpp:90
fcf::devmgr::adc::AdcControllerData::GetErrorText
virtual std::string GetErrorText() const
fcf::devmgr::adc::AdcControllerData::AdcControllerData
AdcControllerData()
Definition: adcLcsIf.cpp:23
fcf::devmgr::adc::AdcLcsIf::m_mot_actual_pos
double m_mot_actual_pos
Definition: adcLcsIf.hpp:277
fcf::devmgr::common::DeviceLcsIf
Definition: deviceLcsIf.hpp:77
fcf::devmgr::adc::AdcControllerData::m_delta
double m_delta
Definition: adcLcsIf.hpp:60
fcf::devmgr::adc::AdcLcsIf::StopTrack
void StopTrack()
StopTrack.
Definition: adcLcsIf.cpp:437
fcf::devmgr::adc::AdcControllerData::SetAlpha
void SetAlpha(double alpha)
fcf::devmgr::adc::AdcLcsIf::MoveRel
void MoveRel(int axis_id, double position, double velocity)
Executes the MoveRel RPC.
Definition: adcLcsIf.cpp:261
fcf::devmgr::motor::RPC_MOVE_ABS
constexpr auto RPC_MOVE_ABS
Definition: motorConfig.hpp:113
fcf::devmgr::adc::AdcControllerData::GetAlpha
double GetAlpha() const
fcf::devmgr::adc::AdcControllerData::m_alpha
double m_alpha
Definition: adcLcsIf.hpp:59
fcf::devmgr::adc::AdcControllerData::GetMotor
fcf::devmgr::motor::MotorControllerData GetMotor(std::string motor) const
fcf::devmgr::adc::AdcLcsIf::~AdcLcsIf
virtual ~AdcLcsIf()
Default destructor.
Definition: adcLcsIf.hpp:108
fcf::devmgr::adc::AdcLcsIf::IsTracking
bool IsTracking() const
IsTracking.
Definition: adcLcsIf.cpp:556
fcf::devmgr::adc::AdcLcsIf::m_mot_actual_pos_axis
double m_mot_actual_pos_axis[2]
Definition: adcLcsIf.hpp:278
fcf::devmgr::adc::AdcLcsIf::MoveEncAbs
void MoveEncAbs(int axis_id, long int encoders)
Definition: adcLcsIf.cpp:271
fcf::devmgr::adc::AdcLcsIf::IsInPosition
bool IsInPosition(const int axis=-1) const
IsInPosition.
Definition: adcLcsIf.cpp:585
fcf::devmgr::adc::AdcControllerData::GetMotorNames
void GetMotorNames(std::vector< std::string > &motor_vector)
fcf::devmgr::adc::AdcControllerData::GetTrackingMode
short GetTrackingMode() const
drotLcsIf.hpp
drotLcsIf class header file.
fcf::devmgr::adc::AdcLcsIf::ReadConfig
void ReadConfig()
Read the configuration.
fcf::devmgr::adc::AdcControllerData::ClearMotors
void ClearMotors()
fcf::devmgr::adc::AdcLcsIf::IsMoving
bool IsMoving() const
IsMoving.
Definition: adcLcsIf.cpp:570
fcf::devmgr::common::DeviceControllerData
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:36
fcf::devmgr::adc::AdcLcsIf::MoveVel
void MoveVel(int axis_id, double velocity)
Executes the MoveVel RPC.
Definition: adcLcsIf.cpp:295
fcf::devmgr::adc::AdcLcsIf::MoveAngle
void MoveAngle(const double &angle)
MoveAngle.
Definition: adcLcsIf.cpp:464
fcf::devmgr::adc::AdcControllerData::~AdcControllerData
virtual ~AdcControllerData()
Definition: adcLcsIf.cpp:32
fcf::devmgr::adc::AdcLcsIf::Listener
void Listener(fcf::common::VectorVariant &params)
Callback to manage changes on the monitored items.
Definition: adcLcsIf.cpp:654
fcf::devmgr::adc::AdcControllerData::GetTrackingModeStr
std::string GetTrackingModeStr() const
fcf::devmgr::adc::AdcLcsIf::m_motors_status
std::map< std::string, fcf::devmgr::motor::MotorControllerData > m_motors_status
Definition: adcLcsIf.hpp:283
fcf::devmgr::motor::MotorControllerData
The MotorControllerData struct.
Definition: motorLcsIf.hpp:34