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.
62 // Holds the velocity in velocity mode from which is accelerated.
64 // Current values.
68 // Maximum values.
72 // Minimum values.
74 // Holds the accuracy of this axis.
76 // Holds the fake resolution. (Does nothing at all)
78 // Holds the rounding for the motion parameters of this axis.
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 // Overridden from base class.
93 bool doInitialize(bool) override;
94 // Overridden from base class.
95 bool doHomeAxes(bool skip) override;
96 // Overridden from base class.
98 // Overridden from base class.
99 bool enumParamIds(IdList& ids) const override;
100 // Overridden from base class.
101 gmi::IdType getParamId(EParam param, int axis = std::numeric_limits<int>::max()) const override;
102 // Overridden from base class.
103 bool handleParam(gmi::IdType id, ParamInfo* info, const Value* setval, Value* getval) override;
104 // Overridden from base class.
105 gmi::IdType getResultId(EResult result, int axis = std::numeric_limits<int>::max()) const override;
106 // Overridden from base class.
107 bool enumResultIds(IdList& ids) const override;
108 // Overridden 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& ts);
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
value_type MaxAcc
Definition GmiEmulator.h:71
value_type StartVel
Definition GmiEmulator.h:63
value_type CurPos
Definition GmiEmulator.h:65
value_type TrgVel
Definition GmiEmulator.h:58
value_type CurVel
Definition GmiEmulator.h:66
value_type TrgDist2
Definition GmiEmulator.h:61
bool IsMovePosComplete(timespec clk)
TAxis(GmiEmulator *me, EAxisLocation al)
Constructor.
sf::ElapseTimer MoveConTimer
Definition GmiEmulator.h:55
value_type MaxPos
Definition GmiEmulator.h:69
value_type Round
Definition GmiEmulator.h:79
value_type MinPos
Definition GmiEmulator.h:73
friend GmiEmulator
Definition GmiEmulator.h:85
void DoMoveVel(EMoveVelCmd mvc)
value_type TrgPos
Definition GmiEmulator.h:57
sf::ElapseTimer MoveVelTimer
Definition GmiEmulator.h:53
value_type Resolution
Definition GmiEmulator.h:77
sf::ElapseTimer MovePosTimer
Definition GmiEmulator.h:51
void DoMovePos(EMovePosCmd mpc)
Axis TInherited
Definition GmiEmulator.h:31
bool IsMoveConComplete(timespec clk)
value_type OfsPos
Definition GmiEmulator.h:67
bool IsMoveVelComplete(timespec clk)
value_type TrgAcc
Definition GmiEmulator.h:59
value_type MaxVel
Definition GmiEmulator.h:70
value_type TrgDist
Definition GmiEmulator.h:60
void DoMoveCon(EMoveConCmd mcc)
value_type Accuracy
Definition GmiEmulator.h:75
~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 &)
void doMoveCon(EMoveConCmd mcc)
value_type _triggerDensity
Definition GmiEmulator.h:139
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 overridden by a derived class. Should check the hardware config...
TAxis _axisA
Definition GmiEmulator.h:123
bool sustain(const timespec &ts)
bool doHomeAxes(bool skip) override
Does the real execution of the home function and must be overridden. 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
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 overridden to handle the interface results.
EMovePosCmd _curMovePos
Definition GmiEmulator.h:145
bool handleParam(gmi::IdType id, ParamInfo *info, const Value *setval, Value *getval) override
This function must be overridden to handle the interface parameters. When info in non-null the parame...
value_type _triggerFrequency
Definition GmiEmulator.h:141
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:15
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:19
Value container class able to performing arithmetic functions.
Definition Value.h:19
Interface class to access Axis properties and functions.
Definition Controller.h:73
Pure virtual class for implementation of motion controllers.
Definition Controller.h:13
Value::flt_type value_type
Use the floating point type of the Value class.
Definition Controller.h:16
unsigned long long IdType
Type for gathering parameter ID's.
Definition GmiTypes.h:19
EMoveConCmd
Enumerate for controller continuous movement command.
Definition GmiInterface.h:537
EMovePosCmd
Enumerate for controller position movement command.
Definition GmiInterface.h:487
EAxisMode
Enumerate for controller mode of operation.
Definition GmiInterface.h:584
EResult
Motion default results.
Definition GmiInterface.h:464
EMoveVelCmd
Enumerate for controller velocity movement command.
Definition GmiInterface.h:514
EParam
Motion default parameters. List of ids which must always be implemented for each motion implementatio...
Definition GmiInterface.h:290
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:237
Arguments for when creating a controller implementation.
Definition Controller.h:22
Structure to hold parameter information.
Definition GmiInterface.h:109
Structure to hold parameter information.
Definition GmiInterface.h:173