phidgets 0.1.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +3 -0
  3. data/README.rdoc +32 -43
  4. data/Rakefile +4 -2
  5. data/bin/phidget +18 -72
  6. data/ext/phidgets/extconf.rb +5 -8
  7. data/ext/phidgets/phidgets.c +708 -173
  8. data/ext/phidgets/phidgets.h +54 -35
  9. data/ext/phidgets/phidgets_accelerometer.c +193 -109
  10. data/ext/phidgets/phidgets_bldc_motor.c +529 -0
  11. data/ext/phidgets/phidgets_capacitive_touch.c +302 -0
  12. data/ext/phidgets/phidgets_common.c +570 -315
  13. data/ext/phidgets/phidgets_current_input.c +229 -0
  14. data/ext/phidgets/phidgets_dc_motor.c +562 -0
  15. data/ext/phidgets/phidgets_dictionary.c +154 -213
  16. data/ext/phidgets/phidgets_digital_input.c +127 -0
  17. data/ext/phidgets/phidgets_digital_output.c +288 -0
  18. data/ext/phidgets/phidgets_distance_sensor.c +295 -0
  19. data/ext/phidgets/phidgets_encoder.c +211 -192
  20. data/ext/phidgets/phidgets_frequency_counter.c +310 -177
  21. data/ext/phidgets/phidgets_gps.c +226 -164
  22. data/ext/phidgets/phidgets_gyroscope.c +195 -0
  23. data/ext/phidgets/phidgets_hub.c +39 -0
  24. data/ext/phidgets/phidgets_humidity_sensor.c +200 -0
  25. data/ext/phidgets/phidgets_ir.c +211 -171
  26. data/ext/phidgets/phidgets_lcd.c +512 -0
  27. data/ext/phidgets/phidgets_light_sensor.c +200 -0
  28. data/ext/phidgets/phidgets_log.c +263 -0
  29. data/ext/phidgets/phidgets_magnetometer.c +279 -0
  30. data/ext/phidgets/phidgets_manager.c +86 -297
  31. data/ext/phidgets/phidgets_motor_position_controller.c +787 -0
  32. data/ext/phidgets/phidgets_phsensor.c +200 -152
  33. data/ext/phidgets/phidgets_power_guard.c +144 -0
  34. data/ext/phidgets/phidgets_pressure_sensor.c +200 -0
  35. data/ext/phidgets/phidgets_rc_servo.c +672 -0
  36. data/ext/phidgets/phidgets_resistance_input.c +227 -0
  37. data/ext/phidgets/phidgets_rfid.c +107 -221
  38. data/ext/phidgets/phidgets_sound_sensor.c +284 -0
  39. data/ext/phidgets/phidgets_spatial.c +124 -318
  40. data/ext/phidgets/phidgets_stepper.c +457 -430
  41. data/ext/phidgets/phidgets_temp_sensor.c +223 -228
  42. data/ext/phidgets/phidgets_voltage_input.c +428 -0
  43. data/ext/phidgets/phidgets_voltage_output.c +167 -0
  44. data/ext/phidgets/phidgets_voltage_ratio_input.c +435 -0
  45. data/lib/phidgets.rb +21 -14
  46. data/lib/phidgets/accelerometer.rb +11 -15
  47. data/lib/phidgets/bldc_motor.rb +45 -0
  48. data/lib/phidgets/capacitive_touch.rb +33 -0
  49. data/lib/phidgets/common.rb +40 -69
  50. data/lib/phidgets/current_input.rb +21 -0
  51. data/lib/phidgets/dc_motor.rb +45 -0
  52. data/lib/phidgets/dictionary.rb +30 -39
  53. data/lib/phidgets/digital_input.rb +21 -0
  54. data/lib/phidgets/digital_output.rb +56 -0
  55. data/lib/phidgets/distance_sensor.rb +33 -0
  56. data/lib/phidgets/encoder.rb +1 -29
  57. data/lib/phidgets/frequency_counter.rb +23 -14
  58. data/lib/phidgets/gps.rb +34 -26
  59. data/lib/phidgets/gyroscope.rb +21 -0
  60. data/lib/phidgets/humidity_sensor.rb +21 -0
  61. data/lib/phidgets/ir.rb +34 -39
  62. data/lib/phidgets/light_sensor.rb +21 -0
  63. data/lib/phidgets/magnetometer.rb +21 -0
  64. data/lib/phidgets/manager.rb +18 -66
  65. data/lib/phidgets/motor_position_controller.rb +45 -0
  66. data/lib/phidgets/ph_sensor.rb +2 -6
  67. data/lib/phidgets/pressure_sensor.rb +21 -0
  68. data/lib/phidgets/rc_servo.rb +58 -0
  69. data/lib/phidgets/resistance_input.rb +21 -0
  70. data/lib/phidgets/rfid.rb +22 -38
  71. data/lib/phidgets/sound_sensor.rb +21 -0
  72. data/lib/phidgets/spatial.rb +11 -15
  73. data/lib/phidgets/stepper.rb +48 -50
  74. data/lib/phidgets/temperature_sensor.rb +11 -15
  75. data/lib/phidgets/version.rb +5 -0
  76. data/lib/phidgets/voltage_input.rb +34 -0
  77. data/lib/phidgets/voltage_output.rb +23 -0
  78. data/lib/phidgets/voltage_ratio_input.rb +34 -0
  79. data/phidgets.gemspec +3 -22
  80. data/test/test_accelerometer.rb +42 -23
  81. data/test/test_bldc_motor.rb +134 -0
  82. data/test/test_capacitive_touch.rb +82 -0
  83. data/test/test_common.rb +125 -108
  84. data/test/test_current_input.rb +62 -0
  85. data/test/test_dc_motor.rb +146 -0
  86. data/test/test_dictionary.rb +22 -54
  87. data/test/test_digital_input.rb +30 -0
  88. data/test/test_digital_output.rb +70 -0
  89. data/test/test_distance_sensor.rb +76 -0
  90. data/test/test_encoder.rb +45 -38
  91. data/test/test_frequency_counter.rb +71 -36
  92. data/test/test_gps.rb +29 -38
  93. data/test/test_gyroscope.rb +54 -0
  94. data/test/test_helper.rb +0 -1
  95. data/test/test_hub.rb +14 -0
  96. data/test/test_humidity_sensor.rb +58 -0
  97. data/test/test_ir.rb +34 -34
  98. data/test/test_lcd.rb +146 -0
  99. data/test/test_light_sensor.rb +58 -0
  100. data/test/test_magnetometer.rb +78 -0
  101. data/test/test_manager.rb +10 -79
  102. data/test/test_motor_control.rb +146 -108
  103. data/test/test_phidgets.rb +2 -14
  104. data/test/test_phsensor.rb +46 -34
  105. data/test/test_power_guard.rb +42 -0
  106. data/test/test_pressure_sensor.rb +58 -0
  107. data/test/test_rc_servo.rb +174 -0
  108. data/test/test_resistance_input.rb +66 -0
  109. data/test/test_rfid.rb +15 -54
  110. data/test/test_sound_sensor.rb +78 -0
  111. data/test/test_spatial.rb +19 -85
  112. data/test/test_stepper.rb +89 -98
  113. data/test/test_temp_sensor.rb +42 -47
  114. data/test/test_voltage_input.rb +102 -0
  115. data/test/test_voltage_output.rb +46 -0
  116. data/test/test_voltage_ratio_input.rb +102 -0
  117. metadata +72 -89
  118. data/ext/phidgets/phidgets_advanced_servo.c +0 -567
  119. data/ext/phidgets/phidgets_analog.c +0 -139
  120. data/ext/phidgets/phidgets_bridge.c +0 -263
  121. data/ext/phidgets/phidgets_interface_kit.c +0 -340
  122. data/ext/phidgets/phidgets_led.c +0 -178
  123. data/ext/phidgets/phidgets_motor_control.c +0 -642
  124. data/ext/phidgets/phidgets_servo.c +0 -276
  125. data/ext/phidgets/phidgets_text_lcd.c +0 -381
  126. data/ext/phidgets/phidgets_text_led.c +0 -107
  127. data/ext/phidgets/phidgets_weight_sensor.c +0 -113
  128. data/lib/phidgets/advanced_servo.rb +0 -49
  129. data/lib/phidgets/analog.rb +0 -8
  130. data/lib/phidgets/bridge.rb +0 -25
  131. data/lib/phidgets/interfacekit.rb +0 -49
  132. data/lib/phidgets/led.rb +0 -8
  133. data/lib/phidgets/motor_control.rb +0 -110
  134. data/lib/phidgets/servo.rb +0 -23
  135. data/lib/phidgets/text_lcd.rb +0 -8
  136. data/lib/phidgets/text_led.rb +0 -8
  137. data/lib/phidgets/weight_sensor.rb +0 -25
  138. data/test/test_advanced_servo.rb +0 -152
  139. data/test/test_analog.rb +0 -45
  140. data/test/test_bridge.rb +0 -77
  141. data/test/test_interfacekit.rb +0 -97
  142. data/test/test_led.rb +0 -55
  143. data/test/test_servo.rb +0 -67
  144. data/test/test_text_lcd.rb +0 -115
  145. data/test/test_text_led.rb +0 -35
  146. data/test/test_weight_sensor.rb +0 -32
