Scanframe Modular Application 0.1.0
Loading...
Searching...
No Matches
GmiEmulator.h
Go to the documentation of this file.
1#pragma once
4#include <misc/gen/Sustain.h>
5
6namespace sf
7{
8
9using gmi::Controller;
11using gmi::EAxisMode;
15using gmi::EParam;
16using gmi::EResult;
17using gmi::IdList;
18using gmi::ParamInfo;
19
20class GmiEmulator final : public Controller
21{
22 public:
24
28 class TAxis final : public Axis
29 {
30 public:
37 TAxis(GmiEmulator* me, EAxisLocation al);
41 ~TAxis() override;
42 //
43 void DoMovePos(EMovePosCmd mpc);
44 void DoMoveVel(EMoveVelCmd mvc);
45 void DoMoveCon(EMoveConCmd mcc);
46 //
47 bool IsMovePosComplete(timespec clk);
48 bool IsMoveVelComplete(timespec clk);
49 bool IsMoveConComplete(timespec clk);
50 // Position move timer
52 // Velocity move timer.
54 // Continuous move timer.
56 // Target values.
57 double TrgPos;
58 double TrgVel;
59 double TrgAcc;
60 double TrgDist;
61 double TrgDist2;
62 // Holds the velocity in velocity mode from which is accelerated.
63 double StartVel;
64 // Current values.
65 double CurPos;
66 double CurVel;
67 double OfsPos;
68 // Maximum values.
69 double MaxPos;
70 double MaxVel;
71 double MaxAcc;
72 // Minimum values.
73 double MinPos;
74 // Holds the accuracy of this axis.
75 double Accuracy;
76 // Holds the fake resolution. (Does nothing at all)
77 double Resolution;
78 // Holds the rounding for the motion parameters of this axis.
79 double Round;
80 // Holds the mode set.
81 EAxisMode Mode;
82 //
84
86 };
87
88 // Constructor.
89 explicit GmiEmulator(const Parameters&);
90 // Destructor.
91 ~GmiEmulator() override;
92 // Overloaded from base class.
93 bool doInitialize(bool) override;
94 // Overloaded from base class.
95 bool doHomeAxes(bool skip) override;
96 // Overloaded from base class.
98 // Overloaded from base class.
99 bool enumParamIds(IdList& ids) const override;
100 // Overloaded from base class.
101 gmi::IdType getParamId(EParam param, int axis = std::numeric_limits<int>::max()) const override;
102 // Overloaded from base class.
103 bool handleParam(gmi::IdType id, ParamInfo* info, const Value* setval, Value* getval) override;
104 // Overloaded from base class.
105 gmi::IdType getResultId(EResult result, int axis = std::numeric_limits<int>::max()) const override;
106 // Overloaded from base class.
107 bool enumResultIds(IdList& ids) const override;
108 // Overloaded from base class.
109 bool handleResult(gmi::IdType id, gmi::ResultInfo* info, gmi::BufferInfo* buf_info) override;
110 //
111 void doMovePos(EMovePosCmd mpc);
112 //
113 void doMoveVel(EMoveVelCmd mvc);
114 //
115 void doMoveCon(EMoveConCmd mcc);
116
117 //
119 // Axis
120 TAxis _axisX;// Lineair and moves in [m].
121 TAxis _axisY;// Lineair and moves in [m].
122 TAxis _axisZ;// Lineair and moves in [m].
123 TAxis _axisA;// Angular Gimble and moves [rad].
124 TAxis _axisB;// Angular Swivel and moves [rad].
125 TAxis _axisC;// Angular Turntable and moves [rad and/or Hz].
126 // TAxis _axisD; // Tool Angular and moves [rad].
127 TAxis _axisE;// Tool Lineair and moves in [m].
128 // Holds the axis initialization status.
130 // Holds the joystick mode flag.
132 // Holds the axis responsible for triggering the measurement.
134 // Holds the axis trigger mode. (intern/extern)
136 // Holds the select pop axis.
138 //
140 //
142 //
144 // Holds the current position state.
145 EMovePosCmd _curMovePos;
146 // Holds the current velocity state.
147 EMoveVelCmd _curMoveVel;
148 // Holds the current continuous state.
149 EMoveConCmd _curMoveCon;
150 // Hook to the sustain interface.
152 //
153 bool sustain(const timespec& t);
154 // Hold the reported firmware revision.
155 std::string _firmwareRevision;
156 // Artificial homing delay.
158 // Holds the error status.
160 //
162 // Holds the last pop event count.
164 //
166
167 friend TAxis;
168};
169
170}// namespace sf
Timer for turning true when a certain amount of time has passed.
Definition ElapseTimer.h:12
Axis type of this implementation.
Definition GmiEmulator.h:29
GmiEmulator * _Controller
Definition GmiEmulator.h:83
EAxisMode Mode
Definition GmiEmulator.h:81
double CurVel
Definition GmiEmulator.h:66
double OfsPos
Definition GmiEmulator.h:67
bool IsMovePosComplete(timespec clk)
TAxis(GmiEmulator *me, EAxisLocation al)
Constructor.
sf::ElapseTimer MoveConTimer
Definition GmiEmulator.h:55
double TrgAcc
Definition GmiEmulator.h:59
double Resolution
Definition GmiEmulator.h:77
double MinPos
Definition GmiEmulator.h:73
double TrgDist
Definition GmiEmulator.h:60
double MaxAcc
Definition GmiEmulator.h:71
double MaxVel
Definition GmiEmulator.h:70
double TrgDist2
Definition GmiEmulator.h:61
double MaxPos
Definition GmiEmulator.h:69
friend GmiEmulator
Definition GmiEmulator.h:85
void DoMoveVel(EMoveVelCmd mvc)
sf::ElapseTimer MoveVelTimer
Definition GmiEmulator.h:53
double StartVel
Definition GmiEmulator.h:63
double Round
Definition GmiEmulator.h:79
sf::ElapseTimer MovePosTimer
Definition GmiEmulator.h:51
void DoMovePos(EMovePosCmd mpc)
Axis TInherited
Definition GmiEmulator.h:31
double TrgVel
Definition GmiEmulator.h:58
bool IsMoveConComplete(timespec clk)
bool IsMoveVelComplete(timespec clk)
double TrgPos
Definition GmiEmulator.h:57
double CurPos
Definition GmiEmulator.h:65
double Accuracy
Definition GmiEmulator.h:75
void DoMoveCon(EMoveConCmd mcc)
~TAxis() override
Destructor.
Definition GmiEmulator.h:21
ElapseTimer _homingDelay
Definition GmiEmulator.h:157
bool enumParamIds(IdList &ids) const override
int _joystickState
Definition GmiEmulator.h:131
TAxis _axisZ
Definition GmiEmulator.h:122
GmiEmulator(const Parameters &)
bool sustain(const timespec &t)
void doMoveCon(EMoveConCmd mcc)
TAxis _axisB
Definition GmiEmulator.h:124
~GmiEmulator() override
void doMoveVel(EMoveVelCmd mvc)
gmi::IdType getParamId(EParam param, int axis=std::numeric_limits< int >::max()) const override
bool _triggerEnable
Definition GmiEmulator.h:143
void doMovePos(EMovePosCmd mpc)
bool doInitialize(bool) override
Initialization function which must be overloaded by a derived class. Should check the hardware config...
TAxis _axisA
Definition GmiEmulator.h:123
bool doHomeAxes(bool skip) override
Does the real execution of the home function and must be overloaded. When skip has been passed the im...
EMoveVelCmd _curMoveVel
Definition GmiEmulator.h:147
int _triggerAxis
Definition GmiEmulator.h:133
int _popEventCount
Definition GmiEmulator.h:163
TAxis _axisY
Definition GmiEmulator.h:121
friend TAxis
Definition GmiEmulator.h:167
bool enumResultIds(IdList &ids) const override
TVector< TAxis * > AxisList
Definition GmiEmulator.h:118
int _chuckJaw
Definition GmiEmulator.h:161
std::string _firmwareRevision
Definition GmiEmulator.h:155
TAxis _axisE
Definition GmiEmulator.h:127
gmi::IdType getResultId(EResult result, int axis=std::numeric_limits< int >::max()) const override
double _triggerFrequency
Definition GmiEmulator.h:141
int _popAxis
Definition GmiEmulator.h:137
TAxis _axisX
Definition GmiEmulator.h:120
bool _flagInitialized
Definition GmiEmulator.h:129
TAxis _axisC
Definition GmiEmulator.h:125
int _triggerMode
Definition GmiEmulator.h:135
bool handleResult(gmi::IdType id, gmi::ResultInfo *info, gmi::BufferInfo *buf_info) override
This function must be overloaded to handle the interface results.
double _triggerDensity
Definition GmiEmulator.h:139
EMovePosCmd _curMovePos
Definition GmiEmulator.h:145
bool handleParam(gmi::IdType id, ParamInfo *info, const Value *setval, Value *getval) override
This function must be overloaded to handle the interface parameters. When info in non-null the parame...
int _error
Definition GmiEmulator.h:159
Controller TInherited
Definition GmiEmulator.h:23
TSustain< GmiEmulator > _sustainEntry
Definition GmiEmulator.h:151
void addPropertyPages(PropertySheetDialog *sheet) override
Adds controller specific property pages to the passed sheet.
EMoveConCmd _curMoveCon
Definition GmiEmulator.h:149
int _debug
Definition GmiEmulator.h:165
Dialog containing multiple property pages.
Definition qt/PropertySheetDialog.h:14
Template to make the sustain system call a class method regularly.
Definition Sustain.h:184
Counted vector having additional methods and operators for ease of usage. This template class extends...
Definition TVector.h:20
Value container class able to performing arithmetic functions.
Definition Value.h:19
Interface class to access Axis properties and functions.
Definition Controller.h:75
Pure virtual class for implementation of motion controllers.
Definition Controller.h:13
unsigned long long IdType
Type for gathering parameter ID's.
Definition GmiTypes.h:19
EMovePosCmd
Enumerate for controller position movement command.
Definition GmiInterface.h:485
EAxisMode
Enumerate for controller mode of operation.
Definition GmiInterface.h:582
EResult
Motion default results.
Definition GmiInterface.h:462
EMoveVelCmd
Enumerate for controller velocity movement command.
Definition GmiInterface.h:512
EMoveConCmd
Enumerate for controller continuous movement command.
Definition GmiInterface.h:535
EParam
Motion default parameters. List of ids which must always be implemented for each motion implementatio...
Definition GmiInterface.h:288
EAxisLocation
Enumeration of axis locations.
Definition GmiTypes.h:81
TVector< IdType > IdList
Type for gathering parameter ID's.
Definition GmiTypes.h:24
Definition Application.h:10
Structure to hold data update information.
Definition GmiInterface.h:235
Arguments for when creating a controller implementation.
Definition Controller.h:19
Structure to hold parameter information.
Definition GmiInterface.h:107
Structure to hold parameter information.
Definition GmiInterface.h:171