ifw-fcf  3.0.0
piezoLcsIf.hpp
Go to the documentation of this file.
1 
10 #ifndef DEVMGR_DEVICE_PIEZO_IF_HPP
11 #define DEVMGR_DEVICE_PIEZO_IF_HPP
12 
13 #include <unordered_map>
14 
15 #include <yaml-cpp/yaml.h>
19 
20 #include <Fcfif.hpp>
21 #include <rad/mal/publisher.hpp>
22 
23 namespace fcf::devmgr {
24  namespace piezo {
25 
34  public:
36  virtual ~PiezoControllerData();
37 
38  inline std::string GetErrorText() const;
39  void SetData(const PiezoControllerData& data);
40  void SetPosBit(short axis, int value);
41  void SetPosUser(short axis, double value);
42  int GetPosBit(short axis) const;
43  double GetPosUser(short axis) const;
44  inline virtual std::string GetSubstateStr() const;
45 
46  protected:
47  std::vector<int> m_pos_bit;
48  std::vector<double> m_pos_user;
49 
50 
51  };
52 
53 
54 
68  template<typename TOPIC_TYPE = fcfif::PiezoTopicUnion>
70  {
71 
72  // enumerations for Piezo status
73  enum {
74  STAT_LOCAL = 1,
75  STAT_ERROR = 2,
76  STAT_HW_STATUS = 3,
77  STAT_STATE = 4,
78  STAT_SUBSTATE = 5,
79  STAT_BIT1,
80  STAT_BIT2,
81  STAT_BIT3,
82  STAT_POS1,
83  STAT_POS2,
84  STAT_POS3,
85  STAT_MON_BIT1,
86  STAT_MON_BIT2,
87  STAT_MON_BIT3,
88  STAT_MON_POS1,
89  STAT_MON_POS2,
90  STAT_MON_POS3
91  };
92 
93  public:
101  PiezoLcsIf(std::shared_ptr<fcf::devmgr::common::IDeviceConfig> config,
102  fcf::devmgr::common::DataContext& data_ctx, bool initialise = true);
103 
104 
108  virtual ~PiezoLcsIf() {};
109 
114  virtual bool IsReady();
115 
120  virtual bool IsOperational() ;
121 
133  bool IsInAuto();
134 
139  bool IsInPos();
140 
141  void Auto();
142 
149  void Home();
150 
157  void Pos();
158 
168  void MoveBits(short bit1, short bit2, short bit3);
169 
179  void MoveUser(double pos1, double pos2, double pos3);
180 
189  virtual void ReadStatus(PiezoControllerData& status,
190  bool force_read = true);
191 
192 
204  void Listener(fcf::common::VectorVariant& params);
205 
211  virtual std::string GetRpcError(const short error_code) const;
212 
213 
214  private:
215 
227  void StoreAttribute(const std::string key,
228  const fcf::common::Variant& value,
229  bool publish,
230  int attribute);
231 
232 
233  protected:
234  std::unique_ptr<rad::cii::Publisher<TOPIC_TYPE>> m_publisher;
235  std::vector<int> m_pos_bit {0,0,0};
236  std::vector<double> m_pos_user {0.0, 0.0, 0.0};
237 
238 
239  private:
240 
241 
242  };
243  }
244 }
245 
246 #include "piezoLcsIf.ipp"
247 
248 #endif //DEVMGR_DEVICE_PIEZO_IF_HPP
fcf::devmgr::piezo::PiezoLcsIf::Pos
void Pos()
Executes the Pos RPC.
dataContext.hpp
DataContext class header file.
fcf::devmgr::piezo::PiezoControllerData::GetPosUser
double GetPosUser(short axis) const
fcf::devmgr::piezo::PiezoControllerData::m_pos_bit
std::vector< int > m_pos_bit
Definition: piezoLcsIf.hpp:47
fcf::devmgr::piezo::PiezoControllerData::~PiezoControllerData
virtual ~PiezoControllerData()
Definition: piezoLcsIf.cpp:37
fcf::devmgr::piezo::PiezoLcsIf::GetRpcError
virtual std::string GetRpcError(const short error_code) const
piezoConfig.hpp
PiezoConfig class header file.
fcf::devmgr::piezo::PiezoLcsIf::Listener
void Listener(fcf::common::VectorVariant &params)
Callback to manage changes on the monitored items.
fcf::devmgr::piezo::PiezoLcsIf::PiezoLcsIf
PiezoLcsIf(std::shared_ptr< fcf::devmgr::common::IDeviceConfig > config, fcf::devmgr::common::DataContext &data_ctx, bool initialise=true)
piezoLcsIf constructor.
fcf::devmgr::piezo::PiezoLcsIf::MoveBits
void MoveBits(short bit1, short bit2, short bit3)
Executes the MoveBits RPC.
fcf::devmgr::piezo::PiezoControllerData::GetPosBit
int GetPosBit(short axis) const
fcf::devmgr::piezo::PiezoLcsIf::m_pos_bit
std::vector< int > m_pos_bit
Definition: piezoLcsIf.hpp:235
fcf::devmgr::piezo::PiezoLcsIf::Auto
void Auto()
deviceLcsIf.hpp
deviceLcsIf class header file.
fcf::devmgr::piezo::PiezoLcsIf::IsOperational
virtual bool IsOperational()
Check if controller is in Operational.
fcf::devmgr::piezo::PiezoLcsIf::IsReady
virtual bool IsReady()
Check if controller is in Standby/Ready state.
fcf::devmgr::common::DataContext
Definition: dataContext.hpp:92
fcf::devmgr::common::DeviceLcsIf
Definition: deviceLcsIf.hpp:75
fcf::devmgr::piezo::PiezoLcsIf::IsInAuto
bool IsInAuto()
Executes the Auto RPC.
fcf::devmgr::piezo::PiezoControllerData::m_pos_user
std::vector< double > m_pos_user
Definition: piezoLcsIf.hpp:48
fcf::devmgr::piezo::PiezoControllerData::SetData
void SetData(const PiezoControllerData &data)
Definition: piezoLcsIf.cpp:40
fcf::devmgr::piezo::PiezoControllerData::GetSubstateStr
virtual std::string GetSubstateStr() const
fcf::devmgr::piezo::PiezoLcsIf::m_publisher
std::unique_ptr< rad::cii::Publisher< TOPIC_TYPE > > m_publisher
Definition: piezoLcsIf.hpp:234
fcf::devmgr
Definition: actionMgr.cpp:29
fcf::devmgr::piezo::PiezoControllerData::SetPosUser
void SetPosUser(short axis, double value)
fcf::devmgr::piezo::PiezoLcsIf
Piezo Local Control System (LCS) Interface (IF) class.
Definition: piezoLcsIf.hpp:70
fcf::devmgr::piezo::PiezoControllerData::PiezoControllerData
PiezoControllerData()
Definition: piezoLcsIf.cpp:31
fcf::devmgr::piezo::PiezoLcsIf::~PiezoLcsIf
virtual ~PiezoLcsIf()
Default destructor.
Definition: piezoLcsIf.hpp:108
fcf::devmgr::piezo::PiezoLcsIf::IsInPos
bool IsInPos()
Check if piezo is in POS state.
fcf::devmgr::piezo::PiezoControllerData::GetErrorText
std::string GetErrorText() const
fcf::devmgr::piezo::PiezoLcsIf::MoveUser
void MoveUser(double pos1, double pos2, double pos3)
Executes the MoveUser RPC.
fcf::devmgr::piezo::PiezoControllerData::SetPosBit
void SetPosBit(short axis, int value)
fcf::devmgr::piezo::PiezoLcsIf::ReadStatus
virtual void ReadStatus(PiezoControllerData &status, bool force_read=true)
Read status from the controller.
fcf::devmgr::common::DeviceControllerData
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:34
fcf::devmgr::piezo::PiezoLcsIf::Home
void Home()
Executes the Home RPC.
fcf::devmgr::piezo::PiezoLcsIf::m_pos_user
std::vector< double > m_pos_user
Definition: piezoLcsIf.hpp:236
fcf::devmgr::piezo::PiezoControllerData
The piezoControllerData struct.
Definition: piezoLcsIf.hpp:33