9#ifndef FCF_DEVMGR_DEVICE_MAXIS_IF_HPP
10#define FCF_DEVMGR_DEVICE_MAXIS_IF_HPP
12#include <unordered_map>
14#include <yaml-cpp/yaml.h>
51 std::map<std::string, fcf::devmgr::motor::MotorControllerData>
m_motors;
87 MAxisLcsIf(std::shared_ptr<fcf::devmgr::common::IDeviceConfig> config,
118 void MoveAbs(
int axis_id,
double position,
double velocity, ::fcfif::MotorPosUnit unit = ::fcfif::MotorPosUnit::UU);
126 void MoveRel(
int axis_id,
double position,
double velocity, ::fcfif::MotorPosUnit unit = ::fcfif::MotorPosUnit::UU);
133 void MoveEncAbs(
int axis_id,
long int encoders);
140 void MoveEncRel(
int axis_id,
long int encoders);
151 void MoveVel(
int axis_id,
double velocity);
157 void MoveAngle(
const double& angle, ::fcfif::MotorPosUnit unit = ::fcfif::MotorPosUnit::UU);
196 void TrackOffset(
double offset, ::fcfif::MotorPosUnit unit);
229 void Listener(protocol::base::VectorVariant& params);
236 virtual std::string
GetRpcError(
const short error_code)
const;
245 std::string
GetMotorMapValue(std::string motor, std::string category, std::string key);
288 void StoreMotorPosition(
const std::string nodeid_prefix,
289 const protocol::base::Variant& value,
292 void StoreMotorAttribute(
const std::string nodeid_prefix,
293 const protocol::base::Variant& value,
296 void MovePos(
int axis_id,
double position,
double velocity,
299 std::pair<std::string, std::string> GetObjectInfo(
const std::string& map_value)
const;
314 log4cplus::Logger m_logger;
319#include "maxisLcsIf.ipp"
Definition: dataContext.hpp:90
Definition: deviceLcsIf.hpp:87
MAxis Local Control System (LCS) Interface (IF) class.
Definition: maxisLcsIf.hpp:67
void MoveAngle(const double &angle, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
MoveAngle.
Definition: maxisLcsIf.cpp:431
void Listener(protocol::base::VectorVariant ¶ms)
Callback to manage changes on the monitored items.
Definition: maxisLcsIf.cpp:683
void StartTrack(short mode, double angle)
Start tracking.
Definition: maxisLcsIf.cpp:487
void StopTrack()
Stop derotator tracking.
Definition: maxisLcsIf.cpp:539
virtual void InitObject()
Initialize object.
Definition: maxisLcsIf.cpp:69
std::vector< std::string > m_monitor_track_vector
Special monitor vector of attributes to be monitored only in tracking mode.
Definition: maxisLcsIf.hpp:303
void ReadConfig()
Read the configuration.
virtual void AddCustomAttributes()
Add custom attributes.
Definition: maxisLcsIf.cpp:157
bool IsTracking() const
Check if multi-axis device is tracking.
Definition: maxisLcsIf.cpp:640
void MoveEncRel(int axis_id, long int encoders)
Move a motor in relative encoder units.
Definition: maxisLcsIf.cpp:354
virtual void ReadStatus(MAxisControllerData &status)
Read status from the controller.
Definition: maxisLcsIf.cpp:574
void MoveAbs(int axis_id, double position, double velocity, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
Executes the MoveAbs RPC.
Definition: maxisLcsIf.cpp:297
void MoveVel(int axis_id, double velocity)
Executes the MoveVel RPC.
Definition: maxisLcsIf.cpp:366
void UpdateTargetPosition(int axis_id, double position, std::string move_type)
UpdateTargetPosition.
Definition: maxisLcsIf.cpp:277
std::string GetMotorMapValue(std::string motor, std::string category, std::string key)
GetMotorMapValue.
Definition: maxisLcsIf.cpp:411
bool IsMoving() const
IsMoving.
Definition: maxisLcsIf.cpp:596
virtual void Init()
Executes the Init RPC.
Definition: maxisLcsIf.cpp:167
short m_track_mode
Definition: maxisLcsIf.hpp:309
std::map< std::string, fcf::devmgr::motor::MotorControllerData > m_motors_status
Definition: maxisLcsIf.hpp:311
void LoadConfig()
Load the YAML configuration.
bool IsInPosition(const int axis=-1) const
IsInPosition.
Definition: maxisLcsIf.cpp:611
void MoveRel(int axis_id, double position, double velocity, ::fcfif::MotorPosUnit unit=::fcfif::MotorPosUnit::UU)
Executes the MoveRel RPC.
Definition: maxisLcsIf.cpp:320
virtual std::string GetRpcError(const short error_code) const
Definition: maxisLcsIf.cpp:654
std::optional< double > GetTargetInUserUnits(int axis_id, double value)
GetTargetInUserUnits.
Definition: maxisLcsIf.cpp:242
virtual ~MAxisLcsIf()
Default destructor.
Definition: maxisLcsIf.hpp:93
bool IsStandstill() const
IsStandstill.
Definition: maxisLcsIf.cpp:631
void TrackOffset(double offset, ::fcfif::MotorPosUnit unit)
Offset position during tracking.
Definition: maxisLcsIf.cpp:510
void MoveEncAbs(int axis_id, long int encoders)
Move a motor in absolute encoder units.
Definition: maxisLcsIf.cpp:342
std::unique_ptr< elt::configng::CiiConfigDocument > m_motor_map_doc
Config document for mapping file.
Definition: maxisLcsIf.hpp:308
DataContext class header file.
drotLcsIf class header file.
MAxisConfig class header file.
std::vector< std::pair< std::string, unsigned int > > VectorAttributes
Definition: maxisLcsIf.hpp:21
constexpr auto RPC_MOVE_ABS
Definition: motorBaseConfig.hpp:51
The DeviceControllerData struct.
Definition: deviceLcsIf.hpp:46
The adcControllerData struct.
Definition: maxisLcsIf.hpp:29
virtual std::string GetSubstateStr() const
double m_track_offset
Definition: maxisLcsIf.hpp:50
short GetTrackingMode() const
void GetMotorNames(std::vector< std::string > &motor_vector)
virtual ~MAxisControllerData()
Definition: maxisLcsIf.cpp:53
fcf::devmgr::motor::MotorControllerData GetMotor(std::string motor) const
double GetTrackOffset() const
void SetData(const MAxisControllerData &data)
Definition: maxisLcsIf.cpp:56
virtual std::string GetErrorText() const
MAxisControllerData()
Definition: maxisLcsIf.cpp:46
void AddMotor(const std::string motor, const fcf::devmgr::motor::MotorControllerData motor_data)
std::map< std::string, fcf::devmgr::motor::MotorControllerData > m_motors
Definition: maxisLcsIf.hpp:51
void SetTrackingMode(short mode)
short m_tracking_mode
Definition: maxisLcsIf.hpp:49
void SetTrackOffset(double offset)
The MotorControllerData struct.
Definition: motorLcsIf.hpp:34