ifw-fcf 7.1.4
Loading...
Searching...
No Matches
motorBaseConfig.hpp
Go to the documentation of this file.
1
8#ifndef FCF_DEVMGR_DEVICE_MOTOR_BASE_CONFIG_HPP
9#define FCF_DEVMGR_DEVICE_MOTOR_BASE_CONFIG_HPP
10
11#include <string>
12#include <unordered_map>
13
14#include <yaml-cpp/yaml.h>
15
16#include <ifw/core/utils/bat/logger.hpp>
20
21
23
24 // Constants for internal mapping
25 constexpr auto CI_DEF_VEL = "velocity";
26 constexpr auto CI_MAX_POS = "max_pos";
27 constexpr auto CI_MIN_POS = "min_pos";
28
29
30 constexpr auto CI_TIMEOUT_INIT = "tout_init";
31 constexpr auto CI_TIMEOUT_MOVE = "tout_move";
32 constexpr auto CI_TIMEOUT_SWITCH = "tout_switch";
33
34
35 // WS configuration keywords
36 // These configuration only matters for WS level
37 constexpr auto CI_POSITIONS = "positions";
38 constexpr auto CI_POS_NAME = "name";
39 constexpr auto CI_POS_VALUE = "value";
40 constexpr auto CI_POS_ID = "id";
41 constexpr auto CI_POS_TYPE = "type";
42 constexpr auto CI_POS_NO = "no";
43 constexpr auto CI_NAME_POS_TOLERANCE = "tolerance";
44 constexpr auto CI_SCALE_FACTOR = "scale_factor";
45
46 constexpr auto RPC_MOVE_ABS = "rpcMoveAbs";
47 constexpr auto RPC_MOVE_REL = "rpcMoveRel";
48 constexpr auto RPC_MOVE_VEL = "rpcMoveVel";
49
50 constexpr int SUBSTATE_ABORTING = 107;
51 constexpr int SUBSTATE_OP_STANDSTILL = 216;
52 constexpr int SUBSTATE_OP_MOVING = 217;
53 constexpr int SUBSTATE_OP_SETTING_POS = 218;
54 constexpr int SUBSTATE_OP_STOPPING = 219;
55
56 constexpr auto SUBSTATE_READY_STR = "Ready";
57 constexpr auto SUBSTATE_ABORTING_STR = "Aborting";
58 constexpr auto SUBSTATE_OP_STANDSTILL_STR = "Standstill";
59 constexpr auto SUBSTATE_OP_MOVING_STR = "Moving";
60 constexpr auto SUBSTATE_OP_SETTING_POS_STR = "SettingPos";
61 constexpr auto SUBSTATE_OP_STOPPING_STR = "Stopping";
62
75
76 // encoders are used only at the WS level
77 constexpr auto CI_STAT_ENC_POS = "pos_enc";
78 constexpr auto CI_STAT_TARGET_ENC = "target_enc";
79 constexpr auto CI_STAT_TARGET_POSNAME = "pos_target_name";
80 constexpr auto CI_STAT_ACTUAL_POSNAME = "pos_actual_name";
81 constexpr auto CI_STAT_TARGET_POS = "pos_target";
82 constexpr auto CI_STAT_ACTUAL_POS = "pos_actual";
83 constexpr auto CI_STAT_POS_ERROR = "pos_error";
84 constexpr auto CI_STAT_ACTUAL_VEL = "vel_actual";
85 constexpr auto CI_STAT_TARGET_VEL = "vel_target";
86 constexpr auto CI_STAT_INITIALISED = "initialised";
87 constexpr auto CI_STAT_USER_UNIT = "user_unit";
88
89 constexpr auto FITS_PARAM_POSNAME = "NAME";
90 constexpr auto FITS_PARAM_POS = "POS";
91 constexpr auto FITS_PARAM_POSTYPE = "TYPE";
92 constexpr auto FITS_PARAM_POSNO = "NO";
93 constexpr auto FITS_PARAM_POSID = "ID";
94
95
96 constexpr auto UNDEFINED_NAMED_POS = "undefined";
97
98
99
108 inline std::optional<std::string> GetId() {
109 return m_pos_id;
110 }
111
112 inline std::optional<std::string> GetType() {
113 return m_pos_type;
114 }
115
116 inline std::optional<int> GetSlot() {
117 return m_slot;
118 }
119
120 std::optional<std::string> m_pos_id;
121 std::optional<std::string> m_pos_type;
122 std::optional<int> m_slot;
123
124 };
125
126 // @TODO: replaced by boost bimaps
127 // Tried with boost bimap but I've got hundred of errors.
128 // I added temporaly two maps.
129
130
139 friend class Sensor;
140
141
142 public:
148 MotorBaseConfig(const std::string filename,
149 const std::string name);
150
155 MotorBaseConfig(const std::string name);
156
160 virtual ~MotorBaseConfig() = default;
161
168 void Init();
169
179 virtual void GetConfigList(ifw::core::utils::bat::DbVector& cfg_list,
180 std::string prefix) const override;
181
186 inline int GetNumberOfNamedPositions() const noexcept {return m_num_named_pos;};
187
188
193 double GetVelocity() const ;
194
199 virtual double GetScaleFactor() const;
200
206 std::string GetNamedPosition(const int index) const;
207
213 double GetNamedPositionValue(const int index) const;
214
220 NamedPosConfig GetNamedPositionConfig(const std::string& named_pos) const;
227 bool FindNamedPositionValue(const std::string named_pos,
228 double& position) const;
229
236 bool FindNamedPositionValue(const double position,
237 std::string& name) const;
238
243 double GetNpTolerance() const;
244
245
246 private:
247
248 // Map of motor named positions
249 std::unordered_map<std::string, double> m_named_positions;
250 int m_num_named_pos{0};
251
252 private:
253
254 log4cplus::Logger m_logger;
255
256 };
257
258}
259
260
261#endif //FCF_DEVMGR_DEVICE_MOTOR_BASE_CONFIG_HPP
m_logger(log4cplus::Logger::getInstance(LOGGER_NAME))
Definition {{cookiecutter.device_name}}.cpp:32
Device Configuration class.
Definition deviceConfig.hpp:124
Motor Base Configuration class.
Definition motorBaseConfig.hpp:138
virtual ~MotorBaseConfig()=default
MotorConfig destructor.
virtual double GetScaleFactor() const
Definition motorBaseConfig.cpp:64
std::string GetNamedPosition(const int index) const
GetNamedPosition.
Definition motorBaseConfig.cpp:77
double GetVelocity() const
Definition motorBaseConfig.cpp:52
double GetNamedPositionValue(const int index) const
GetNamedPositionValue.
Definition motorBaseConfig.cpp:91
MotorBaseConfig(const std::string filename, const std::string name)
MotorConfig constructor.
Definition motorBaseConfig.cpp:22
double GetNpTolerance() const
Get named position tolerance.
Definition motorBaseConfig.cpp:182
void Init()
Read the configuration.
Definition motorBaseConfig.cpp:35
virtual void GetConfigList(ifw::core::utils::bat::DbVector &cfg_list, std::string prefix) const override
Get configuration list.
Definition motorBaseConfig.cpp:161
NamedPosConfig GetNamedPositionConfig(const std::string &named_pos) const
GetNamedPositionType.
Definition motorBaseConfig.cpp:104
friend class Sensor
Definition motorBaseConfig.hpp:139
int GetNumberOfNamedPositions() const noexcept
Definition motorBaseConfig.hpp:186
bool FindNamedPositionValue(const std::string named_pos, double &position) const
Find value associated to a named position.
Definition motorBaseConfig.cpp:127
constexpr int SUBSTATE_ERROR
Definition deviceConfig.hpp:97
constexpr auto SUBSTATE_INITIALISING_STR
Definition deviceConfig.hpp:100
constexpr int SUBSTATE_READY
Definition deviceConfig.hpp:95
constexpr auto SUBSTATE_ERROR_STR
Definition deviceConfig.hpp:102
constexpr int SUBSTATE_INITIALISING
Definition deviceConfig.hpp:96
constexpr auto SUBSTATE_NOTREADY_STR
Definition deviceConfig.hpp:99
constexpr auto SUBSTATE_READY_STR
Definition deviceConfig.hpp:101
constexpr int SUBSTATE_OP_ERROR
Definition deviceConfig.hpp:105
constexpr int SUBSTATE_NOTREADY
Definition deviceConfig.hpp:94
constexpr auto SUBSTATE_OP_ERROR_STR
Definition deviceConfig.hpp:108
Motor class source file.
Definition motor.hpp:17
constexpr auto SUBSTATE_OP_STANDSTILL_STR
Definition motorBaseConfig.hpp:58
constexpr auto CI_DEF_VEL
Definition motorBaseConfig.hpp:25
constexpr auto CI_STAT_ACTUAL_POSNAME
Definition motorBaseConfig.hpp:80
constexpr auto CI_STAT_USER_UNIT
Definition motorBaseConfig.hpp:87
constexpr auto CI_SCALE_FACTOR
Definition motorBaseConfig.hpp:44
constexpr auto FITS_PARAM_POSID
Definition motorBaseConfig.hpp:93
constexpr auto SUBSTATE_ABORTING_STR
Definition motorBaseConfig.hpp:57
constexpr auto CI_TIMEOUT_MOVE
Definition motorBaseConfig.hpp:31
constexpr auto CI_TIMEOUT_SWITCH
Definition motorBaseConfig.hpp:32
constexpr int SUBSTATE_OP_STOPPING
Definition motorBaseConfig.hpp:54
constexpr auto CI_STAT_INITIALISED
Definition motorBaseConfig.hpp:86
constexpr auto CI_STAT_TARGET_POS
Definition motorBaseConfig.hpp:81
constexpr auto SUBSTATE_OP_MOVING_STR
Definition motorBaseConfig.hpp:59
constexpr auto CI_POS_ID
Definition motorBaseConfig.hpp:40
constexpr auto CI_MIN_POS
Definition motorBaseConfig.hpp:27
constexpr auto CI_MAX_POS
Definition motorBaseConfig.hpp:26
constexpr auto CI_STAT_POS_ERROR
Definition motorBaseConfig.hpp:83
constexpr auto SUBSTATE_OP_SETTING_POS_STR
Definition motorBaseConfig.hpp:60
constexpr auto SUBSTATE_OP_STOPPING_STR
Definition motorBaseConfig.hpp:61
constexpr auto FITS_PARAM_POSTYPE
Definition motorBaseConfig.hpp:91
constexpr auto CI_STAT_TARGET_POSNAME
Definition motorBaseConfig.hpp:79
constexpr auto FITS_PARAM_POS
Definition motorBaseConfig.hpp:90
constexpr auto CI_POS_VALUE
Definition motorBaseConfig.hpp:39
constexpr auto CI_POSITIONS
Definition motorBaseConfig.hpp:37
constexpr auto CI_POS_TYPE
Definition motorBaseConfig.hpp:41
constexpr auto CI_STAT_TARGET_ENC
Definition motorBaseConfig.hpp:78
constexpr auto CI_TIMEOUT_INIT
Definition motorBaseConfig.hpp:30
constexpr auto CI_STAT_ACTUAL_POS
Definition motorBaseConfig.hpp:82
constexpr auto RPC_MOVE_ABS
Definition motorBaseConfig.hpp:46
constexpr auto FITS_PARAM_POSNO
Definition motorBaseConfig.hpp:92
constexpr int SUBSTATE_OP_STANDSTILL
Definition motorBaseConfig.hpp:51
const std::unordered_map< short, std::string > SUBSTATE_MAP
Definition motorBaseConfig.hpp:63
constexpr auto CI_NAME_POS_TOLERANCE
Definition motorBaseConfig.hpp:43
constexpr auto FITS_PARAM_POSNAME
Definition motorBaseConfig.hpp:89
constexpr auto RPC_MOVE_REL
Definition motorBaseConfig.hpp:47
constexpr auto CI_STAT_ENC_POS
Definition motorBaseConfig.hpp:77
constexpr int SUBSTATE_ABORTING
Definition motorBaseConfig.hpp:50
constexpr auto SUBSTATE_READY_STR
Definition motorBaseConfig.hpp:56
constexpr int SUBSTATE_OP_SETTING_POS
Definition motorBaseConfig.hpp:53
constexpr auto RPC_MOVE_VEL
Definition motorBaseConfig.hpp:48
constexpr int SUBSTATE_OP_MOVING
Definition motorBaseConfig.hpp:52
constexpr auto CI_STAT_TARGET_VEL
Definition motorBaseConfig.hpp:85
constexpr auto CI_STAT_ACTUAL_VEL
Definition motorBaseConfig.hpp:84
constexpr auto CI_POS_NAME
Definition motorBaseConfig.hpp:38
constexpr auto UNDEFINED_NAMED_POS
Definition motorBaseConfig.hpp:96
constexpr auto CI_POS_NO
Definition motorBaseConfig.hpp:42
The NamedPositionConfig struct.
Definition motorBaseConfig.hpp:107
std::optional< std::string > m_pos_id
Definition motorBaseConfig.hpp:120
std::optional< std::string > GetType()
Definition motorBaseConfig.hpp:112
std::optional< int > GetSlot()
Definition motorBaseConfig.hpp:116
std::optional< std::string > GetId()
Definition motorBaseConfig.hpp:108
std::optional< int > m_slot
Definition motorBaseConfig.hpp:122
std::optional< std::string > m_pos_type
Definition motorBaseConfig.hpp:121
std::string const
Definition test{{cookiecutter.device_name|capitalize()}}.cpp:161