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:
27 class TAxis final : public Axis
28 {
29 public:
36 TAxis(GmiEmulator* me, EAxisLocation al);
40 ~TAxis() override;
41 //
42 void DoMovePos(EMovePosCmd mpc);
43 void DoMoveVel(EMoveVelCmd mvc);
44 void DoMoveCon(EMoveConCmd mcc);
45 //
46 bool IsMovePosComplete(timespec clk);
47 bool IsMoveVelComplete(timespec clk);
48 bool IsMoveConComplete(timespec clk);
49 // Position move timer
51 // Velocity move timer.
53 // Continuous move timer.
55 // Target values.
56 double TrgPos;
57 double TrgVel;
58 double TrgAcc;
59 double TrgDist;
60 double TrgDist2;
61 // Holds the velocity in velocity mode from which is accelerated.
62 double StartVel;
63 // Current values.
64 double CurPos;
65 double CurVel;
66 double OfsPos;
67 // Maximum values.
68 double MaxPos;
69 double MaxVel;
70 double MaxAcc;
71 // Minimum values.
72 double MinPos;
73 // Holds the accuracy of this axis.
74 double Accuracy;
75 // Holds the fake resolution. (Does nothing at all)
76 double Resolution;
77 // Holds the rounding for the motion parameters of this axis.
78 double Round;
79 // Holds the mode set.
80 EAxisMode Mode;
81 //
83
85 };
86 // Constructor.
87 explicit GmiEmulator(const Parameters&);
88 // Destructor.
89 ~GmiEmulator() override;
90 // Overloaded from base class.
91 bool doInitialize(bool) override;
92 // Overloaded from base class.
93 bool doHomeAxes(bool skip) override;
94 // Overloaded from base class.
96 // Overloaded from base class.
97 bool enumParamIds(IdList& ids) const override;
98 // Overloaded from base class.
99 gmi::IdType getParamId(EParam param, int axis = std::numeric_limits<int>::max()) const override;
100 // Overloaded from base class.
101 bool handleParam(gmi::IdType id, ParamInfo* info, const Value* setval, Value* getval) override;
102 // Overloaded from base class.
103 gmi::IdType getResultId(EResult result, int axis = std::numeric_limits<int>::max()) const override;
104 // Overloaded from base class.
105 bool enumResultIds(IdList& ids) const override;
106 // Overloaded from base class.
107 bool handleResult(gmi::IdType id, gmi::ResultInfo* info, gmi::BufferInfo* buf_info) override;
108 //
109 void doMovePos(EMovePosCmd mpc);
110 //
111 void doMoveVel(EMoveVelCmd mvc);
112 //
113 void doMoveCon(EMoveConCmd mcc);
114
115 //
117 // Axis
118 TAxis _axisX;// Lineair and moves in [m].
119 TAxis _axisY;// Lineair and moves in [m].
120 TAxis _axisZ;// Lineair and moves in [m].
121 TAxis _axisA;// Angular Gimble and moves [rad].
122 TAxis _axisB;// Angular Swivel and moves [rad].
123 TAxis _axisC;// Angular Turntable and moves [rad and/or Hz].
124 //TAxis _axisD; // Tool Angular and moves [rad].
125 TAxis _axisE;// Tool Lineair and moves in [m].
126 // Holds the axis initialization status.
128 // Holds the joystick mode flag.
130 // Holds the axis responsible for triggering the measurement.
132 // Holds the axis trigger mode. (intern/extern)
134 // Holds the select pop axis.
136 //
138 //
140 //
142 // Holds the current position state.
143 EMovePosCmd _curMovePos;
144 // Holds the current velocity state.
145 EMoveVelCmd _curMoveVel;
146 // Holds the current continuous state.
147 EMoveConCmd _curMoveCon;
148 // Hook to the sustain interface.
150 //
151 bool sustain(const timespec& t);
152 // Hold the reported firmware revision.
153 std::string _firmwareRevision;
154 // Artificial homing delay.
156 // Holds the error status.
158 //
160 // Holds the last pop event count.
162 //
164
165 friend TAxis;
166};
167
168}// 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:28
GmiEmulator * _Controller
Definition GmiEmulator.h:82
EAxisMode Mode
Definition GmiEmulator.h:80
double CurVel
Definition GmiEmulator.h:65
double OfsPos
Definition GmiEmulator.h:66
bool IsMovePosComplete(timespec clk)
TAxis(GmiEmulator *me, EAxisLocation al)
Constructor.
sf::ElapseTimer MoveConTimer
Definition GmiEmulator.h:54
double TrgAcc
Definition GmiEmulator.h:58
double Resolution
Definition GmiEmulator.h:76
double MinPos
Definition GmiEmulator.h:72
double TrgDist
Definition GmiEmulator.h:59
double MaxAcc
Definition GmiEmulator.h:70
double MaxVel
Definition GmiEmulator.h:69
double TrgDist2
Definition GmiEmulator.h:60
double MaxPos
Definition GmiEmulator.h:68
friend GmiEmulator
Definition GmiEmulator.h:84
void DoMoveVel(EMoveVelCmd mvc)
sf::ElapseTimer MoveVelTimer
Definition GmiEmulator.h:52
double StartVel
Definition GmiEmulator.h:62
double Round
Definition GmiEmulator.h:78
sf::ElapseTimer MovePosTimer
Definition GmiEmulator.h:50
void DoMovePos(EMovePosCmd mpc)
Axis TInherited
Definition GmiEmulator.h:30
double TrgVel
Definition GmiEmulator.h:57
bool IsMoveConComplete(timespec clk)
bool IsMoveVelComplete(timespec clk)
double TrgPos
Definition GmiEmulator.h:56
double CurPos
Definition GmiEmulator.h:64
double Accuracy
Definition GmiEmulator.h:74
void DoMoveCon(EMoveConCmd mcc)
~TAxis() override
Destructor.
Definition GmiEmulator.h:21
ElapseTimer _homingDelay
Definition GmiEmulator.h:155
bool enumParamIds(IdList &ids) const override
int _joystickState
Definition GmiEmulator.h:129
TAxis _axisZ
Definition GmiEmulator.h:120
GmiEmulator(const Parameters &)
bool sustain(const timespec &t)
void doMoveCon(EMoveConCmd mcc)
TAxis _axisB
Definition GmiEmulator.h:122
~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:141
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:121
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:145
int _triggerAxis
Definition GmiEmulator.h:131
int _popEventCount
Definition GmiEmulator.h:161
TAxis _axisY
Definition GmiEmulator.h:119
friend TAxis
Definition GmiEmulator.h:165
bool enumResultIds(IdList &ids) const override
TVector< TAxis * > AxisList
Definition GmiEmulator.h:116
int _chuckJaw
Definition GmiEmulator.h:159
std::string _firmwareRevision
Definition GmiEmulator.h:153
TAxis _axisE
Definition GmiEmulator.h:125
gmi::IdType getResultId(EResult result, int axis=std::numeric_limits< int >::max()) const override
double _triggerFrequency
Definition GmiEmulator.h:139
int _popAxis
Definition GmiEmulator.h:135
TAxis _axisX
Definition GmiEmulator.h:118
bool _flagInitialized
Definition GmiEmulator.h:127
TAxis _axisC
Definition GmiEmulator.h:123
int _triggerMode
Definition GmiEmulator.h:133
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:137
EMovePosCmd _curMovePos
Definition GmiEmulator.h:143
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:157
Controller TInherited
Definition GmiEmulator.h:23
TSustain< GmiEmulator > _sustainEntry
Definition GmiEmulator.h:149
void addPropertyPages(PropertySheetDialog *sheet) override
Adds controller specific property pages to the passed sheet.
EMoveConCmd _curMoveCon
Definition GmiEmulator.h:147
int _debug
Definition GmiEmulator.h:163
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.
Definition TVector.h:25
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:481
EAxisMode
Enumerate for controller mode of operation.
Definition GmiInterface.h:578
EResult
Motion default results.
Definition GmiInterface.h:458
EMoveVelCmd
Enumerate for controller velocity movement command.
Definition GmiInterface.h:508
EMoveConCmd
Enumerate for controller continuous movement command.
Definition GmiInterface.h:531
EParam
Motion default parameters. List of ids which must always be implemented for each motion implementatio...
Definition GmiInterface.h:284
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:231
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