phidgets 0.1.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,178 +0,0 @@
1
-
2
- #include "phidgets.h"
3
-
4
-
5
- VALUE ph_led_init(VALUE self);
6
- VALUE ph_led_get_led_count(VALUE self);
7
- VALUE ph_led_get_current_limit(VALUE self);
8
- VALUE ph_led_set_current_limit(VALUE self, VALUE limit);
9
- VALUE ph_led_get_voltage(VALUE self);
10
- VALUE ph_led_set_voltage(VALUE self, VALUE voltage);
11
- VALUE ph_led_get_brightness(VALUE self, VALUE index);
12
- VALUE ph_led_set_brightness(VALUE self, VALUE index, VALUE brightness);
13
- VALUE ph_led_get_current_limit_indexed(VALUE self, VALUE index);
14
- VALUE ph_led_set_current_limit_indexed(VALUE self, VALUE index, VALUE limit);
15
-
16
-
17
- void Init_led() {
18
- VALUE ph_module = rb_const_get(rb_cObject, rb_intern("Phidgets"));
19
- VALUE ph_common = rb_const_get(ph_module, rb_intern("Common"));
20
- VALUE ph_led = rb_define_class_under(ph_module, "LED", ph_common);
21
-
22
- rb_define_const(ph_led, "CURRENT_LIMIT_20mA", INT2FIX(PHIDGET_LED_CURRENT_LIMIT_20mA));
23
- rb_define_const(ph_led, "CURRENT_LIMIT_40mA", INT2FIX(PHIDGET_LED_CURRENT_LIMIT_40mA));
24
- rb_define_const(ph_led, "CURRENT_LIMIT_60mA", INT2FIX(PHIDGET_LED_CURRENT_LIMIT_60mA));
25
- rb_define_const(ph_led, "CURRENT_LIMIT_80mA", INT2FIX(PHIDGET_LED_CURRENT_LIMIT_80mA));
26
- rb_define_const(ph_led, "VOLTAGE_1_7V", INT2FIX(PHIDGET_LED_VOLTAGE_1_7V));
27
- rb_define_const(ph_led, "VOLTAGE_2_75V", INT2FIX(PHIDGET_LED_VOLTAGE_2_75V));
28
- rb_define_const(ph_led, "VOLTAGE_3_9V", INT2FIX(PHIDGET_LED_VOLTAGE_3_9V));
29
- rb_define_const(ph_led, "VOLTAGE_5_0V", INT2FIX(PHIDGET_LED_VOLTAGE_5_0V));
30
-
31
- /* Document-method: new
32
- * call-seq: new
33
- *
34
- * Creates a Phidget LED object.
35
- */
36
- rb_define_method(ph_led, "initialize", ph_led_init, 0);
37
-
38
- /* Document-method: getLEDCount
39
- * call-seq: getLEDCount -> count
40
- *
41
- * Gets the number of LEDs supported by this board.
42
- */
43
- rb_define_method(ph_led, "getLEDCount", ph_led_get_led_count, 0);
44
-
45
- /* Document-method: getCurrentLimit
46
- * call-seq: getCurrentLimit -> limit
47
- *
48
- * Gets the current limit. This is for all ouputs.
49
- */
50
- rb_define_method(ph_led, "getCurrentLimit", ph_led_get_current_limit, 0);
51
-
52
- /* Document-method: setCurrentLimit
53
- * call-seq: setCurrentLimit(limit)
54
- *
55
- * Sets the current limit. This is for all ouputs.
56
- */
57
- rb_define_method(ph_led, "setCurrentLimit", ph_led_set_current_limit, 1);
58
-
59
- /* Document-method: getVoltage
60
- * call-seq: getVoltage -> voltage
61
- *
62
- * Gets the output voltage. This is for all ouputs.
63
- */
64
- rb_define_method(ph_led, "getVoltage", ph_led_get_voltage, 0);
65
-
66
- /* Document-method: setVoltage
67
- * call-seq: setVoltage(voltage)
68
- *
69
- * Sets the output voltage. This is for all ouputs.
70
- */
71
- rb_define_method(ph_led, "setVoltage", ph_led_set_voltage, 1);
72
-
73
- /* Document-method: getBrightness
74
- * call-seq: getBrightness(index) -> brightness
75
- *
76
- * Gets the brightness of an LED.
77
- */
78
- rb_define_method(ph_led, "getBrightness", ph_led_get_brightness, 1);
79
-
80
- /* Document-method: setBrightness
81
- * call-seq: setBrightness(index, brightness)
82
- *
83
- * Sets the brightness of an LED.
84
- */
85
- rb_define_method(ph_led, "setBrightness", ph_led_set_brightness, 2);
86
-
87
- /* Document-method: getCurrentLimitIndexed
88
- * call-seq: getCurrentLimitIndexed(index) -> limit
89
- *
90
- * Gets the current limit of an LED.
91
- */
92
- rb_define_method(ph_led, "getCurrentLimitIndexed", ph_led_get_current_limit_indexed, 1);
93
-
94
- /* Document-method: setCurrentLimitIndexed
95
- * call-seq: setCurrentLimitIndexed(index, limit)
96
- *
97
- * Sets the current limit of an LED.
98
- */
99
- rb_define_method(ph_led, "setCurrentLimitIndexed", ph_led_set_current_limit_indexed, 2);
100
-
101
- rb_define_alias(ph_led, "led_count", "getLEDCount");
102
- rb_define_alias(ph_led, "current_limit", "getCurrentLimit");
103
- rb_define_alias(ph_led, "current_limit=", "setCurrentLimit");
104
- rb_define_alias(ph_led, "voltage", "getVoltage");
105
- rb_define_alias(ph_led, "voltage=", "setVoltage");
106
- rb_define_alias(ph_led, "brightness", "getBrightness");
107
- rb_define_alias(ph_led, "set_brightness", "setBrightness");
108
- rb_define_alias(ph_led, "current_limit_indexed", "getCurrentLimitIndexed");
109
- rb_define_alias(ph_led, "set_current_limit_indexed", "setCurrentLimitIndexed");
110
- }
111
-
112
-
113
-
114
- VALUE ph_led_init(VALUE self) {
115
- ph_data_t *ph = get_ph_data(self);
116
- ph_raise(CPhidgetLED_create((CPhidgetLEDHandle *)(&(ph->handle))));
117
- return self;
118
- }
119
-
120
- VALUE ph_led_get_led_count(VALUE self) {
121
- CPhidgetLEDHandle handle = (CPhidgetLEDHandle)get_ph_handle(self);
122
- int count;
123
- ph_raise(CPhidgetLED_getLEDCount(handle, &count));
124
- return INT2FIX(count);
125
- }
126
-
127
- VALUE ph_led_get_current_limit(VALUE self) {
128
- CPhidgetLEDHandle handle = (CPhidgetLEDHandle)get_ph_handle(self);
129
- CPhidgetLED_CurrentLimit limit;
130
- ph_raise(CPhidgetLED_getCurrentLimit(handle, &limit));
131
- return INT2FIX(limit);
132
- }
133
-
134
- VALUE ph_led_set_current_limit(VALUE self, VALUE limit) {
135
- CPhidgetLEDHandle handle = (CPhidgetLEDHandle)get_ph_handle(self);
136
- ph_raise(CPhidgetLED_setCurrentLimit(handle, FIX2INT(limit)));
137
- return Qnil;
138
- }
139
-
140
- VALUE ph_led_get_voltage(VALUE self) {
141
- CPhidgetLEDHandle handle = (CPhidgetLEDHandle)get_ph_handle(self);
142
- CPhidgetLED_Voltage voltage;
143
- ph_raise(CPhidgetLED_getVoltage(handle, &voltage));
144
- return INT2FIX(voltage);
145
- }
146
-
147
- VALUE ph_led_set_voltage(VALUE self, VALUE voltage) {
148
- CPhidgetLEDHandle handle = (CPhidgetLEDHandle)get_ph_handle(self);
149
- ph_raise(CPhidgetLED_setVoltage(handle, FIX2INT(voltage)));
150
- return Qnil;
151
- }
152
-
153
- VALUE ph_led_get_brightness(VALUE self, VALUE index) {
154
- CPhidgetLEDHandle handle = (CPhidgetLEDHandle)get_ph_handle(self);
155
- double brightness;
156
- ph_raise(CPhidgetLED_getBrightness(handle, FIX2INT(index), &brightness));
157
- return rb_float_new(brightness);
158
- }
159
-
160
- VALUE ph_led_set_brightness(VALUE self, VALUE index, VALUE brightness) {
161
- CPhidgetLEDHandle handle = (CPhidgetLEDHandle)get_ph_handle(self);
162
- ph_raise(CPhidgetLED_setBrightness(handle, FIX2INT(index), NUM2DBL(brightness)));
163
- return Qnil;
164
- }
165
-
166
- VALUE ph_led_get_current_limit_indexed(VALUE self, VALUE index) {
167
- CPhidgetLEDHandle handle = (CPhidgetLEDHandle)get_ph_handle(self);
168
- double limit;
169
- ph_raise(CPhidgetLED_getCurrentLimitIndexed(handle, FIX2INT(index), &limit));
170
- return rb_float_new(limit);
171
- }
172
-
173
- VALUE ph_led_set_current_limit_indexed(VALUE self, VALUE index, VALUE limit) {
174
- CPhidgetLEDHandle handle = (CPhidgetLEDHandle)get_ph_handle(self);
175
- ph_raise(CPhidgetLED_setCurrentLimitIndexed(handle, FIX2INT(index), NUM2DBL(limit)));
176
- return Qnil;
177
- }
178
-
@@ -1,642 +0,0 @@
1
-
2
- #include "phidgets.h"
3
-
4
-
5
- VALUE ph_motor_init(VALUE self);
6
- VALUE ph_motor_get_motor_count(VALUE self);
7
- VALUE ph_motor_get_velocity(VALUE self, VALUE index);
8
- VALUE ph_motor_set_velocity(VALUE self, VALUE index, VALUE velocity);
9
- VALUE ph_motor_get_acceleration(VALUE self, VALUE index);
10
- VALUE ph_motor_get_acceleration_min(VALUE self, VALUE index);
11
- VALUE ph_motor_get_acceleration_max(VALUE self, VALUE index);
12
- VALUE ph_motor_set_acceleration(VALUE self, VALUE index, VALUE accel);
13
- VALUE ph_motor_get_current(VALUE self, VALUE index);
14
- VALUE ph_motor_get_input_count(VALUE self);
15
- VALUE ph_motor_get_input_state(VALUE self, VALUE index);
16
- VALUE ph_motor_get_encoder_count(VALUE self);
17
- VALUE ph_motor_get_encoder_position(VALUE self, VALUE index);
18
- VALUE ph_motor_set_encoder_position(VALUE self, VALUE index, VALUE position);
19
- VALUE ph_motor_get_back_emf(VALUE self, VALUE index);
20
- VALUE ph_motor_get_back_emf_sensing_state(VALUE self, VALUE index);
21
- VALUE ph_motor_set_back_emf_sensing_state(VALUE self, VALUE index, VALUE state);
22
- VALUE ph_motor_get_supply_voltage(VALUE self);
23
- VALUE ph_motor_get_braking(VALUE self, VALUE index);
24
- VALUE ph_motor_set_braking(VALUE self, VALUE index, VALUE braking);
25
- VALUE ph_motor_get_sensor_count(VALUE self);
26
- VALUE ph_motor_get_sensor_value(VALUE self, VALUE index);
27
- VALUE ph_motor_get_sensor_raw_value(VALUE self, VALUE index);
28
- VALUE ph_motor_get_ratiometric(VALUE self);
29
- VALUE ph_motor_set_ratiometric(VALUE self, VALUE ratiometric);
30
-
31
- #ifdef PH_CALLBACK
32
- VALUE ph_motor_set_on_velocity_change_handler(VALUE self, VALUE handler);
33
- VALUE ph_motor_set_on_current_change_handler(VALUE self, VALUE handler);
34
- VALUE ph_motor_set_on_current_update_handler(VALUE self, VALUE handler);
35
- VALUE ph_motor_set_on_input_change_handler(VALUE self, VALUE handler);
36
- VALUE ph_motor_set_on_encoder_position_change_handler(VALUE self, VALUE handler);
37
- VALUE ph_motor_set_on_encoder_position_update_handler(VALUE self, VALUE handler);
38
- VALUE ph_motor_set_on_back_emf_update_handler(VALUE self, VALUE handler);
39
- VALUE ph_motor_set_on_sensor_update_handler(VALUE self, VALUE handler);
40
- int ph_motor_on_velocity_change(CPhidgetMotorControlHandle phid, void *userPtr, int index, double velocity);
41
- int ph_motor_on_current_change(CPhidgetMotorControlHandle phid, void *userPtr, int index, double current);
42
- int ph_motor_on_current_update(CPhidgetMotorControlHandle phid, void *userPtr, int index, double current);
43
- int ph_motor_on_input_change(CPhidgetMotorControlHandle phid, void *userPtr, int index, int state);
44
- int ph_motor_on_encoder_position_change(CPhidgetMotorControlHandle phid, void *userPtr, int index, int time, int change);
45
- int ph_motor_on_encoder_position_update(CPhidgetMotorControlHandle phid, void *userPtr, int index, int change);
46
- int ph_motor_on_back_emf_update(CPhidgetMotorControlHandle phid, void *userPtr, int index, double voltage);
47
- int ph_motor_on_sensor_update(CPhidgetMotorControlHandle phid, void *userPtr, int index, int value);
48
- #endif
49
-
50
-
51
- void Init_motor_control() {
52
- VALUE ph_module = rb_const_get(rb_cObject, rb_intern("Phidgets"));
53
- VALUE ph_common = rb_const_get(ph_module, rb_intern("Common"));
54
- VALUE ph_motor = rb_define_class_under(ph_module, "MotorControl", ph_common);
55
-
56
- /* Document-method: new
57
- * call-seq: new
58
- *
59
- * Creates a Phidget MotorControl object.
60
- */
61
- rb_define_method(ph_motor, "initialize", ph_motor_init, 0);
62
-
63
- /* Document-method: getMotorCount
64
- * call-seq: getMotorCount -> count
65
- *
66
- * Gets the number of motors supported by this controller.
67
- */
68
- rb_define_method(ph_motor, "getMotorCount", ph_motor_get_motor_count, 0);
69
-
70
- /* Document-method: getVelocity
71
- * call-seq: getVelocity(index) -> velocity
72
- *
73
- * Gets the current velocity of a motor.
74
- */
75
- rb_define_method(ph_motor, "getVelocity", ph_motor_get_velocity, 1);
76
-
77
- /* Document-method: setVelocity
78
- * call-seq: setVelocity(index, velocity)
79
- *
80
- * Sets the velocity of a motor.
81
- */
82
- rb_define_method(ph_motor, "setVelocity", ph_motor_set_velocity, 2);
83
-
84
- /* Document-method: getAcceleration
85
- * call-seq: getAcceleration(index) -> acceleration
86
- *
87
- * Gets the last set acceleration of a motor.
88
- */
89
- rb_define_method(ph_motor, "getAcceleration", ph_motor_get_acceleration, 1);
90
-
91
- /* Document-method: getAccelerationMin
92
- * call-seq: getAccelerationMin(index) -> acceleration
93
- *
94
- * Gets the minimum acceleration supported by a motor.
95
- */
96
- rb_define_method(ph_motor, "getAccelerationMin", ph_motor_get_acceleration_min, 1);
97
-
98
- /* Document-method: getAccelerationMax
99
- * call-seq: getAccelerationMax(index) -> acceleration
100
- *
101
- * Gets the maximum acceleration supported by a motor
102
- */
103
- rb_define_method(ph_motor, "getAccelerationMax", ph_motor_get_acceleration_max, 1);
104
-
105
- /* Document-method: setAcceleration
106
- * call-seq: setAcceleration(index, acceleration)
107
- *
108
- * Sets the acceleration of a motor.
109
- */
110
- rb_define_method(ph_motor, "setAcceleration", ph_motor_set_acceleration, 2);
111
-
112
- /* Document-method: getCurrent
113
- * call-seq: getCurrent(index) -> current
114
- *
115
- * Gets the current current draw for a motor.
116
- */
117
- rb_define_method(ph_motor, "getCurrent", ph_motor_get_current, 1);
118
-
119
- /* Document-method: getInputCount
120
- * call-seq: getInputCount -> count
121
- *
122
- * Gets the number of digital inputs supported by this board.
123
- */
124
- rb_define_method(ph_motor, "getInputCount", ph_motor_get_input_count, 0);
125
-
126
- /* Document-method: getInputState
127
- * call-seq: getInputState(index) -> true or false
128
- *
129
- * Gets the state of a digital input.
130
- */
131
- rb_define_method(ph_motor, "getInputState", ph_motor_get_input_state, 1);
132
-
133
- /* Document-method: getEncoderCount
134
- * call-seq: getEncoderCount -> count
135
- *
136
- * Gets the number of encoder inputs supported by this board.
137
- */
138
- rb_define_method(ph_motor, "getEncoderCount", ph_motor_get_encoder_count, 0);
139
-
140
- /* Document-method: getEncoderPosition
141
- * call-seq: getEncoderPosition(index) -> position
142
- *
143
- * Gets the position of an encoder. This position starts at 0 every time the phidget is opened.
144
- */
145
- rb_define_method(ph_motor, "getEncoderPosition", ph_motor_get_encoder_position, 1);
146
-
147
- /* Document-method: setEncoderPosition
148
- * call-seq: setEncoderPosition(index, position)
149
- *
150
- * Sets the encoder position. This can be used to set the position to a known value,
151
- * and should only be called when the encoder is not moving.
152
- */
153
- rb_define_method(ph_motor, "setEncoderPosition", ph_motor_set_encoder_position, 2);
154
-
155
- /* Document-method: getBackEMF
156
- * call-seq: getBackEMF(index) -> voltage
157
- *
158
- * Gets the Back EMF voltage for a motor.
159
- */
160
- rb_define_method(ph_motor, "getBackEMF", ph_motor_get_back_emf, 1);
161
-
162
- /* Document-method: getBackEMFSensingState
163
- * call-seq: getBackEMFSensingState(index) -> true or false
164
- *
165
- * Gets the Back EMF sensing state for a motor.
166
- */
167
- rb_define_method(ph_motor, "getBackEMFSensingState", ph_motor_get_back_emf_sensing_state, 1);
168
-
169
- /* Document-method: setBackEMFSensingState
170
- * call-seq: setBackEMFSensingState(index, state)
171
- *
172
- * Sets the Back EMF sensing state for a motor.
173
- */
174
- rb_define_method(ph_motor, "setBackEMFSensingState", ph_motor_set_back_emf_sensing_state, 2);
175
-
176
- /* Document-method: getSupplyVoltage
177
- * call-seq: getSupplyVoltage -> voltage
178
- *
179
- * Gets the Supply voltage for the motors. This could be higher then the actual supply voltage.
180
- */
181
- rb_define_method(ph_motor, "getSupplyVoltage", ph_motor_get_supply_voltage, 0);
182
-
183
- /* Document-method: getBraking
184
- * call-seq: getBraking(index) -> braking
185
- *
186
- * Gets the Braking value for a motor.
187
- */
188
- rb_define_method(ph_motor, "getBraking", ph_motor_get_braking, 1);
189
-
190
- /* Document-method: setBraking
191
- * call-seq: setBraking(index, braking)
192
- *
193
- * Sets the Braking value for a motor. This is applied when velocity is 0. Default is 0%.
194
- */
195
- rb_define_method(ph_motor, "setBraking", ph_motor_set_braking, 2);
196
-
197
- /* Document-method: getSensorCount
198
- * call-seq: getSensorCount -> count
199
- *
200
- * Gets the number of sensor inputs supported by this board.
201
- */
202
- rb_define_method(ph_motor, "getSensorCount", ph_motor_get_sensor_count, 0);
203
-
204
- /* Document-method: getSensorValue
205
- * call-seq: getSensorValue(index) -> value
206
- *
207
- * Gets the value of a sensor.
208
- */
209
- rb_define_method(ph_motor, "getSensorValue", ph_motor_get_sensor_value, 1);
210
-
211
- /* Document-method: getSensorRawValue
212
- * call-seq: getSensorRawValue(index) -> value
213
- *
214
- * Gets the raw value of a sensor (12-bit).
215
- */
216
- rb_define_method(ph_motor, "getSensorRawValue", ph_motor_get_sensor_raw_value, 1);
217
-
218
- /* Document-method: getRatiometric
219
- * call-seq: getRatiometric -> true or false
220
- *
221
- * Gets the ratiometric state.
222
- */
223
- rb_define_method(ph_motor, "getRatiometric", ph_motor_get_ratiometric, 0);
224
-
225
- /* Document-method: setRatiometric
226
- * call-seq: setRatiometric(state)
227
- *
228
- * Sets the ratiometric state. This controls the voltage reference used for sampling the analog sensors.
229
- */
230
- rb_define_method(ph_motor, "setRatiometric", ph_motor_set_ratiometric, 1);
231
-
232
- #ifdef PH_CALLBACK
233
- rb_define_private_method(ph_motor, "ext_setOnVelocityChangeHandler", ph_motor_set_on_velocity_change_handler, 1);
234
- rb_define_private_method(ph_motor, "ext_setOnCurrentChangeHandler", ph_motor_set_on_velocity_change_handler, 1);
235
- rb_define_private_method(ph_motor, "ext_setOnCurrentUpdateHandler", ph_motor_set_on_velocity_change_handler, 1);
236
- rb_define_private_method(ph_motor, "ext_setOnInputChangeHandler", ph_motor_set_on_velocity_change_handler, 1);
237
- rb_define_private_method(ph_motor, "ext_setOnEncoderPositionChangeHandler", ph_motor_set_on_velocity_change_handler, 1);
238
- rb_define_private_method(ph_motor, "ext_setOnEncoderPositionUpdateHandler", ph_motor_set_on_velocity_change_handler, 1);
239
- rb_define_private_method(ph_motor, "ext_setOnBackEMFUpdateHandler", ph_motor_set_on_velocity_change_handler, 1);
240
- rb_define_private_method(ph_motor, "ext_setOnSensorUpdateHandler", ph_motor_set_on_velocity_change_handler, 1);
241
- #endif
242
-
243
- rb_define_alias(ph_motor, "motor_count", "getMotorCount");
244
- rb_define_alias(ph_motor, "velocity", "getVelocity");
245
- rb_define_alias(ph_motor, "set_velocity", "setVelocity");
246
- rb_define_alias(ph_motor, "acceleration", "getAcceleration");
247
- rb_define_alias(ph_motor, "acceleration_min", "getAccelerationMin");
248
- rb_define_alias(ph_motor, "acceleration_max", "getAccelerationMax");
249
- rb_define_alias(ph_motor, "set_acceleration", "setAcceleration");
250
- rb_define_alias(ph_motor, "current", "getCurrent");
251
- rb_define_alias(ph_motor, "input_count", "getInputCount");
252
- rb_define_alias(ph_motor, "input_state", "getInputState");
253
- rb_define_alias(ph_motor, "encoder_count", "getEncoderCount");
254
- rb_define_alias(ph_motor, "encoder_position", "getEncoderPosition");
255
- rb_define_alias(ph_motor, "set_encoder_position", "setEncoderPosition");
256
- rb_define_alias(ph_motor, "back_emf", "getBackEMF");
257
- rb_define_alias(ph_motor, "back_emf_sensing_state", "getBackEMFSensingState");
258
- rb_define_alias(ph_motor, "set_back_emf_sensing_state", "setBackEMFSensingState");
259
- rb_define_alias(ph_motor, "supply_voltage", "getSupplyVoltage");
260
- rb_define_alias(ph_motor, "braking", "getBraking");
261
- rb_define_alias(ph_motor, "set_braking", "setBraking");
262
- rb_define_alias(ph_motor, "sensor_count", "getSensorCount");
263
- rb_define_alias(ph_motor, "sensor_value", "getSensorValue");
264
- rb_define_alias(ph_motor, "sensor_raw_value", "getSensorRawValue");
265
- rb_define_alias(ph_motor, "ratiometric?", "getRatiometric");
266
- rb_define_alias(ph_motor, "ratiometric=", "setRatiometric");
267
- }
268
-
269
-
270
-
271
- VALUE ph_motor_init(VALUE self) {
272
- ph_data_t *ph = get_ph_data(self);
273
- ph_raise(CPhidgetMotorControl_create((CPhidgetMotorControlHandle *)(&(ph->handle))));
274
- return self;
275
- }
276
-
277
- VALUE ph_motor_get_motor_count(VALUE self) {
278
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
279
- int count;
280
- ph_raise(CPhidgetMotorControl_getMotorCount(handle, &count));
281
- return INT2FIX(count);
282
- }
283
-
284
- VALUE ph_motor_get_velocity(VALUE self, VALUE index) {
285
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
286
- double velocity;
287
- ph_raise(CPhidgetMotorControl_getVelocity(handle, FIX2INT(index), &velocity));
288
- return rb_float_new(velocity);
289
- }
290
-
291
- VALUE ph_motor_set_velocity(VALUE self, VALUE index, VALUE velocity) {
292
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
293
- ph_raise(CPhidgetMotorControl_setVelocity(handle, FIX2INT(index), NUM2DBL(velocity)));
294
- return Qnil;
295
- }
296
-
297
- VALUE ph_motor_get_acceleration(VALUE self, VALUE index) {
298
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
299
- double accel;
300
- ph_raise(CPhidgetMotorControl_getAcceleration(handle, FIX2INT(index), &accel));
301
- return rb_float_new(accel);
302
- }
303
-
304
- VALUE ph_motor_get_acceleration_min(VALUE self, VALUE index) {
305
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
306
- double accel;
307
- ph_raise(CPhidgetMotorControl_getAccelerationMin(handle, FIX2INT(index), &accel));
308
- return rb_float_new(accel);
309
- }
310
-
311
- VALUE ph_motor_get_acceleration_max(VALUE self, VALUE index) {
312
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
313
- double accel;
314
- ph_raise(CPhidgetMotorControl_getAccelerationMax(handle, FIX2INT(index), &accel));
315
- return rb_float_new(accel);
316
- }
317
-
318
- VALUE ph_motor_set_acceleration(VALUE self, VALUE index, VALUE accel) {
319
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
320
- ph_raise(CPhidgetMotorControl_setAcceleration(handle, FIX2INT(index), NUM2DBL(accel)));
321
- return Qnil;
322
- }
323
-
324
- VALUE ph_motor_get_current(VALUE self, VALUE index) {
325
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
326
- double current;
327
- ph_raise(CPhidgetMotorControl_getCurrent(handle, FIX2INT(index), &current));
328
- return rb_float_new(current);
329
- }
330
-
331
- VALUE ph_motor_get_input_count(VALUE self) {
332
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
333
- int count;
334
- ph_raise(CPhidgetMotorControl_getInputCount(handle, &count));
335
- return INT2FIX(count);
336
- }
337
-
338
- VALUE ph_motor_get_input_state(VALUE self, VALUE index) {
339
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
340
- int state;
341
- ph_raise(CPhidgetMotorControl_getInputState(handle, FIX2INT(index), &state));
342
- return state == PTRUE ? Qtrue : Qfalse;
343
- }
344
-
345
- VALUE ph_motor_get_encoder_count(VALUE self) {
346
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
347
- int count;
348
- ph_raise(CPhidgetMotorControl_getEncoderCount(handle, &count));
349
- return INT2FIX(count);
350
- }
351
-
352
- VALUE ph_motor_get_encoder_position(VALUE self, VALUE index) {
353
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
354
- int position;
355
- ph_raise(CPhidgetMotorControl_getEncoderPosition(handle, FIX2INT(index), &position));
356
- return INT2FIX(position);
357
- }
358
-
359
- VALUE ph_motor_set_encoder_position(VALUE self, VALUE index, VALUE position) {
360
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
361
- ph_raise(CPhidgetMotorControl_setEncoderPosition(handle, FIX2INT(index), FIX2INT(position)));
362
- return Qnil;
363
- }
364
-
365
- VALUE ph_motor_get_back_emf(VALUE self, VALUE index) {
366
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
367
- double voltage;
368
- ph_raise(CPhidgetMotorControl_getBackEMF(handle, FIX2INT(index), &voltage));
369
- return rb_float_new(voltage);
370
- }
371
-
372
- VALUE ph_motor_get_back_emf_sensing_state(VALUE self, VALUE index) {
373
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
374
- int state;
375
- ph_raise(CPhidgetMotorControl_getBackEMFSensingState(handle, FIX2INT(index), &state));
376
- return state == PTRUE ? Qtrue : Qfalse;
377
- }
378
-
379
- VALUE ph_motor_set_back_emf_sensing_state(VALUE self, VALUE index, VALUE state) {
380
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
381
- ph_raise(CPhidgetMotorControl_setBackEMFSensingState(handle, FIX2INT(index), TYPE(state) == T_TRUE ? PTRUE : PFALSE));
382
- return Qnil;
383
- }
384
-
385
- VALUE ph_motor_get_supply_voltage(VALUE self) {
386
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
387
- double voltage;
388
- ph_raise(CPhidgetMotorControl_getSupplyVoltage(handle, &voltage));
389
- return rb_float_new(voltage);
390
- }
391
-
392
- VALUE ph_motor_get_braking(VALUE self, VALUE index) {
393
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
394
- double braking;
395
- ph_raise(CPhidgetMotorControl_getBraking(handle, FIX2INT(index), &braking));
396
- return rb_float_new(braking);
397
- }
398
-
399
- VALUE ph_motor_set_braking(VALUE self, VALUE index, VALUE braking) {
400
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
401
- ph_raise(CPhidgetMotorControl_setBraking(handle, FIX2INT(index), NUM2DBL(braking)));
402
- return Qnil;
403
- }
404
-
405
- VALUE ph_motor_get_sensor_count(VALUE self) {
406
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
407
- int count;
408
- ph_raise(CPhidgetMotorControl_getSensorCount(handle, &count));
409
- return INT2FIX(count);
410
- }
411
-
412
- VALUE ph_motor_get_sensor_value(VALUE self, VALUE index) {
413
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
414
- int value;
415
- ph_raise(CPhidgetMotorControl_getSensorValue(handle, FIX2INT(index), &value));
416
- return INT2FIX(value);
417
- }
418
-
419
- VALUE ph_motor_get_sensor_raw_value(VALUE self, VALUE index) {
420
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
421
- int value;
422
- ph_raise(CPhidgetMotorControl_getSensorRawValue(handle, FIX2INT(index), &value));
423
- return INT2FIX(value);
424
- }
425
-
426
- VALUE ph_motor_get_ratiometric(VALUE self) {
427
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
428
- int ratiometric;
429
- ph_raise(CPhidgetMotorControl_getRatiometric(handle, &ratiometric));
430
- return ratiometric == PTRUE ? Qtrue : Qfalse;
431
- }
432
-
433
- VALUE ph_motor_set_ratiometric(VALUE self, VALUE ratiometric) {
434
- CPhidgetMotorControlHandle handle = (CPhidgetMotorControlHandle)get_ph_handle(self);
435
- ph_raise(CPhidgetMotorControl_setRatiometric(handle, TYPE(ratiometric) == T_TRUE ? PTRUE : PFALSE));
436
- return Qnil;
437
- }
438
-
439
-
440
-
441
- #ifdef PH_CALLBACK
442
- VALUE ph_motor_set_on_velocity_change_handler(VALUE self, VALUE handler) {
443
- ph_data_t *ph = get_ph_data(self);
444
- ph_callback_data_t *callback_data = &ph->dev_callback_1;
445
- if( TYPE(handler) == T_NIL ) {
446
- callback_data->exit = true;
447
- ph_raise(CPhidgetMotorControl_set_OnVelocityChange_Handler((CPhidgetMotorControlHandle)ph->handle, NULL, (void *)NULL));
448
- } else {
449
- callback_data->called = false;
450
- callback_data->exit = false;
451
- callback_data->phidget = self;
452
- callback_data->callback = handler;
453
- ph_raise(CPhidgetMotorControl_set_OnVelocityChange_Handler((CPhidgetMotorControlHandle)ph->handle, ph_motor_on_velocity_change, (void *)callback_data));
454
- ph_callback_thread(callback_data);
455
- }
456
- return Qnil;
457
- }
458
-
459
-
460
- VALUE ph_motor_set_on_current_change_handler(VALUE self, VALUE handler) {
461
- ph_data_t *ph = get_ph_data(self);
462
- ph_callback_data_t *callback_data = &ph->dev_callback_2;
463
- if( TYPE(handler) == T_NIL ) {
464
- callback_data->exit = true;
465
- ph_raise(CPhidgetMotorControl_set_OnCurrentChange_Handler((CPhidgetMotorControlHandle)ph->handle, NULL, (void *)NULL));
466
- } else {
467
- callback_data->called = false;
468
- callback_data->exit = false;
469
- callback_data->phidget = self;
470
- callback_data->callback = handler;
471
- ph_raise(CPhidgetMotorControl_set_OnCurrentChange_Handler((CPhidgetMotorControlHandle)ph->handle, ph_motor_on_current_change, (void *)callback_data));
472
- ph_callback_thread(callback_data);
473
- }
474
- return Qnil;
475
- }
476
-
477
-
478
- VALUE ph_motor_set_on_current_update_handler(VALUE self, VALUE handler) {
479
- ph_data_t *ph = get_ph_data(self);
480
- ph_callback_data_t *callback_data = &ph->dev_callback_3;
481
- if( TYPE(handler) == T_NIL ) {
482
- callback_data->exit = true;
483
- ph_raise(CPhidgetMotorControl_set_OnCurrentUpdate_Handler((CPhidgetMotorControlHandle)ph->handle, NULL, (void *)NULL));
484
- } else {
485
- callback_data->called = false;
486
- callback_data->exit = false;
487
- callback_data->phidget = self;
488
- callback_data->callback = handler;
489
- ph_raise(CPhidgetMotorControl_set_OnCurrentUpdate_Handler((CPhidgetMotorControlHandle)ph->handle, ph_motor_on_current_update, (void *)callback_data));
490
- ph_callback_thread(callback_data);
491
- }
492
- return Qnil;
493
- }
494
-
495
-
496
- VALUE ph_motor_set_on_input_change_handler(VALUE self, VALUE handler) {
497
- ph_data_t *ph = get_ph_data(self);
498
- ph_callback_data_t *callback_data = &ph->dev_callback_4;
499
- if( TYPE(handler) == T_NIL ) {
500
- callback_data->exit = true;
501
- ph_raise(CPhidgetMotorControl_set_OnInputChange_Handler((CPhidgetMotorControlHandle)ph->handle, NULL, (void *)NULL));
502
- } else {
503
- callback_data->called = false;
504
- callback_data->exit = false;
505
- callback_data->phidget = self;
506
- callback_data->callback = handler;
507
- ph_raise(CPhidgetMotorControl_set_OnInputChange_Handler((CPhidgetMotorControlHandle)ph->handle, ph_motor_on_input_change, (void *)callback_data));
508
- ph_callback_thread(callback_data);
509
- }
510
- return Qnil;
511
- }
512
-
513
-
514
- VALUE ph_motor_set_on_encoder_position_change_handler(VALUE self, VALUE handler) {
515
- ph_data_t *ph = get_ph_data(self);
516
- ph_callback_data_t *callback_data = &ph->dev_callback_5;
517
- if( TYPE(handler) == T_NIL ) {
518
- callback_data->exit = true;
519
- ph_raise(CPhidgetMotorControl_set_OnEncoderPositionChange_Handler((CPhidgetMotorControlHandle)ph->handle, NULL, (void *)NULL));
520
- } else {
521
- callback_data->called = false;
522
- callback_data->exit = false;
523
- callback_data->phidget = self;
524
- callback_data->callback = handler;
525
- ph_raise(CPhidgetMotorControl_set_OnEncoderPositionChange_Handler((CPhidgetMotorControlHandle)ph->handle, ph_motor_on_encoder_position_change, (void *)callback_data));
526
- ph_callback_thread(callback_data);
527
- }
528
- return Qnil;
529
- }
530
-
531
-
532
- VALUE ph_motor_set_on_encoder_position_update_handler(VALUE self, VALUE handler) {
533
- ph_data_t *ph = get_ph_data(self);
534
- ph_callback_data_t *callback_data = &ph->dev_callback_6;
535
- if( TYPE(handler) == T_NIL ) {
536
- callback_data->exit = true;
537
- ph_raise(CPhidgetMotorControl_set_OnEncoderPositionUpdate_Handler((CPhidgetMotorControlHandle)ph->handle, NULL, (void *)NULL));
538
- } else {
539
- callback_data->called = false;
540
- callback_data->exit = false;
541
- callback_data->phidget = self;
542
- callback_data->callback = handler;
543
- ph_raise(CPhidgetMotorControl_set_OnEncoderPositionUpdate_Handler((CPhidgetMotorControlHandle)ph->handle, ph_motor_on_encoder_position_update, (void *)callback_data));
544
- ph_callback_thread(callback_data);
545
- }
546
- return Qnil;
547
- }
548
-
549
-
550
- VALUE ph_motor_set_on_back_emf_update_handler(VALUE self, VALUE handler) {
551
- ph_data_t *ph = get_ph_data(self);
552
- ph_callback_data_t *callback_data = &ph->dev_callback_7;
553
- if( TYPE(handler) == T_NIL ) {
554
- callback_data->exit = true;
555
- ph_raise(CPhidgetMotorControl_set_OnBackEMFUpdate_Handler((CPhidgetMotorControlHandle)ph->handle, NULL, (void *)NULL));
556
- } else {
557
- callback_data->called = false;
558
- callback_data->exit = false;
559
- callback_data->phidget = self;
560
- callback_data->callback = handler;
561
- ph_raise(CPhidgetMotorControl_set_OnBackEMFUpdate_Handler((CPhidgetMotorControlHandle)ph->handle, ph_motor_on_back_emf_update, (void *)callback_data));
562
- ph_callback_thread(callback_data);
563
- }
564
- return Qnil;
565
- }
566
-
567
-
568
- VALUE ph_motor_set_on_sensor_update_handler(VALUE self, VALUE handler) {
569
- ph_data_t *ph = get_ph_data(self);
570
- ph_callback_data_t *callback_data = &ph->dev_callback_8;
571
- if( TYPE(handler) == T_NIL ) {
572
- callback_data->exit = true;
573
- ph_raise(CPhidgetMotorControl_set_OnSensorUpdate_Handler((CPhidgetMotorControlHandle)ph->handle, NULL, (void *)NULL));
574
- } else {
575
- callback_data->called = false;
576
- callback_data->exit = false;
577
- callback_data->phidget = self;
578
- callback_data->callback = handler;
579
- ph_raise(CPhidgetMotorControl_set_OnSensorUpdate_Handler((CPhidgetMotorControlHandle)ph->handle, ph_motor_on_sensor_update, (void *)callback_data));
580
- ph_callback_thread(callback_data);
581
- }
582
- return Qnil;
583
- }
584
-
585
-
586
- int ph_motor_on_velocity_change(CPhidgetMotorControlHandle phid, void *userPtr, int index, double velocity) {
587
- ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
588
- callback_data->called = true;
589
- return EPHIDGET_OK;
590
- }
591
-
592
-
593
- int ph_motor_on_current_change(CPhidgetMotorControlHandle phid, void *userPtr, int index, double current) {
594
- ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
595
- callback_data->called = true;
596
- return EPHIDGET_OK;
597
- }
598
-
599
-
600
- int ph_motor_on_current_update(CPhidgetMotorControlHandle phid, void *userPtr, int index, double current) {
601
- ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
602
- callback_data->called = true;
603
- return EPHIDGET_OK;
604
- }
605
-
606
-
607
- int ph_motor_on_input_change(CPhidgetMotorControlHandle phid, void *userPtr, int index, int state) {
608
- ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
609
- callback_data->called = true;
610
- return EPHIDGET_OK;
611
- }
612
-
613
-
614
- int ph_motor_on_encoder_position_change(CPhidgetMotorControlHandle phid, void *userPtr, int index, int time, int change) {
615
- ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
616
- callback_data->called = true;
617
- return EPHIDGET_OK;
618
- }
619
-
620
-
621
- int ph_motor_on_encoder_position_update(CPhidgetMotorControlHandle phid, void *userPtr, int index, int change) {
622
- ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
623
- callback_data->called = true;
624
- return EPHIDGET_OK;
625
- }
626
-
627
-
628
- int ph_motor_on_back_emf_update(CPhidgetMotorControlHandle phid, void *userPtr, int index, double voltage) {
629
- ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
630
- callback_data->called = true;
631
- return EPHIDGET_OK;
632
- }
633
-
634
-
635
- int ph_motor_on_sensor_update(CPhidgetMotorControlHandle phid, void *userPtr, int index, int value) {
636
- ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
637
- callback_data->called = true;
638
- return EPHIDGET_OK;
639
- }
640
-
641
- #endif
642
-