@@ -0,0 +1,529 @@
1
+
2
+ #include "phidgets.h"
3
+
4
+ #define BLDC_MOTOR_BRAKING_STRENGTH_CHANGE_CALLBACK 0
5
+ #define BLDC_MOTOR_POSITION_CHANGE_CALLBACK 1
6
+ #define BLDC_MOTOR_VELOCITY_UPDATE_CALLBACK 2
7
+
8
+
9
+ VALUE ph_bldc_motor_init(VALUE self) {
10
+ ph_data_t *ph = get_ph_data(self);
11
+ ph_raise(PhidgetBLDCMotor_create((PhidgetBLDCMotorHandle *)(&(ph->handle))));
12
+ return self;
13
+ }
14
+
15
+ VALUE ph_bldc_motor_get_acceleration(VALUE self) {
16
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getAcceleration);
17
+ }
18
+
19
+ VALUE ph_bldc_motor_set_acceleration(VALUE self, VALUE accel) {
20
+ ph_raise(PhidgetBLDCMotor_setAcceleration((PhidgetBLDCMotorHandle)get_ph_handle(self), NUM2DBL(accel)));
21
+ return Qnil;
22
+ }
23
+
24
+ VALUE ph_bldc_motor_get_min_acceleration(VALUE self) {
25
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getMinAcceleration);
26
+ }
27
+
28
+ VALUE ph_bldc_motor_get_max_acceleration(VALUE self) {
29
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getMaxAcceleration);
30
+ }
31
+
32
+ VALUE ph_bldc_motor_get_braking_strength(VALUE self) {
33
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getBrakingStrength);
34
+ }
35
+
36
+ VALUE ph_bldc_motor_get_min_braking_strength(VALUE self) {
37
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getMinBrakingStrength);
38
+ }
39
+
40
+ VALUE ph_bldc_motor_get_max_braking_strength(VALUE self) {
41
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getMaxBrakingStrength);
42
+ }
43
+
44
+ VALUE ph_bldc_motor_get_data_interval(VALUE self) {
45
+ return ph_get_uint(get_ph_handle(self), (phidget_get_uint_func)PhidgetBLDCMotor_getDataInterval);
46
+ }
47
+
48
+ VALUE ph_bldc_motor_set_data_interval(VALUE self, VALUE interval) {
49
+ ph_raise(PhidgetBLDCMotor_setDataInterval((PhidgetBLDCMotorHandle)get_ph_handle(self), NUM2UINT(interval)));
50
+ return Qnil;
51
+ }
52
+
53
+ VALUE ph_bldc_motor_get_min_data_interval(VALUE self) {
54
+ return ph_get_uint(get_ph_handle(self), (phidget_get_uint_func)PhidgetBLDCMotor_getMinDataInterval);
55
+ }
56
+
57
+ VALUE ph_bldc_motor_get_max_data_interval(VALUE self) {
58
+ return ph_get_uint(get_ph_handle(self), (phidget_get_uint_func)PhidgetBLDCMotor_getMaxDataInterval);
59
+ }
60
+
61
+ VALUE ph_bldc_motor_get_position(VALUE self) {
62
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getPosition);
63
+ }
64
+
65
+ VALUE ph_bldc_motor_get_min_position(VALUE self) {
66
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getMinPosition);
67
+ }
68
+
69
+ VALUE ph_bldc_motor_get_max_position(VALUE self) {
70
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getMaxPosition);
71
+ }
72
+
73
+ VALUE ph_bldc_motor_add_position_offset(VALUE self, VALUE offset) {
74
+ ph_raise(PhidgetBLDCMotor_addPositionOffset((PhidgetBLDCMotorHandle)get_ph_handle(self), NUM2DBL(offset)));
75
+ return Qnil;
76
+ }
77
+
78
+ VALUE ph_bldc_motor_get_rescale_factor(VALUE self) {
79
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getRescaleFactor);
80
+ }
81
+
82
+ VALUE ph_bldc_motor_set_rescale_factor(VALUE self, VALUE rescale_factor) {
83
+ ph_raise(PhidgetBLDCMotor_setRescaleFactor((PhidgetBLDCMotorHandle)get_ph_handle(self), NUM2DBL(rescale_factor)));
84
+ return Qnil;
85
+ }
86
+
87
+ VALUE ph_bldc_motor_get_stall_velocity(VALUE self) {
88
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getStallVelocity);
89
+ }
90
+
91
+ VALUE ph_bldc_motor_set_stall_velocity(VALUE self, VALUE stall_velocity) {
92
+ ph_raise(PhidgetBLDCMotor_setStallVelocity((PhidgetBLDCMotorHandle)get_ph_handle(self), NUM2DBL(stall_velocity)));
93
+ return Qnil;
94
+ }
95
+
96
+ VALUE ph_bldc_motor_get_min_stall_velocity(VALUE self) {
97
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getMinStallVelocity);
98
+ }
99
+
100
+ VALUE ph_bldc_motor_get_max_stall_velocity(VALUE self) {
101
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getMaxStallVelocity);
102
+ }
103
+
104
+ VALUE ph_bldc_motor_get_target_braking_strength(VALUE self) {
105
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getTargetBrakingStrength);
106
+ }
107
+
108
+ VALUE ph_bldc_motor_set_target_braking_strength(VALUE self, VALUE target_braking_strength) {
109
+ ph_raise(PhidgetBLDCMotor_setTargetBrakingStrength((PhidgetBLDCMotorHandle)get_ph_handle(self), NUM2DBL(target_braking_strength)));
110
+ return Qnil;
111
+ }
112
+
113
+ VALUE ph_bldc_motor_get_target_velocity(VALUE self) {
114
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getTargetVelocity);
115
+ }
116
+
117
+ VALUE ph_bldc_motor_set_target_velocity(VALUE self, VALUE target_velocity) {
118
+ ph_raise(PhidgetBLDCMotor_setTargetVelocity((PhidgetBLDCMotorHandle)get_ph_handle(self), NUM2DBL(target_velocity)));
119
+ return Qnil;
120
+ }
121
+
122
+ VALUE ph_bldc_motor_get_velocity(VALUE self) {
123
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getVelocity);
124
+ }
125
+
126
+ VALUE ph_bldc_motor_get_min_velocity(VALUE self) {
127
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getMinVelocity);
128
+ }
129
+
130
+ VALUE ph_bldc_motor_get_max_velocity(VALUE self) {
131
+ return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetBLDCMotor_getMaxVelocity);
132
+ }
133
+
134
+
135
+ void CCONV ph_bldc_motor_on_braking_strength_change(PhidgetBLDCMotorHandle phid, void *userPtr, double braking_strength) {
136
+ ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
137
+ while(sem_wait(&callback_data->handler_ready)!=0) {};
138
+ callback_data->arg1 = DBL2NUM(braking_strength);
139
+ callback_data->arg2 = Qnil;
140
+ callback_data->arg3 = Qnil;
141
+ callback_data->arg4 = Qnil;
142
+ sem_post(&callback_data->callback_called);
143
+ }
144
+
145
+
146
+ VALUE ph_bldc_motor_set_on_braking_strength_change_handler(VALUE self, VALUE handler) {
147
+ ph_data_t *ph = get_ph_data(self);
148
+ ph_callback_data_t *callback_data = &ph->dev_callbacks[BLDC_MOTOR_BRAKING_STRENGTH_CHANGE_CALLBACK];
149
+ if( TYPE(handler) == T_NIL ) {
150
+ callback_data->callback = T_NIL;
151
+ callback_data->exit = true;
152
+ ph_raise(PhidgetBLDCMotor_setOnBrakingStrengthChangeHandler((PhidgetBLDCMotorHandle)ph->handle, NULL, (void *)NULL));
153
+ sem_post(&callback_data->callback_called);
154
+ } else {
155
+ callback_data->exit = false;
156
+ callback_data->phidget = self;
157
+ callback_data->callback = handler;
158
+ ph_raise(PhidgetBLDCMotor_setOnBrakingStrengthChangeHandler((PhidgetBLDCMotorHandle)ph->handle, ph_bldc_motor_on_braking_strength_change, (void *)callback_data));
159
+ ph_callback_thread(callback_data);
160
+ }
161
+ return Qnil;
162
+ }
163
+
164
+
165
+ void CCONV ph_bldc_motor_on_position_change(PhidgetBLDCMotorHandle phid, void *userPtr, double position) {
166
+ ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
167
+ while(sem_wait(&callback_data->handler_ready)!=0) {};
168
+ callback_data->arg1 = DBL2NUM(position);
169
+ callback_data->arg2 = Qnil;
170
+ callback_data->arg3 = Qnil;
171
+ callback_data->arg4 = Qnil;
172
+ sem_post(&callback_data->callback_called);
173
+ }
174
+
175
+
176
+ VALUE ph_bldc_motor_set_on_position_change_handler(VALUE self, VALUE handler) {
177
+ ph_data_t *ph = get_ph_data(self);
178
+ ph_callback_data_t *callback_data = &ph->dev_callbacks[BLDC_MOTOR_POSITION_CHANGE_CALLBACK];
179
+ if( TYPE(handler) == T_NIL ) {
180
+ callback_data->callback = T_NIL;
181
+ callback_data->exit = true;
182
+ ph_raise(PhidgetBLDCMotor_setOnPositionChangeHandler((PhidgetBLDCMotorHandle)ph->handle, NULL, (void *)NULL));
183
+ sem_post(&callback_data->callback_called);
184
+ } else {
185
+ callback_data->exit = false;
186
+ callback_data->phidget = self;
187
+ callback_data->callback = handler;
188
+ ph_raise(PhidgetBLDCMotor_setOnPositionChangeHandler((PhidgetBLDCMotorHandle)ph->handle, ph_bldc_motor_on_position_change, (void *)callback_data));
189
+ ph_callback_thread(callback_data);
190
+ }
191
+ return Qnil;
192
+ }
193
+
194
+
195
+ void CCONV ph_bldc_motor_on_velocity_update(PhidgetBLDCMotorHandle phid, void *userPtr, double velocity) {
196
+ ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
197
+ while(sem_wait(&callback_data->handler_ready)!=0) {};
198
+ callback_data->arg1 = DBL2NUM(velocity);
199
+ callback_data->arg2 = Qnil;
200
+ callback_data->arg3 = Qnil;
201
+ callback_data->arg4 = Qnil;
202
+ sem_post(&callback_data->callback_called);
203
+ }
204
+
205
+
206
+ VALUE ph_bldc_motor_set_on_velocity_update_handler(VALUE self, VALUE handler) {
207
+ ph_data_t *ph = get_ph_data(self);
208
+ ph_callback_data_t *callback_data = &ph->dev_callbacks[BLDC_MOTOR_VELOCITY_UPDATE_CALLBACK];
209
+ if( TYPE(handler) == T_NIL ) {
210
+ callback_data->callback = T_NIL;
211
+ callback_data->exit = true;
212
+ ph_raise(PhidgetBLDCMotor_setOnVelocityUpdateHandler((PhidgetBLDCMotorHandle)ph->handle, NULL, (void *)NULL));
213
+ sem_post(&callback_data->callback_called);
214
+ } else {
215
+ callback_data->exit = false;
216
+ callback_data->phidget = self;
217
+ callback_data->callback = handler;
218
+ ph_raise(PhidgetBLDCMotor_setOnVelocityUpdateHandler((PhidgetBLDCMotorHandle)ph->handle, ph_bldc_motor_on_velocity_update, (void *)callback_data));
219
+ ph_callback_thread(callback_data);
220
+ }
221
+ return Qnil;
222
+ }
223
+
224
+
225
+
226
+ void Init_bldc_motor() {
227
+ VALUE ph_module = rb_const_get(rb_cObject, rb_intern("Phidgets"));
228
+ VALUE ph_common = rb_const_get(ph_module, rb_intern("Common"));
229
+ VALUE ph_bldc_motor = rb_define_class_under(ph_module, "BLDCMotor", ph_common);
230
+
231
+
232
+
233
+ /* Document-method: new
234
+ * call-seq: new
235
+ *
236
+ * Creates a Phidget BLDCMotor object.
237
+ */
238
+ rb_define_method(ph_bldc_motor, "initialize", ph_bldc_motor_init, 0);
239
+
240
+ /* Document-method: getAcceleration
241
+ * call-seq: getAcceleration -> acceleration
242
+ *
243
+ * The rate at which the controller can change the motor's Velocity.
244
+ * The acceleration is bounded by MinAccleration and MaxAcceleration.
245
+ */
246
+ rb_define_method(ph_bldc_motor, "getAcceleration", ph_bldc_motor_get_acceleration, 0);
247
+ rb_define_alias(ph_bldc_motor, "acceleration", "getAcceleration");
248
+
249
+ /* Document-method: setAcceleration
250
+ * call-seq: setAcceleration(acceleration)
251
+ *
252
+ * The rate at which the controller can change the motor's Velocity.
253
+ * The acceleration is bounded by MinAccleration and MaxAcceleration.
254
+ */
255
+ rb_define_method(ph_bldc_motor, "setAcceleration", ph_bldc_motor_set_acceleration, 1);
256
+ rb_define_alias(ph_bldc_motor, "acceleration=", "setAcceleration");
257
+
258
+ /* Document-method: getMinAcceleration
259
+ * call-seq: getMinAcceleration -> acceleration
260
+ *
261
+ * The minimum value that Acceleration can be set to.
262
+ */
263
+ rb_define_method(ph_bldc_motor, "getMinAcceleration", ph_bldc_motor_get_min_acceleration, 0);
264
+ rb_define_alias(ph_bldc_motor, "min_acceleration", "getMinAcceleration");
265
+
266
+ /* Document-method: getMaxAcceleration
267
+ * call-seq: getMaxAcceleration -> acceleration
268
+ *
269
+ * The maximum value that Acceleration can be set to.
270
+ */
271
+ rb_define_method(ph_bldc_motor, "getMaxAcceleration", ph_bldc_motor_get_max_acceleration, 0);
272
+ rb_define_alias(ph_bldc_motor, "max_acceleration", "getMaxAcceleration");
273
+
274
+ /* Document-method: getBrakingStrength
275
+ * call-seq: getBrakingStrength -> braking_strength
276
+ *
277
+ * The most recent braking strength value that the controller has reported.
278
+ */
279
+ rb_define_method(ph_bldc_motor, "getBrakingStrength", ph_bldc_motor_get_braking_strength, 0);
280
+ rb_define_alias(ph_bldc_motor, "braking_strength", "getBrakingStrength");
281
+
282
+ /* Document-method: getMinBrakingStrength
283
+ * call-seq: getMinBrakingStrength -> braking_strength
284
+ *
285
+ * The minimum value that TargetBrakingStrength can be set to.
286
+ */
287
+ rb_define_method(ph_bldc_motor, "getMinBrakingStrength", ph_bldc_motor_get_min_braking_strength, 0);
288
+ rb_define_alias(ph_bldc_motor, "min_braking_strength", "getMinBrakingStrength");
289
+
290
+ /* Document-method: getMaxBrakingStrength
291
+ * call-seq: getMaxBrakingStrength -> braking_strength
292
+ *
293
+ * The maximum value that TargetBrakingStrength can be set to.
294
+ */
295
+ rb_define_method(ph_bldc_motor, "getMaxBrakingStrength", ph_bldc_motor_get_max_braking_strength, 0);
296
+ rb_define_alias(ph_bldc_motor, "max_braking_strength", "getMaxBrakingStrength");
297
+
298
+ /* Document-method: getDataInterval
299
+ * call-seq: getDataInterval -> interval
300
+ *
301
+ * The DataInterval is the time that must elapse before the controller will fire another update event.
302
+ * The data interval is bounded by MinDataInterval and MaxDataInterval.
303
+ */
304
+ rb_define_method(ph_bldc_motor, "getDataInterval", ph_bldc_motor_get_data_interval, 0);
305
+ rb_define_alias(ph_bldc_motor, "data_interval", "getDataInterval");
306
+
307
+ /* Document-method: setDataInterval
308
+ * call-seq: setDataInterval(interval)
309
+ *
310
+ * The DataInterval is the time that must elapse before the controller will fire another update event.
311
+ * The data interval is bounded by MinDataInterval and MaxDataInterval.
312
+ */
313
+ rb_define_method(ph_bldc_motor, "setDataInterval", ph_bldc_motor_set_data_interval, 1);
314
+ rb_define_alias(ph_bldc_motor, "data_interval=", "setDataInterval");
315
+
316
+ /* Document-method: getMinDataInterval
317
+ * call-seq: getMinDataInterval -> interval
318
+ *
319
+ * The minimum value that DataInterval can be set to.
320
+ */
321
+ rb_define_method(ph_bldc_motor, "getMinDataInterval", ph_bldc_motor_get_min_data_interval, 0);
322
+ rb_define_alias(ph_bldc_motor, "min_data_interval", "getMinDataInterval");
323
+
324
+ /* Document-method: getMaxDataInterval
325
+ * call-seq: getMaxDataInterval -> interval
326
+ *
327
+ * The maximum value that DataInterval can be set to.
328
+ */
329
+ rb_define_method(ph_bldc_motor, "getMaxDataInterval", ph_bldc_motor_get_max_data_interval, 0);
330
+ rb_define_alias(ph_bldc_motor, "max_data_interval", "getMaxDataInterval");
331
+
332
+ /* Document-method: getPosition
333
+ * call-seq: getPosition -> position
334
+ *
335
+ * The most recent position value that the controller has reported.
336
+ * Position values are calculated using Hall Effect sensors mounted on the motor, therefore, the resolution of position depends on the motor you are using.
337
+ * Units for Position can be set by the user through the RescaleFactor. The RescaleFactor allows you to use more intuitive units such as rotations, or degrees.
338
+ * For more information on how to apply the RescaleFactor to your application, see your controller's User Guide.
339
+ */
340
+ rb_define_method(ph_bldc_motor, "getPosition", ph_bldc_motor_get_position, 0);
341
+ rb_define_alias(ph_bldc_motor, "position", "getPosition");
342
+
343
+ /* Document-method: getMinPosition
344
+ * call-seq: getMinPosition -> position
345
+ *
346
+ * The lower bound of Position.
347
+ */
348
+ rb_define_method(ph_bldc_motor, "getMinPosition", ph_bldc_motor_get_min_position, 0);
349
+ rb_define_alias(ph_bldc_motor, "min_position", "getMinPosition");
350
+
351
+ /* Document-method: getMaxPosition
352
+ * call-seq: getMaxPosition -> position
353
+ *
354
+ * The upper bound of Position.
355
+ */
356
+ rb_define_method(ph_bldc_motor, "getMaxPosition", ph_bldc_motor_get_max_position, 0);
357
+ rb_define_alias(ph_bldc_motor, "max_position", "getMaxPosition");
358
+
359
+ /* Document-method: addPositionOffset
360
+ * call-seq: addPositionOffset(position_offset)
361
+ *
362
+ * Adds an offset (positive or negative) to the current position.
363
+ * This can be especially useful for zeroing position.
364
+ */
365
+ rb_define_method(ph_bldc_motor, "addPositionOffset", ph_bldc_motor_add_position_offset, 1);
366
+ rb_define_alias(ph_bldc_motor, "add_position_offset", "addPositionOffset");
367
+
368
+ /* Document-method: getRescaleFactor
369
+ * call-seq: getRescaleFactor -> rescale_factor
370
+ *
371
+ * Change the units of your parameters so that your application is more intuitive.
372
+ * Units for Position can be set by the user through the RescaleFactor. The RescaleFactor allows you to use more intuitive units such as rotations, or degrees.
373
+ * For more information on how to apply the RescaleFactor to your application, see your controller's User Guide.
374
+ */
375
+ rb_define_method(ph_bldc_motor, "getRescaleFactor", ph_bldc_motor_get_rescale_factor, 0);
376
+ rb_define_alias(ph_bldc_motor, "rescale_factor", "getRescaleFactor");
377
+
378
+ /* Document-method: setRescaleFactor
379
+ * call-seq: setRescaleFactor(rescale_factor)
380
+ *
381
+ * Change the units of your parameters so that your application is more intuitive.
382
+ * Units for Position can be set by the user through the RescaleFactor. The RescaleFactor allows you to use more intuitive units such as rotations, or degrees.
383
+ * For more information on how to apply the RescaleFactor to your application, see your controller's User Guide.
384
+ */
385
+ rb_define_method(ph_bldc_motor, "setRescaleFactor", ph_bldc_motor_set_rescale_factor, 1);
386
+ rb_define_alias(ph_bldc_motor, "rescale_factor=", "setRescaleFactor");
387
+
388
+ /* Document-method: getStallVelocity
389
+ * call-seq: getStallVelocity -> stall_velocity
390
+ *
391
+ * Before reading this description, it is important to note the difference between the units of StallVelocity and Velocity.
392
+ * Velocity is a number between -1 and 1 with units of 'duty cycle'. It simply represents the average voltage across the motor.
393
+ * StallVelocity represents a real velocity (e.g. m/s, RPM, etc.) and the units are determined by the RescaleFactor.
394
+ * With a RescaleFactor of 1, the default units would be in commutations per second.
395
+ * If the load on your motor is large, your motor may begin rotating more slowly, or even fully stall. Depending on the voltage across your motor,
396
+ * this may result in a large amount of current through both the controller and the motor. In order to prevent damage in these situations, you can use the StallVelocity property.
397
+
398
+ * The StallVelocity should be set to the lowest velocity you would expect from your motor. The controller will then monitor the motor's velocity,
399
+ * as well as the Velocity, and prevent a 'dangerous stall' from occuring. If the controller detects a dangerous stall, it will immediately reduce the
400
+ * Velocity (i.e. average voltage) to 0 and an error will be reported to your program.
401
+ * A 'dangerous stall' will occur faster when the Velocity is higher (i.e. when the average voltage across the motor is higher)
402
+ * A 'dangerous stall' will occur faster as (StallVelocity - motor velocity) becomes larger .
403
+ * Setting StallVelocity to 0 will turn off stall protection functionality.
404
+ */
405
+ rb_define_method(ph_bldc_motor, "getStallVelocity", ph_bldc_motor_get_stall_velocity, 0);
406
+ rb_define_alias(ph_bldc_motor, "stall_velocity", "getStallVelocity");
407
+
408
+ /* Document-method: setStallVelocity
409
+ * call-seq: setStallVelocity(stall_velocity)
410
+ *
411
+ * Before reading this description, it is important to note the difference between the units of StallVelocity and Velocity.
412
+ * Velocity is a number between -1 and 1 with units of 'duty cycle'. It simply represents the average voltage across the motor.
413
+ * StallVelocity represents a real velocity (e.g. m/s, RPM, etc.) and the units are determined by the RescaleFactor.
414
+ * With a RescaleFactor of 1, the default units would be in commutations per second.
415
+ * If the load on your motor is large, your motor may begin rotating more slowly, or even fully stall. Depending on the voltage across your motor,
416
+ * this may result in a large amount of current through both the controller and the motor. In order to prevent damage in these situations, you can use the StallVelocity property.
417
+
418
+ * The StallVelocity should be set to the lowest velocity you would expect from your motor. The controller will then monitor the motor's velocity,
419
+ * as well as the Velocity, and prevent a 'dangerous stall' from occuring. If the controller detects a dangerous stall, it will immediately reduce the
420
+ * Velocity (i.e. average voltage) to 0 and an error will be reported to your program.
421
+ * A 'dangerous stall' will occur faster when the Velocity is higher (i.e. when the average voltage across the motor is higher)
422
+ * A 'dangerous stall' will occur faster as (StallVelocity - motor velocity) becomes larger .
423
+ * Setting StallVelocity to 0 will turn off stall protection functionality.
424
+ */
425
+ rb_define_method(ph_bldc_motor, "setStallVelocity", ph_bldc_motor_set_stall_velocity, 1);
426
+ rb_define_alias(ph_bldc_motor, "stall_velocity=", "setStallVelocity");
427
+
428
+ /* Document-method: getMinStallVelocity
429
+ * call-seq: getMinStallVelocity -> stall_velocity
430
+ *
431
+ * The lower bound of StallVelocity.
432
+ */
433
+ rb_define_method(ph_bldc_motor, "getMinStallVelocity", ph_bldc_motor_get_min_stall_velocity, 0);
434
+ rb_define_alias(ph_bldc_motor, "min_stall_velocity", "getMinStallVelocity");
435
+
436
+ /* Document-method: getMaxStallVelocity
437
+ * call-seq: getMaxStallVelocity -> stall_velocity
438
+ *
439
+ * The upper bound of StallVelocity.
440
+ */
441
+ rb_define_method(ph_bldc_motor, "getMaxStallVelocity", ph_bldc_motor_get_max_stall_velocity, 0);
442
+ rb_define_alias(ph_bldc_motor, "max_stall_velocity", "getMaxStallVelocity");
443
+
444
+ /* Document-method: getTargetBrakingStrength
445
+ * call-seq: getTargetBrakingStrength -> braking_strength
446
+ *
447
+ * When a motor is not being actively driven forward or reverse, you can choose if the motor will be allowed to freely turn, or will resist being turned.
448
+ * A low TargetBrakingStrength value corresponds to free wheeling, this will have the following effects:
449
+ * The motor will continue to rotate after the controller is no longer driving the motor (i.e. Velocity is 0), due to inertia.
450
+ * The motor shaft will provide little resistance to being turned when it is stopped.
451
+ * A higher TargetBrakingStrength value will resist being turned, this will have the following effects:
452
+ * The motor will more stop more quickly if it is in motion and braking has been requested. It will fight against the rotation of the shaft.
453
+ * Braking mode is enabled by setting the Velocity to MinVelocity.
454
+ */
455
+ rb_define_method(ph_bldc_motor, "getTargetBrakingStrength", ph_bldc_motor_get_target_braking_strength, 0);
456
+ rb_define_alias(ph_bldc_motor, "target_braking_strength", "getTargetBrakingStrength");
457
+
458
+ /* Document-method: setTargetBrakingStrength
459
+ * call-seq: setTargetBrakingStrength(braking_strength)
460
+ *
461
+ * When a motor is not being actively driven forward or reverse, you can choose if the motor will be allowed to freely turn, or will resist being turned.
462
+ * A low TargetBrakingStrength value corresponds to free wheeling, this will have the following effects:
463
+ * The motor will continue to rotate after the controller is no longer driving the motor (i.e. Velocity is 0), due to inertia.
464
+ * The motor shaft will provide little resistance to being turned when it is stopped.
465
+ * A higher TargetBrakingStrength value will resist being turned, this will have the following effects:
466
+ * The motor will more stop more quickly if it is in motion and braking has been requested. It will fight against the rotation of the shaft.
467
+ * Braking mode is enabled by setting the Velocity to MinVelocity.
468
+ */
469
+ rb_define_method(ph_bldc_motor, "setTargetBrakingStrength", ph_bldc_motor_set_target_braking_strength, 1);
470
+ rb_define_alias(ph_bldc_motor, "target_braking_strength=", "setTargetBrakingStrength");
471
+
472
+ /* Document-method: getTargetVelocity
473
+ * call-seq: getTargetVelocity -> velocity
474
+ *
475
+ * The average voltage across the motor is based on the TargetVelocity value.
476
+ * At a constant load, increasing the target velocity will increase the speed of the motor.
477
+ * TargetVelocity is bounded by -1×MaxVelocity and MaxVelocity, where a sign change (±) is indicitave of a direction change.
478
+ * Setting TargetVelocity to MinVelocity will stop the motor. See TargetBrakingStrength for more information on stopping the motor.
479
+ * The units of TargetVelocity and Acceleration refer to 'duty cycle'. This is because the controller must rapidly switch the power
480
+ * on/off (i.e. change the duty cycle) in order to manipulate the voltage across the motor.
481
+ */
482
+ rb_define_method(ph_bldc_motor, "getTargetVelocity", ph_bldc_motor_get_target_velocity, 0);
483
+ rb_define_alias(ph_bldc_motor, "target_velocity", "getTargetVelocity");
484
+
485
+ /* Document-method: setTargetVelocity
486
+ * call-seq: setTargetVelocity(velocity)
487
+ *
488
+ * The average voltage across the motor is based on the TargetVelocity value.
489
+ * At a constant load, increasing the target velocity will increase the speed of the motor.
490
+ * TargetVelocity is bounded by -1×MaxVelocity and MaxVelocity, where a sign change (±) is indicitave of a direction change.
491
+ * Setting TargetVelocity to MinVelocity will stop the motor. See TargetBrakingStrength for more information on stopping the motor.
492
+ * The units of TargetVelocity and Acceleration refer to 'duty cycle'. This is because the controller must rapidly switch the power
493
+ * on/off (i.e. change the duty cycle) in order to manipulate the voltage across the motor.
494
+ */
495
+ rb_define_method(ph_bldc_motor, "setTargetVelocity", ph_bldc_motor_set_target_velocity, 1);
496
+ rb_define_alias(ph_bldc_motor, "target_velocity=", "setTargetVelocity");
497
+
498
+ /* Document-method: getVelocity
499
+ * call-seq: getVelocity -> velocity
500
+ *
501
+ * The most recent velocity value that the controller has reported.
502
+ */
503
+ rb_define_method(ph_bldc_motor, "getVelocity", ph_bldc_motor_get_velocity, 0);
504
+ rb_define_alias(ph_bldc_motor, "velocity", "getVelocity");
505
+
506
+ /* Document-method: getMinVelocity
507
+ * call-seq: getMinVelocity -> velocity
508
+ *
509
+ * The minimum value that TargetVelocity can be set to
510
+ * Set the TargetVelocity to MinVelocity to stop the motor. See TargetBrakingStrength for more information on stopping the motor.
511
+ * TargetVelocity is bounded by -1×MaxVelocity and MaxVelocity, where a sign change (±) is indicitave of a direction change.
512
+ */
513
+ rb_define_method(ph_bldc_motor, "getMinVelocity", ph_bldc_motor_get_min_velocity, 0);
514
+ rb_define_alias(ph_bldc_motor, "min_velocity", "getMinVelocity");
515
+
516
+ /* Document-method: getMaxVelocity
517
+ * call-seq: getMaxVelocity -> velocity
518
+ *
519
+ * The maximum value that TargetVelocity can be set to.
520
+ * TargetVelocity is bounded by -1×MaxVelocity and MaxVelocity, where a sign change (±) is indicitave of a direction change.
521
+ */
522
+ rb_define_method(ph_bldc_motor, "getMaxVelocity", ph_bldc_motor_get_max_velocity, 0);
523
+ rb_define_alias(ph_bldc_motor, "max_velocity", "getMaxVelocity");
524
+
525
+ rb_define_private_method(ph_bldc_motor, "ext_setOnBrakingStrengthChangeHandler", ph_bldc_motor_set_on_braking_strength_change_handler, 1);
526
+ rb_define_private_method(ph_bldc_motor, "ext_setOnPositionChangeHandler", ph_bldc_motor_set_on_position_change_handler, 1);
527
+ rb_define_private_method(ph_bldc_motor, "ext_setOnVelocityUpdateHandler", ph_bldc_motor_set_on_velocity_update_handler, 1);
528
+ }
529
+