motor.cpp
Go to the documentation of this file.
1 #include "phidgets_api/motor.h"
2 
3 #include <cassert>
4 
5 // Get and return the value name of type type (I varient is indexed)
6 #define GAR(type, name) type x; int ret = CPhidgetMotorControl_get ## name (motor_handle_, &x); assert(ret == EPHIDGET_OK); return x;
7 #define GAR_I(type, name, i) type x; int ret = CPhidgetMotorControl_get ## name (motor_handle_, i, &x); assert(ret == EPHIDGET_OK); return x;
8 
9 // Set the value name to x (I varient is indexed)
10 #define SET(name, x) int ret = CPhidgetMotorControl_set ## name (motor_handle_, x); assert(ret == EPHIDGET_OK);
11 #define SET_I(name, x, i) int ret = CPhidgetMotorControl_set ## name (motor_handle_, i, x); assert(ret == EPHIDGET_OK);
12 
13 namespace phidgets
14 {
15 
17  Phidget(),
18  motor_handle_(0)
19 {
20  // create the handle
21  CPhidgetMotorControl_create(&motor_handle_);
22 
23  // pass handle to base class
24  Phidget::init((CPhidgetHandle)motor_handle_);
25 
26  // register base class callbacks
28 
29  // register motor data callbacks
30  CPhidgetMotorControl_set_OnVelocityChange_Handler(motor_handle_, VelocityChangeHandler, this);
31  CPhidgetMotorControl_set_OnCurrentChange_Handler(motor_handle_, CurrentChangeHandler, this);
32  CPhidgetMotorControl_set_OnInputChange_Handler(motor_handle_, InputChangeHandler, this);
33  CPhidgetMotorControl_set_OnEncoderPositionChange_Handler(motor_handle_, EncoderPositionChangeHandler, this);
34  CPhidgetMotorControl_set_OnEncoderPositionUpdate_Handler(motor_handle_, EncoderPositionUpdateHandler, this);
35  CPhidgetMotorControl_set_OnBackEMFUpdate_Handler(motor_handle_, BackEMFUpdateHandler, this);
36  CPhidgetMotorControl_set_OnSensorUpdate_Handler(motor_handle_, SensorUpdateHandler, this);
37  CPhidgetMotorControl_set_OnCurrentUpdate_Handler(motor_handle_, CurrentUpdateHandler, this);
38 }
39 
41 {
42  GAR(int, MotorCount);
43 }
44 
46 {
47  GAR_I(double, Velocity, index);
48 }
49 
50 void MotorController::setVelocity(int index, double velocity)
51 {
52  SET_I(Velocity, velocity, index);
53 }
54 
56 {
57  GAR_I(double, Acceleration, index);
58 }
59 
60 void MotorController::setAcceleration(int index, double acceleration)
61 {
62  SET_I(Acceleration, acceleration, index);
63 }
64 
66 {
67  GAR_I(double, AccelerationMax, index);
68 }
69 
71 {
72  GAR_I(double, AccelerationMin, index);
73 }
74 
75 double MotorController::getCurrent(int index)
76 {
77  GAR_I(double, Current, index);
78 }
79 
81 {
82  GAR(int, InputCount);
83 }
84 
86 {
87  int state;
88  int ret = CPhidgetMotorControl_getInputState(motor_handle_, index, &state);
89 
90  assert(ret == EPHIDGET_OK);
91 
92  return state == PTRUE;
93 }
94 
96 {
97  GAR(int, EncoderCount);
98 }
99 
101 {
102  GAR_I(int, EncoderPosition, index);
103 }
104 
105 void MotorController::setEncoderPosition(int index, int position)
106 {
107  SET_I(EncoderPosition, position, index);
108 }
109 
111 {
112  GAR_I(int, BackEMFSensingState, index);
113 }
114 
115 void MotorController::setBackEMFSensingState(int index, int bEMFState)
116 {
117  SET_I(BackEMFSensingState, bEMFState, index);
118 }
119 
121 {
122  GAR_I(double, BackEMF, index);
123 }
124 
126 {
127  GAR(double, SupplyVoltage);
128 }
129 
131 {
132  GAR_I(double, Braking, index);
133 }
134 
135 void MotorController::setBraking(int index, double braking)
136 {
137  SET_I(Braking, braking, index);
138 }
139 
141 {
142  GAR(int, SensorCount);
143 }
144 
146 {
147  GAR_I(int, SensorValue, index);
148 }
149 
151 {
152  GAR_I(int, SensorRawValue, index);
153 }
154 
156 {
157  GAR(int, Ratiometric);
158 }
159 
160 void MotorController::setRatiometric(int ratiometric)
161 {
162  SET(Ratiometric, ratiometric);
163 }
164 
165 int MotorController::VelocityChangeHandler(CPhidgetMotorControlHandle /* phid */, void *userPtr, int index, double velocity)
166 {
167  ((MotorController*)userPtr)->velocityChangeHandler(index, velocity);
168  return 0;
169 }
170 
171 int MotorController::CurrentChangeHandler(CPhidgetMotorControlHandle /* phid */, void *userPtr, int index, double current)
172 {
173  ((MotorController*)userPtr)->currentChangeHandler(index, current);
174  return 0;
175 }
176 
177 int MotorController::InputChangeHandler(CPhidgetMotorControlHandle /* phid */, void *userPtr, int index, int inputState)
178 {
179  ((MotorController*)userPtr)->inputChangeHandler(index, inputState);
180  return 0;
181 }
182 
183 int MotorController::EncoderPositionChangeHandler(CPhidgetMotorControlHandle /* phid */, void *userPtr, int index, int time, int positionChange)
184 {
185  ((MotorController*)userPtr)->encoderPositionChangeHandler(index, time, positionChange);
186  return 0;
187 }
188 
189 int MotorController::EncoderPositionUpdateHandler(CPhidgetMotorControlHandle /* phid */, void *userPtr, int index, int positionChange)
190 {
191  ((MotorController*)userPtr)->encoderPositionUpdateHandler(index, positionChange);
192  return 0;
193 }
194 
195 int MotorController::BackEMFUpdateHandler(CPhidgetMotorControlHandle /* phid */, void *userPtr, int index, double voltage)
196 {
197  ((MotorController*)userPtr)->backEMFUpdateHandler(index, voltage);
198  return 0;
199 }
200 
201 int MotorController::SensorUpdateHandler(CPhidgetMotorControlHandle /* phid */, void *userPtr, int index, int sensorValue)
202 {
203  ((MotorController*)userPtr)->sensorUpdateHandler(index, sensorValue);
204  return 0;
205 }
206 
207 int MotorController::CurrentUpdateHandler(CPhidgetMotorControlHandle /* phid */, void *userPtr, int index, double current)
208 {
209  ((MotorController*)userPtr)->currentUpdateHandler(index, current);
210  return 0;
211 }
212 
213 void MotorController::velocityChangeHandler(int /* index */, double /* velocity */)
214 {
215  // This method can be overridden in a concrete subclass (e.g., ROS wrapper)
216 }
217 
218 void MotorController::currentChangeHandler(int /* index */, double /* current */)
219 {
220  // This method can be overridden in a concrete subclass (e.g., ROS wrapper)
221 }
222 
223 void MotorController::inputChangeHandler(int /* index */, int /* inputState */)
224 {
225  // This method can be overridden in a concrete subclass (e.g., ROS wrapper)
226 }
227 
228 void MotorController::encoderPositionChangeHandler(int /* index */, int /* time */, int /* positionChange */)
229 {
230  // This method can be overridden in a concrete subclass (e.g., ROS wrapper)
231 }
232 
233 void MotorController::encoderPositionUpdateHandler(int /* index */, int /* positionChange */)
234 {
235  // This method can be overridden in a concrete subclass (e.g., ROS wrapper)
236 }
237 
238 void MotorController::backEMFUpdateHandler(int /* index */, double /* voltage */)
239 {
240  // This method can be overridden in a concrete subclass (e.g., ROS wrapper)
241 }
242 
243 void MotorController::sensorUpdateHandler(int /* index */, int /* sensorValue */)
244 {
245  // This method can be overridden in a concrete subclass (e.g., ROS wrapper)
246 }
247 
248 void MotorController::currentUpdateHandler(int /* index */, double /* current */)
249 {
250  // This method can be overridden in a concrete subclass (e.g., ROS wrapper)
251 }
252 
253 } //namespace phidgets
double getVelocity(int index)
Definition: motor.cpp:45
void setRatiometric(int ratiometric)
Definition: motor.cpp:160
static int InputChangeHandler(CPhidgetMotorControlHandle phid, void *userPtr, int index, int inputState)
Definition: motor.cpp:177
double getCurrent(int index)
Definition: motor.cpp:75
virtual void backEMFUpdateHandler(int index, double voltage)
Definition: motor.cpp:238
virtual void encoderPositionUpdateHandler(int index, int positionChange)
Definition: motor.cpp:233
void setEncoderPosition(int index, int position)
Definition: motor.cpp:105
virtual void registerHandlers()
Definition: phidget.cpp:16
static int EncoderPositionChangeHandler(CPhidgetMotorControlHandle phid, void *userPtr, int index, int time, int positionChange)
Definition: motor.cpp:183
static int SensorUpdateHandler(CPhidgetMotorControlHandle phid, void *userPtr, int index, int sensorValue)
Definition: motor.cpp:201
virtual void currentUpdateHandler(int index, double current)
Definition: motor.cpp:248
static int EncoderPositionUpdateHandler(CPhidgetMotorControlHandle phid, void *userPtr, int index, int positionChange)
Definition: motor.cpp:189
static int BackEMFUpdateHandler(CPhidgetMotorControlHandle phid, void *userPtr, int index, double voltage)
Definition: motor.cpp:195
bool getInputState(int index)
Definition: motor.cpp:85
double getAcceleration(int index)
Definition: motor.cpp:55
int getEncoderPosition(int index)
Definition: motor.cpp:100
int getBackEMFSensingState(int index)
Definition: motor.cpp:110
static int CurrentChangeHandler(CPhidgetMotorControlHandle phid, void *userPtr, int index, double current)
Definition: motor.cpp:171
int getSensorRawValue(int index)
Definition: motor.cpp:150
#define SET_I(name, x, i)
Definition: motor.cpp:11
CPhidgetMotorControlHandle motor_handle_
Definition: motor.h:52
virtual void encoderPositionChangeHandler(int index, int time, int positionChange)
Definition: motor.cpp:228
virtual void sensorUpdateHandler(int index, int sensorValue)
Definition: motor.cpp:243
static int VelocityChangeHandler(CPhidgetMotorControlHandle phid, void *userPtr, int index, double velocity)
Definition: motor.cpp:165
void setVelocity(int index, double velocity)
Definition: motor.cpp:50
virtual void inputChangeHandler(int index, int inputState)
Definition: motor.cpp:223
double getBackEMF(int index)
Definition: motor.cpp:120
int getSensorValue(int index)
Definition: motor.cpp:145
#define GAR(type, name)
Definition: motor.cpp:6
void setAcceleration(int index, double acceleration)
Definition: motor.cpp:60
#define GAR_I(type, name, i)
Definition: motor.cpp:7
#define SET(name, x)
Definition: motor.cpp:10
double getBraking(int index)
Definition: motor.cpp:130
void setBraking(int index, double braking)
Definition: motor.cpp:135
void setBackEMFSensingState(int index, int bEMFState)
Definition: motor.cpp:115
double getAccelerationMax(int index)
Definition: motor.cpp:65
void init(CPhidgetHandle handle)
Definition: phidget.cpp:23
virtual void velocityChangeHandler(int index, double velocity)
Definition: motor.cpp:213
virtual void currentChangeHandler(int index, double current)
Definition: motor.cpp:218
double getAccelerationMin(int index)
Definition: motor.cpp:70
static int CurrentUpdateHandler(CPhidgetMotorControlHandle phid, void *userPtr, int index, double current)
Definition: motor.cpp:207


phidgets_api
Author(s): Tully Foote, Ivan Dryanovski
autogenerated on Tue May 7 2019 03:19:24