ifw-fcf  3.0.0
drotLcsIf.hpp
Go to the documentation of this file.
1 
10 #ifndef FCF_DEVMGR_DEVICE_DROT_IF_HPP
11 #define FCF_DEVMGR_DEVICE_DROT_IF_HPP
12 
13 #include <unordered_map>
14 
15 #include <yaml-cpp/yaml.h>
19 
20 namespace fcf::devmgr::drot {
21 
30  public:
32  virtual ~DrotControllerData();
33 
34 
35  void SetData(const DrotControllerData& data);
36 
37  inline virtual std::string GetErrorText() const;
38  inline virtual std::string GetSubstateStr() const;
39 
40  inline short GetTrackingMode() const;
41  inline void SetTrackingMode(short mode);
42 
43  inline double GetAlpha() const;
44  inline void SetAlpha(double alpha);
45 
46  inline double GetDelta() const;
47  inline void SetDelta(double delta);
48 
49  inline double GetAngleOnSky() const;
50  inline void SetAngleOnSky(double angle);
51 
52  protected:
53  short m_tracking_mode {};
54  double m_alpha {};
55  double m_delta {};
56  double m_angle_on_sky {};
57  };
58 
59 
60 
74  template<typename TOPIC_TYPE>
75  class DrotLcsIf : public fcf::devmgr::motor::MotorLcsIf<TOPIC_TYPE> {
76 
77  // enumerations for Drot status
78  enum {
79  STAT_LOCAL = 100,
80  STAT_ERROR = 101,
81  STAT_STATE = 102,
82  STAT_SUBSTATE = 103,
83  STAT_TRACK_MODE = 104,
84  STAT_ALPHA = 105,
85  STAT_DELTA = 106,
86  STAT_ANGLE_ON_SKY = 107
87  };
88 
89  public:
97  DrotLcsIf(std::shared_ptr<fcf::devmgr::common::IDeviceConfig> config,
99  bool initialise = true);
100 
101 
105  virtual ~DrotLcsIf() {};
106 
112  void MoveAngle(double angle);
113 
118  bool IsTracking();
119 
129  void StartTrack(short mode, double angle);
130 
134  void StopTrack();
135 
147  void Listener(fcf::common::VectorVariant& params);
148 
154  virtual std::string GetRpcError(const short error_code) const;
155 
156 
158  bool force_read = true);
159 
160  private:
161 
173  void StoreAttribute(const std::string key,
174  const fcf::common::Variant& value,
175  bool publish,
176  int attribute);
177 
185  void PublishPosition(const fcf::common::Variant& value,
186  int attribute);
187 
188 
189 
190  protected:
191  double m_alpha {};
192  double m_delta {};
193  short m_track_mode {};
194  double m_angle_on_sky {};
195 
196 
197  private:
198 
199 
200  };
201 
202 }
203 
204 #include "drotLcsIf.ipp"
205 
206 #endif //FCF_DEVMGR_DEVICE_DROT_IF_HPP
fcf::devmgr::drot::DrotLcsIf::GetRpcError
virtual std::string GetRpcError(const short error_code) const
dataContext.hpp
DataContext class header file.
fcf::devmgr::drot::DrotControllerData::SetDelta
void SetDelta(double delta)
fcf::devmgr::drot::DrotControllerData::SetAlpha
void SetAlpha(double alpha)
fcf::devmgr::drot::DrotLcsIf::m_angle_on_sky
double m_angle_on_sky
Definition: drotLcsIf.hpp:194
fcf::devmgr::drot::DrotControllerData::GetAlpha
double GetAlpha() const
fcf::devmgr::drot::DrotControllerData::m_angle_on_sky
double m_angle_on_sky
Definition: drotLcsIf.hpp:56
fcf::devmgr::drot::DrotControllerData::GetAngleOnSky
double GetAngleOnSky() const
fcf::devmgr::drot::DrotControllerData::DrotControllerData
DrotControllerData()
Definition: drotLcsIf.cpp:21
fcf::devmgr::drot::DrotControllerData::GetSubstateStr
virtual std::string GetSubstateStr() const
motorLcsIf.hpp
ShutterLcsIf class header file.
fcf::devmgr::drot::DrotLcsIf::MoveAngle
void MoveAngle(double angle)
Move drot to a position angle.
fcf::devmgr::drot::DrotControllerData::SetAngleOnSky
void SetAngleOnSky(double angle)
fcf::devmgr::drot::DrotControllerData::GetDelta
double GetDelta() const
fcf::devmgr::drot::DrotControllerData::~DrotControllerData
virtual ~DrotControllerData()
Definition: drotLcsIf.cpp:29
fcf::devmgr::drot
Definition: drot.cpp:26
fcf::devmgr::drot::DrotLcsIf::m_delta
double m_delta
Definition: drotLcsIf.hpp:192
fcf::devmgr::drot::DrotLcsIf
Drot Local Control System (LCS) Interface (IF) class.
Definition: drotLcsIf.hpp:75
fcf::devmgr::drot::DrotControllerData::GetTrackingMode
short GetTrackingMode() const
fcf::devmgr::drot::DrotControllerData::m_alpha
double m_alpha
Definition: drotLcsIf.hpp:54
fcf::devmgr::drot::DrotLcsIf::Listener
void Listener(fcf::common::VectorVariant &params)
Callback to manage changes on the monitored items.
fcf::devmgr::drot::DrotLcsIf::~DrotLcsIf
virtual ~DrotLcsIf()
Default destructor.
Definition: drotLcsIf.hpp:105
drotConfig.hpp
DrotConfig class header file.
fcf::devmgr::drot::DrotControllerData::m_tracking_mode
short m_tracking_mode
Definition: drotLcsIf.hpp:53
fcf::devmgr::drot::DrotLcsIf::DrotLcsIf
DrotLcsIf(std::shared_ptr< fcf::devmgr::common::IDeviceConfig > config, fcf::devmgr::common::DataContext &data_ctx, bool initialise=true)
drotLcsIf constructor.
fcf::devmgr::drot::DrotLcsIf::m_track_mode
short m_track_mode
Definition: drotLcsIf.hpp:193
fcf::devmgr::drot::DrotControllerData::SetTrackingMode
void SetTrackingMode(short mode)
fcf::devmgr::common::DataContext
Definition: dataContext.hpp:92
fcf::devmgr::drot::DrotLcsIf::IsTracking
bool IsTracking()
Check if drot is tracking.
fcf::devmgr::drot::DrotLcsIf::ReadStatus
void ReadStatus(DrotControllerData &status, bool force_read=true)
fcf::devmgr::drot::DrotControllerData::m_delta
double m_delta
Definition: drotLcsIf.hpp:55
fcf::devmgr::drot::DrotControllerData::GetErrorText
virtual std::string GetErrorText() const
fcf::devmgr::drot::DrotLcsIf::StartTrack
void StartTrack(short mode, double angle)
Start derotator tracking.
fcf::devmgr::drot::DrotControllerData::SetData
void SetData(const DrotControllerData &data)
Definition: drotLcsIf.cpp:32
fcf::devmgr::drot::DrotLcsIf::m_alpha
double m_alpha
Definition: drotLcsIf.hpp:191
fcf::devmgr::drot::DrotLcsIf::StopTrack
void StopTrack()
Stop derotator tracking.
fcf::devmgr::motor::MotorLcsIf
Motor Local Control System (LCS) Interface (IF) class.
Definition: motorLcsIf.hpp:117
fcf::devmgr::drot::DrotControllerData
The drotControllerData struct.
Definition: drotLcsIf.hpp:29
fcf::devmgr::motor::MotorControllerData
The MotorControllerData struct.
Definition: motorLcsIf.hpp:34