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.
- checksums.yaml +4 -4
- data/History.txt +3 -0
- data/README.rdoc +32 -43
- data/Rakefile +4 -2
- data/bin/phidget +18 -72
- data/ext/phidgets/extconf.rb +5 -8
- data/ext/phidgets/phidgets.c +708 -173
- data/ext/phidgets/phidgets.h +54 -35
- data/ext/phidgets/phidgets_accelerometer.c +193 -109
- data/ext/phidgets/phidgets_bldc_motor.c +529 -0
- data/ext/phidgets/phidgets_capacitive_touch.c +302 -0
- data/ext/phidgets/phidgets_common.c +570 -315
- data/ext/phidgets/phidgets_current_input.c +229 -0
- data/ext/phidgets/phidgets_dc_motor.c +562 -0
- data/ext/phidgets/phidgets_dictionary.c +154 -213
- data/ext/phidgets/phidgets_digital_input.c +127 -0
- data/ext/phidgets/phidgets_digital_output.c +288 -0
- data/ext/phidgets/phidgets_distance_sensor.c +295 -0
- data/ext/phidgets/phidgets_encoder.c +211 -192
- data/ext/phidgets/phidgets_frequency_counter.c +310 -177
- data/ext/phidgets/phidgets_gps.c +226 -164
- data/ext/phidgets/phidgets_gyroscope.c +195 -0
- data/ext/phidgets/phidgets_hub.c +39 -0
- data/ext/phidgets/phidgets_humidity_sensor.c +200 -0
- data/ext/phidgets/phidgets_ir.c +211 -171
- data/ext/phidgets/phidgets_lcd.c +512 -0
- data/ext/phidgets/phidgets_light_sensor.c +200 -0
- data/ext/phidgets/phidgets_log.c +263 -0
- data/ext/phidgets/phidgets_magnetometer.c +279 -0
- data/ext/phidgets/phidgets_manager.c +86 -297
- data/ext/phidgets/phidgets_motor_position_controller.c +787 -0
- data/ext/phidgets/phidgets_phsensor.c +200 -152
- data/ext/phidgets/phidgets_power_guard.c +144 -0
- data/ext/phidgets/phidgets_pressure_sensor.c +200 -0
- data/ext/phidgets/phidgets_rc_servo.c +672 -0
- data/ext/phidgets/phidgets_resistance_input.c +227 -0
- data/ext/phidgets/phidgets_rfid.c +107 -221
- data/ext/phidgets/phidgets_sound_sensor.c +284 -0
- data/ext/phidgets/phidgets_spatial.c +124 -318
- data/ext/phidgets/phidgets_stepper.c +457 -430
- data/ext/phidgets/phidgets_temp_sensor.c +223 -228
- data/ext/phidgets/phidgets_voltage_input.c +428 -0
- data/ext/phidgets/phidgets_voltage_output.c +167 -0
- data/ext/phidgets/phidgets_voltage_ratio_input.c +435 -0
- data/lib/phidgets.rb +21 -14
- data/lib/phidgets/accelerometer.rb +11 -15
- data/lib/phidgets/bldc_motor.rb +45 -0
- data/lib/phidgets/capacitive_touch.rb +33 -0
- data/lib/phidgets/common.rb +40 -69
- data/lib/phidgets/current_input.rb +21 -0
- data/lib/phidgets/dc_motor.rb +45 -0
- data/lib/phidgets/dictionary.rb +30 -39
- data/lib/phidgets/digital_input.rb +21 -0
- data/lib/phidgets/digital_output.rb +56 -0
- data/lib/phidgets/distance_sensor.rb +33 -0
- data/lib/phidgets/encoder.rb +1 -29
- data/lib/phidgets/frequency_counter.rb +23 -14
- data/lib/phidgets/gps.rb +34 -26
- data/lib/phidgets/gyroscope.rb +21 -0
- data/lib/phidgets/humidity_sensor.rb +21 -0
- data/lib/phidgets/ir.rb +34 -39
- data/lib/phidgets/light_sensor.rb +21 -0
- data/lib/phidgets/magnetometer.rb +21 -0
- data/lib/phidgets/manager.rb +18 -66
- data/lib/phidgets/motor_position_controller.rb +45 -0
- data/lib/phidgets/ph_sensor.rb +2 -6
- data/lib/phidgets/pressure_sensor.rb +21 -0
- data/lib/phidgets/rc_servo.rb +58 -0
- data/lib/phidgets/resistance_input.rb +21 -0
- data/lib/phidgets/rfid.rb +22 -38
- data/lib/phidgets/sound_sensor.rb +21 -0
- data/lib/phidgets/spatial.rb +11 -15
- data/lib/phidgets/stepper.rb +48 -50
- data/lib/phidgets/temperature_sensor.rb +11 -15
- data/lib/phidgets/version.rb +5 -0
- data/lib/phidgets/voltage_input.rb +34 -0
- data/lib/phidgets/voltage_output.rb +23 -0
- data/lib/phidgets/voltage_ratio_input.rb +34 -0
- data/phidgets.gemspec +3 -22
- data/test/test_accelerometer.rb +42 -23
- data/test/test_bldc_motor.rb +134 -0
- data/test/test_capacitive_touch.rb +82 -0
- data/test/test_common.rb +125 -108
- data/test/test_current_input.rb +62 -0
- data/test/test_dc_motor.rb +146 -0
- data/test/test_dictionary.rb +22 -54
- data/test/test_digital_input.rb +30 -0
- data/test/test_digital_output.rb +70 -0
- data/test/test_distance_sensor.rb +76 -0
- data/test/test_encoder.rb +45 -38
- data/test/test_frequency_counter.rb +71 -36
- data/test/test_gps.rb +29 -38
- data/test/test_gyroscope.rb +54 -0
- data/test/test_helper.rb +0 -1
- data/test/test_hub.rb +14 -0
- data/test/test_humidity_sensor.rb +58 -0
- data/test/test_ir.rb +34 -34
- data/test/test_lcd.rb +146 -0
- data/test/test_light_sensor.rb +58 -0
- data/test/test_magnetometer.rb +78 -0
- data/test/test_manager.rb +10 -79
- data/test/test_motor_control.rb +146 -108
- data/test/test_phidgets.rb +2 -14
- data/test/test_phsensor.rb +46 -34
- data/test/test_power_guard.rb +42 -0
- data/test/test_pressure_sensor.rb +58 -0
- data/test/test_rc_servo.rb +174 -0
- data/test/test_resistance_input.rb +66 -0
- data/test/test_rfid.rb +15 -54
- data/test/test_sound_sensor.rb +78 -0
- data/test/test_spatial.rb +19 -85
- data/test/test_stepper.rb +89 -98
- data/test/test_temp_sensor.rb +42 -47
- data/test/test_voltage_input.rb +102 -0
- data/test/test_voltage_output.rb +46 -0
- data/test/test_voltage_ratio_input.rb +102 -0
- metadata +72 -89
- data/ext/phidgets/phidgets_advanced_servo.c +0 -567
- data/ext/phidgets/phidgets_analog.c +0 -139
- data/ext/phidgets/phidgets_bridge.c +0 -263
- data/ext/phidgets/phidgets_interface_kit.c +0 -340
- data/ext/phidgets/phidgets_led.c +0 -178
- data/ext/phidgets/phidgets_motor_control.c +0 -642
- data/ext/phidgets/phidgets_servo.c +0 -276
- data/ext/phidgets/phidgets_text_lcd.c +0 -381
- data/ext/phidgets/phidgets_text_led.c +0 -107
- data/ext/phidgets/phidgets_weight_sensor.c +0 -113
- data/lib/phidgets/advanced_servo.rb +0 -49
- data/lib/phidgets/analog.rb +0 -8
- data/lib/phidgets/bridge.rb +0 -25
- data/lib/phidgets/interfacekit.rb +0 -49
- data/lib/phidgets/led.rb +0 -8
- data/lib/phidgets/motor_control.rb +0 -110
- data/lib/phidgets/servo.rb +0 -23
- data/lib/phidgets/text_lcd.rb +0 -8
- data/lib/phidgets/text_led.rb +0 -8
- data/lib/phidgets/weight_sensor.rb +0 -25
- data/test/test_advanced_servo.rb +0 -152
- data/test/test_analog.rb +0 -45
- data/test/test_bridge.rb +0 -77
- data/test/test_interfacekit.rb +0 -97
- data/test/test_led.rb +0 -55
- data/test/test_servo.rb +0 -67
- data/test/test_text_lcd.rb +0 -115
- data/test/test_text_led.rb +0 -35
- data/test/test_weight_sensor.rb +0 -32
@@ -0,0 +1,302 @@
|
|
1
|
+
|
2
|
+
#include "phidgets.h"
|
3
|
+
|
4
|
+
#define CAP_TOUCH_TOUCH_END_CALLBACK 0
|
5
|
+
#define CAP_TOUCH_TOUCH_CALLBACK 1
|
6
|
+
|
7
|
+
|
8
|
+
VALUE ph_capacitive_touch_init(VALUE self) {
|
9
|
+
ph_data_t *ph = get_ph_data(self);
|
10
|
+
ph_raise(PhidgetCapacitiveTouch_create((PhidgetCapacitiveTouchHandle *)(&(ph->handle))));
|
11
|
+
return self;
|
12
|
+
}
|
13
|
+
|
14
|
+
VALUE ph_capacitive_touch_get_data_interval(VALUE self) {
|
15
|
+
return ph_get_uint(get_ph_handle(self), (phidget_get_uint_func)PhidgetCapacitiveTouch_getDataInterval);
|
16
|
+
}
|
17
|
+
|
18
|
+
VALUE ph_capacitive_touch_set_data_interval(VALUE self, VALUE interval) {
|
19
|
+
ph_raise(PhidgetCapacitiveTouch_setDataInterval((PhidgetCapacitiveTouchHandle)get_ph_handle(self), NUM2UINT(interval)));
|
20
|
+
return Qnil;
|
21
|
+
}
|
22
|
+
|
23
|
+
VALUE ph_capacitive_touch_get_min_data_interval(VALUE self) {
|
24
|
+
return ph_get_uint(get_ph_handle(self), (phidget_get_uint_func)PhidgetCapacitiveTouch_getMinDataInterval);
|
25
|
+
}
|
26
|
+
|
27
|
+
VALUE ph_capacitive_touch_get_max_data_interval(VALUE self) {
|
28
|
+
return ph_get_uint(get_ph_handle(self), (phidget_get_uint_func)PhidgetCapacitiveTouch_getMaxDataInterval);
|
29
|
+
}
|
30
|
+
|
31
|
+
VALUE ph_capacitive_touch_get_is_touched(VALUE self) {
|
32
|
+
return ph_get_bool(get_ph_handle(self), (phidget_get_bool_func)PhidgetCapacitiveTouch_getIsTouched);
|
33
|
+
}
|
34
|
+
|
35
|
+
VALUE ph_capacitive_touch_get_sensitivity(VALUE self) {
|
36
|
+
return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetCapacitiveTouch_getSensitivity);
|
37
|
+
}
|
38
|
+
|
39
|
+
VALUE ph_capacitive_touch_set_sensitivity(VALUE self, VALUE sensitivity) {
|
40
|
+
ph_raise(PhidgetCapacitiveTouch_setSensitivity((PhidgetCapacitiveTouchHandle)get_ph_handle(self), NUM2DBL(sensitivity)));
|
41
|
+
return Qnil;
|
42
|
+
}
|
43
|
+
|
44
|
+
VALUE ph_capacitive_touch_get_min_sensitivity(VALUE self) {
|
45
|
+
return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetCapacitiveTouch_getMinSensitivity);
|
46
|
+
}
|
47
|
+
|
48
|
+
VALUE ph_capacitive_touch_get_max_sensitivity(VALUE self) {
|
49
|
+
return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetCapacitiveTouch_getMaxSensitivity);
|
50
|
+
}
|
51
|
+
|
52
|
+
VALUE ph_capacitive_touch_get_touch_value(VALUE self) {
|
53
|
+
return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetCapacitiveTouch_getTouchValue);
|
54
|
+
}
|
55
|
+
|
56
|
+
VALUE ph_capacitive_touch_get_min_touch_value(VALUE self) {
|
57
|
+
return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetCapacitiveTouch_getMinTouchValue);
|
58
|
+
}
|
59
|
+
|
60
|
+
VALUE ph_capacitive_touch_get_max_touch_value(VALUE self) {
|
61
|
+
return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetCapacitiveTouch_getMaxTouchValue);
|
62
|
+
}
|
63
|
+
|
64
|
+
VALUE ph_capacitive_touch_get_touch_value_change_trigger(VALUE self) {
|
65
|
+
return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetCapacitiveTouch_getTouchValueChangeTrigger);
|
66
|
+
}
|
67
|
+
|
68
|
+
VALUE ph_capacitive_touch_set_touch_value_change_trigger(VALUE self, VALUE trigger) {
|
69
|
+
ph_raise(PhidgetCapacitiveTouch_setTouchValueChangeTrigger((PhidgetCapacitiveTouchHandle)get_ph_handle(self), NUM2DBL(trigger)));
|
70
|
+
return Qnil;
|
71
|
+
}
|
72
|
+
|
73
|
+
VALUE ph_capacitive_touch_get_min_touch_value_change_trigger(VALUE self) {
|
74
|
+
return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetCapacitiveTouch_getMinTouchValueChangeTrigger);
|
75
|
+
}
|
76
|
+
|
77
|
+
VALUE ph_capacitive_touch_get_max_touch_value_change_trigger(VALUE self) {
|
78
|
+
return ph_get_double(get_ph_handle(self), (phidget_get_double_func)PhidgetCapacitiveTouch_getMaxTouchValueChangeTrigger);
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
void CCONV ph_capacitive_touch_on_touch_end(PhidgetCapacitiveTouchHandle phid, void *userPtr) {
|
83
|
+
ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
|
84
|
+
while(sem_wait(&callback_data->handler_ready)!=0) {};
|
85
|
+
callback_data->arg1 = Qnil;
|
86
|
+
callback_data->arg2 = Qnil;
|
87
|
+
callback_data->arg3 = Qnil;
|
88
|
+
callback_data->arg4 = Qnil;
|
89
|
+
sem_post(&callback_data->callback_called);
|
90
|
+
}
|
91
|
+
|
92
|
+
|
93
|
+
VALUE ph_capacitive_touch_set_on_touch_end_handler(VALUE self, VALUE handler) {
|
94
|
+
ph_data_t *ph = get_ph_data(self);
|
95
|
+
ph_callback_data_t *callback_data = &ph->dev_callbacks[CAP_TOUCH_TOUCH_END_CALLBACK];
|
96
|
+
if( TYPE(handler) == T_NIL ) {
|
97
|
+
callback_data->callback = T_NIL;
|
98
|
+
callback_data->exit = true;
|
99
|
+
ph_raise(PhidgetCapacitiveTouch_setOnTouchEndHandler((PhidgetCapacitiveTouchHandle)ph->handle, NULL, (void *)NULL));
|
100
|
+
sem_post(&callback_data->callback_called);
|
101
|
+
} else {
|
102
|
+
callback_data->exit = false;
|
103
|
+
callback_data->phidget = self;
|
104
|
+
callback_data->callback = handler;
|
105
|
+
ph_raise(PhidgetCapacitiveTouch_setOnTouchEndHandler((PhidgetCapacitiveTouchHandle)ph->handle, ph_capacitive_touch_on_touch_end, (void *)callback_data));
|
106
|
+
ph_callback_thread(callback_data);
|
107
|
+
}
|
108
|
+
return Qnil;
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
void CCONV ph_capacitive_touch_on_touch(PhidgetCapacitiveTouchHandle phid, void *userPtr, double touch_value) {
|
113
|
+
ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
|
114
|
+
while(sem_wait(&callback_data->handler_ready)!=0) {};
|
115
|
+
callback_data->arg1 = DBL2NUM(touch_value);
|
116
|
+
callback_data->arg2 = Qnil;
|
117
|
+
callback_data->arg3 = Qnil;
|
118
|
+
callback_data->arg4 = Qnil;
|
119
|
+
sem_post(&callback_data->callback_called);
|
120
|
+
}
|
121
|
+
|
122
|
+
|
123
|
+
VALUE ph_capacitive_touch_set_on_touch_handler(VALUE self, VALUE handler) {
|
124
|
+
ph_data_t *ph = get_ph_data(self);
|
125
|
+
ph_callback_data_t *callback_data = &ph->dev_callbacks[CAP_TOUCH_TOUCH_CALLBACK];
|
126
|
+
if( TYPE(handler) == T_NIL ) {
|
127
|
+
callback_data->callback = T_NIL;
|
128
|
+
callback_data->exit = true;
|
129
|
+
ph_raise(PhidgetCapacitiveTouch_setOnTouchHandler((PhidgetCapacitiveTouchHandle)ph->handle, NULL, (void *)NULL));
|
130
|
+
sem_post(&callback_data->callback_called);
|
131
|
+
} else {
|
132
|
+
callback_data->exit = false;
|
133
|
+
callback_data->phidget = self;
|
134
|
+
callback_data->callback = handler;
|
135
|
+
ph_raise(PhidgetCapacitiveTouch_setOnTouchHandler((PhidgetCapacitiveTouchHandle)ph->handle, ph_capacitive_touch_on_touch, (void *)callback_data));
|
136
|
+
ph_callback_thread(callback_data);
|
137
|
+
}
|
138
|
+
return Qnil;
|
139
|
+
}
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
void Init_capacitive_touch() {
|
144
|
+
VALUE ph_module = rb_const_get(rb_cObject, rb_intern("Phidgets"));
|
145
|
+
VALUE ph_common = rb_const_get(ph_module, rb_intern("Common"));
|
146
|
+
VALUE ph_capacitive_touch = rb_define_class_under(ph_module, "CapacitiveTouch", ph_common);
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
/* Document-method: new
|
151
|
+
* call-seq: new
|
152
|
+
*
|
153
|
+
* Creates a Phidget CapacitiveTouch object.
|
154
|
+
*/
|
155
|
+
rb_define_method(ph_capacitive_touch, "initialize", ph_capacitive_touch_init, 0);
|
156
|
+
|
157
|
+
/* Document-method: getDataInterval
|
158
|
+
* call-seq: getDataInterval -> interval
|
159
|
+
*
|
160
|
+
* The DataInterval is the time that must elapse before the channel will fire another Touch event.
|
161
|
+
* The data interval is bounded by MinDataInterval and MaxDataInterval.
|
162
|
+
* The timing between Touch events can also affected by the TouchValueChangeTrigger.
|
163
|
+
*/
|
164
|
+
rb_define_method(ph_capacitive_touch, "getDataInterval", ph_capacitive_touch_get_data_interval, 0);
|
165
|
+
rb_define_alias(ph_capacitive_touch, "data_interval", "getDataInterval");
|
166
|
+
|
167
|
+
/* Document-method: setDataInterval
|
168
|
+
* call-seq: setDataInterval(interval)
|
169
|
+
*
|
170
|
+
* The DataInterval is the time that must elapse before the channel will fire another Touch event.
|
171
|
+
* The data interval is bounded by MinDataInterval and MaxDataInterval.
|
172
|
+
* The timing between Touch events can also affected by the TouchValueChangeTrigger.
|
173
|
+
*/
|
174
|
+
rb_define_method(ph_capacitive_touch, "setDataInterval", ph_capacitive_touch_set_data_interval, 1);
|
175
|
+
rb_define_alias(ph_capacitive_touch, "data_interval=", "setDataInterval");
|
176
|
+
|
177
|
+
/* Document-method: getMinDataInterval
|
178
|
+
* call-seq: getMinDataInterval -> interval
|
179
|
+
*
|
180
|
+
* The minimum value that DataInterval can be set to.
|
181
|
+
*/
|
182
|
+
rb_define_method(ph_capacitive_touch, "getMinDataInterval", ph_capacitive_touch_get_min_data_interval, 0);
|
183
|
+
rb_define_alias(ph_capacitive_touch, "min_data_interval", "getMinDataInterval");
|
184
|
+
|
185
|
+
/* Document-method: getMaxDataInterval
|
186
|
+
* call-seq: getMaxDataInterval -> interval
|
187
|
+
*
|
188
|
+
* The maximum value that DataInterval can be set to.
|
189
|
+
*/
|
190
|
+
rb_define_method(ph_capacitive_touch, "getMaxDataInterval", ph_capacitive_touch_get_max_data_interval, 0);
|
191
|
+
rb_define_alias(ph_capacitive_touch, "max_data_interval", "getMaxDataInterval");
|
192
|
+
|
193
|
+
/* Document-method: getIsTouched
|
194
|
+
* call-seq: getIsTouched -> true or false
|
195
|
+
*
|
196
|
+
* The most recent touch state that the channel has reported.
|
197
|
+
*/
|
198
|
+
rb_define_method(ph_capacitive_touch, "getIsTouched", ph_capacitive_touch_get_is_touched, 0);
|
199
|
+
rb_define_alias(ph_capacitive_touch, "is_touched?", "getIsTouched");
|
200
|
+
|
201
|
+
/* Document-method: getSensitivity
|
202
|
+
* call-seq: getSensitivity -> sensitivity
|
203
|
+
*
|
204
|
+
* Determines the sensitivity of all capacitive regions on the device.
|
205
|
+
* Higher values result in greater touch sensitivity.
|
206
|
+
* The sensitivity value is bounded by MinSensitivity and MaxSensitivity.
|
207
|
+
*/
|
208
|
+
rb_define_method(ph_capacitive_touch, "getSensitivity", ph_capacitive_touch_get_sensitivity, 0);
|
209
|
+
rb_define_alias(ph_capacitive_touch, "sensitivity", "getSensitivity");
|
210
|
+
|
211
|
+
/* Document-method: setSensitivity
|
212
|
+
* call-seq: setSensitivity(sensitivity)
|
213
|
+
*
|
214
|
+
* Determines the sensitivity of all capacitive regions on the device.
|
215
|
+
* Higher values result in greater touch sensitivity.
|
216
|
+
* The sensitivity value is bounded by MinSensitivity and MaxSensitivity.
|
217
|
+
*/
|
218
|
+
rb_define_method(ph_capacitive_touch, "setSensitivity", ph_capacitive_touch_set_sensitivity, 1);
|
219
|
+
rb_define_alias(ph_capacitive_touch, "sensitivity=", "setSensitivity");
|
220
|
+
|
221
|
+
/* Document-method: getMinSensitivity
|
222
|
+
* call-seq: getMinSensitivity -> sensitivity
|
223
|
+
*
|
224
|
+
* The minimum value that Sensitivity can be set to.
|
225
|
+
*/
|
226
|
+
rb_define_method(ph_capacitive_touch, "getMinSensitivity", ph_capacitive_touch_get_min_sensitivity, 0);
|
227
|
+
rb_define_alias(ph_capacitive_touch, "min_sensitivity", "getMinSensitivity");
|
228
|
+
|
229
|
+
/* Document-method: getMaxSensitivity
|
230
|
+
* call-seq: getMaxSensitivity -> sensitivity
|
231
|
+
*
|
232
|
+
* The maximum value that Sensitivity can be set to.
|
233
|
+
*/
|
234
|
+
rb_define_method(ph_capacitive_touch, "getMaxSensitivity", ph_capacitive_touch_get_max_sensitivity, 0);
|
235
|
+
rb_define_alias(ph_capacitive_touch, "max_sensitivity", "getMaxSensitivity");
|
236
|
+
|
237
|
+
/* Document-method: getTouchValue
|
238
|
+
* call-seq: getTouchValue -> touch_value
|
239
|
+
*
|
240
|
+
* The most recent touch value that the channel has reported.
|
241
|
+
* This will be 0 or 1 for button-type inputs, or a ratio between 0-1 for axis-type inputs.
|
242
|
+
* This value is bounded by MinTouchValue and MaxTouchValue
|
243
|
+
* The value is not reset when the touch ends.
|
244
|
+
*/
|
245
|
+
rb_define_method(ph_capacitive_touch, "getTouchValue", ph_capacitive_touch_get_touch_value, 0);
|
246
|
+
rb_define_alias(ph_capacitive_touch, "touch_value", "getTouchValue");
|
247
|
+
|
248
|
+
/* Document-method: getMinTouchValue
|
249
|
+
* call-seq: getMinTouchValue -> touch_value
|
250
|
+
*
|
251
|
+
* The minimum value the Touch event will report.
|
252
|
+
*/
|
253
|
+
rb_define_method(ph_capacitive_touch, "getMinTouchValue", ph_capacitive_touch_get_min_touch_value, 0);
|
254
|
+
rb_define_alias(ph_capacitive_touch, "min_touch_value", "getMinTouchValue");
|
255
|
+
|
256
|
+
/* Document-method: getMaxTouchValue
|
257
|
+
* call-seq: getMaxTouchValue -> touch_value
|
258
|
+
*
|
259
|
+
* The maximum value the Touch event will report.
|
260
|
+
*/
|
261
|
+
rb_define_method(ph_capacitive_touch, "getMaxTouchValue", ph_capacitive_touch_get_max_touch_value, 0);
|
262
|
+
rb_define_alias(ph_capacitive_touch, "max_touch_value", "getMaxTouchValue");
|
263
|
+
|
264
|
+
/* Document-method: getTouchValueChangeTrigger
|
265
|
+
* call-seq: getTouchValueChangeTrigger -> trigger
|
266
|
+
*
|
267
|
+
* The channel will not issue a Touch event until the touch value has changed by the amount specified by the TouchValueChangeTrigger.
|
268
|
+
* Setting the TouchValueChangeTrigger to 0 will result in the channel firing events every DataInterval. This is useful for applications that implement their own data filtering.
|
269
|
+
*/
|
270
|
+
rb_define_method(ph_capacitive_touch, "getTouchValueChangeTrigger", ph_capacitive_touch_get_touch_value_change_trigger, 0);
|
271
|
+
rb_define_alias(ph_capacitive_touch, "touch_value_change_trigger", "getTouchValueChangeTrigger");
|
272
|
+
|
273
|
+
/* Document-method: setTouchValueChangeTrigger
|
274
|
+
* call-seq: setTouchValueChangeTrigger(trigger)
|
275
|
+
*
|
276
|
+
* The channel will not issue a Touch event until the touch value has changed by the amount specified by the TouchValueChangeTrigger.
|
277
|
+
* Setting the TouchValueChangeTrigger to 0 will result in the channel firing events every DataInterval. This is useful for applications that implement their own data filtering.
|
278
|
+
*/
|
279
|
+
rb_define_method(ph_capacitive_touch, "setTouchValueChangeTrigger", ph_capacitive_touch_set_touch_value_change_trigger, 1);
|
280
|
+
rb_define_alias(ph_capacitive_touch, "touch_value_change_trigger=", "setTouchValueChangeTrigger");
|
281
|
+
|
282
|
+
/* Document-method: getMinTouchValueChangeTrigger
|
283
|
+
* call-seq: getMinTouchValueChangeTrigger -> trigger
|
284
|
+
*
|
285
|
+
* The minimum value that TouchValueChangeTrigger can be set to.
|
286
|
+
*/
|
287
|
+
rb_define_method(ph_capacitive_touch, "getMinTouchValueChangeTrigger", ph_capacitive_touch_get_min_touch_value_change_trigger, 0);
|
288
|
+
rb_define_alias(ph_capacitive_touch, "min_touch_value_change_trigger", "getMinTouchValueChangeTrigger");
|
289
|
+
|
290
|
+
/* Document-method: getMaxTouchValueChangeTrigger
|
291
|
+
* call-seq: getMaxTouchValueChangeTrigger -> trigger
|
292
|
+
*
|
293
|
+
* The maximum value that TouchValueChangeTrigger can be set to.
|
294
|
+
*/
|
295
|
+
rb_define_method(ph_capacitive_touch, "getMaxTouchValueChangeTrigger", ph_capacitive_touch_get_max_touch_value_change_trigger, 0);
|
296
|
+
rb_define_alias(ph_capacitive_touch, "max_touch_value_change_trigger", "getMaxTouchValueChangeTrigger");
|
297
|
+
|
298
|
+
|
299
|
+
rb_define_private_method(ph_capacitive_touch, "ext_setOnTouchEndHandler", ph_capacitive_touch_set_on_touch_end_handler, 1);
|
300
|
+
rb_define_private_method(ph_capacitive_touch, "ext_setOnTouchHandler", ph_capacitive_touch_set_on_touch_handler, 1);
|
301
|
+
}
|
302
|
+
|
@@ -2,370 +2,287 @@
|
|
2
2
|
#include "phidgets.h"
|
3
3
|
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
VALUE ph_common_set_on_server_connect_handler(VALUE self, VALUE handler);
|
32
|
-
VALUE ph_common_set_on_server_disconnect_handler(VALUE self, VALUE handler);
|
33
|
-
int ph_common_on_attach(CPhidgetHandle phid, void *userPtr);
|
34
|
-
int ph_common_on_detach(CPhidgetHandle phid, void *userPtr);
|
35
|
-
int ph_common_on_server_connect(CPhidgetHandle phid, void *userPtr);
|
36
|
-
int ph_common_on_server_disconnect(CPhidgetHandle phid, void *userPtr);
|
37
|
-
#endif
|
5
|
+
void ph_common_free(ph_data_t *ph) {
|
6
|
+
if (ph && ph->handle) {
|
7
|
+
Phidget_close(ph->handle);
|
8
|
+
Phidget_delete(&ph->handle);
|
9
|
+
ph->handle = NULL;
|
10
|
+
}
|
11
|
+
if(ph) {
|
12
|
+
sem_destroy(&ph->attach_callback.handler_ready);
|
13
|
+
sem_destroy(&ph->attach_callback.callback_called);
|
14
|
+
sem_destroy(&ph->detach_callback.handler_ready);
|
15
|
+
sem_destroy(&ph->detach_callback.callback_called);
|
16
|
+
sem_destroy(&ph->error_callback.handler_ready);
|
17
|
+
sem_destroy(&ph->error_callback.callback_called);
|
18
|
+
sem_destroy(&ph->property_change_callback.handler_ready);
|
19
|
+
sem_destroy(&ph->property_change_callback.callback_called);
|
20
|
+
sem_destroy(&ph->dev_callbacks[0].handler_ready);
|
21
|
+
sem_destroy(&ph->dev_callbacks[0].callback_called);
|
22
|
+
sem_destroy(&ph->dev_callbacks[1].handler_ready);
|
23
|
+
sem_destroy(&ph->dev_callbacks[1].callback_called);
|
24
|
+
sem_destroy(&ph->dev_callbacks[2].handler_ready);
|
25
|
+
sem_destroy(&ph->dev_callbacks[2].callback_called);
|
26
|
+
sem_destroy(&ph->dev_callbacks[3].handler_ready);
|
27
|
+
sem_destroy(&ph->dev_callbacks[3].callback_called);
|
28
|
+
xfree(ph);
|
29
|
+
}
|
30
|
+
}
|
38
31
|
|
39
32
|
|
40
|
-
|
41
|
-
|
42
|
-
VALUE
|
43
|
-
|
44
|
-
|
33
|
+
VALUE ph_common_allocate(VALUE klass) {
|
34
|
+
ph_data_t *ph;
|
35
|
+
VALUE self = Data_Make_Struct(klass, ph_data_t, 0, ph_common_free, ph);
|
36
|
+
memset(ph, 0, sizeof(ph_data_t));
|
37
|
+
sem_init(&ph->attach_callback.handler_ready, 0, 0);
|
38
|
+
sem_init(&ph->attach_callback.callback_called, 0, 0);
|
39
|
+
sem_init(&ph->detach_callback.handler_ready, 0, 0);
|
40
|
+
sem_init(&ph->detach_callback.callback_called, 0, 0);
|
41
|
+
sem_init(&ph->error_callback.handler_ready, 0, 0);
|
42
|
+
sem_init(&ph->error_callback.callback_called, 0, 0);
|
43
|
+
sem_init(&ph->property_change_callback.handler_ready, 0, 0);
|
44
|
+
sem_init(&ph->property_change_callback.callback_called, 0, 0);
|
45
|
+
sem_init(&ph->dev_callbacks[0].handler_ready, 0, 0);
|
46
|
+
sem_init(&ph->dev_callbacks[0].callback_called, 0, 0);
|
47
|
+
sem_init(&ph->dev_callbacks[1].handler_ready, 0, 0);
|
48
|
+
sem_init(&ph->dev_callbacks[1].callback_called, 0, 0);
|
49
|
+
sem_init(&ph->dev_callbacks[2].handler_ready, 0, 0);
|
50
|
+
sem_init(&ph->dev_callbacks[2].callback_called, 0, 0);
|
51
|
+
sem_init(&ph->dev_callbacks[3].handler_ready, 0, 0);
|
52
|
+
sem_init(&ph->dev_callbacks[3].callback_called, 0, 0);
|
53
|
+
return self;
|
54
|
+
}
|
45
55
|
|
46
|
-
/* Document-method: openLabel
|
47
|
-
* call-seq: openLabel(label)
|
48
|
-
*
|
49
|
-
* Opens a Phidget by label.
|
50
|
-
*/
|
51
|
-
rb_define_method(ph_common, "openLabel", ph_common_open_label, 1);
|
52
56
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
*/
|
58
|
-
rb_define_method(ph_common, "openRemote", ph_common_open_remote, 3);
|
57
|
+
VALUE ph_common_open(VALUE self) {
|
58
|
+
ph_raise(Phidget_open(get_ph_handle(self)));
|
59
|
+
return Qnil;
|
60
|
+
}
|
59
61
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
*/
|
65
|
-
rb_define_method(ph_common, "openLabelRemote", ph_common_open_label_remote, 3);
|
62
|
+
VALUE ph_common_open_wait_for_attachment(VALUE self, VALUE milliseconds) {
|
63
|
+
ph_raise(Phidget_openWaitForAttachment(get_ph_handle(self), NUM2UINT(milliseconds)));
|
64
|
+
return Qnil;
|
65
|
+
}
|
66
66
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
* Opens a Phidget remotely by address and port, with optional serial number.
|
71
|
-
*/
|
72
|
-
rb_define_method(ph_common, "openRemoteIP", ph_common_open_remote_ip, 4);
|
67
|
+
VALUE ph_common_get_attached(VALUE self) {
|
68
|
+
return ph_get_bool(get_ph_handle(self), (phidget_get_bool_func)Phidget_getAttached);
|
69
|
+
}
|
73
70
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
*/
|
79
|
-
rb_define_method(ph_common, "openLabelRemoteIP", ph_common_open_label_remote_ip, 4);
|
71
|
+
VALUE ph_common_close(VALUE self) {
|
72
|
+
ph_raise(Phidget_close(get_ph_handle(self)));
|
73
|
+
return Qnil;
|
74
|
+
}
|
80
75
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
rb_define_method(ph_common, "waitForAttachment", ph_common_wait_for_attachment, 1);
|
76
|
+
VALUE ph_common_get_device_channel_count(VALUE self, VALUE channel_class) {
|
77
|
+
uint32_t count;
|
78
|
+
ph_raise(Phidget_getDeviceChannelCount(get_ph_handle(self), NUM2INT(channel_class), &count));
|
79
|
+
return UINT2NUM(count);
|
80
|
+
}
|
87
81
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
* Closes a Phidget.
|
92
|
-
*/
|
93
|
-
rb_define_method(ph_common, "close", ph_common_close, 0);
|
82
|
+
VALUE ph_common_get_device_class(VALUE self) {
|
83
|
+
return ph_get_int(get_ph_handle(self), (phidget_get_int_func)Phidget_getDeviceClass);
|
84
|
+
}
|
94
85
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
* Gets the class of a Phidget.
|
99
|
-
*/
|
100
|
-
rb_define_method(ph_common, "getDeviceClass", ph_common_get_device_class, 0);
|
86
|
+
VALUE ph_common_get_device_class_name(VALUE self) {
|
87
|
+
return ph_get_string(get_ph_handle(self), (phidget_get_string_func)Phidget_getDeviceClassName);
|
88
|
+
}
|
101
89
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
* Gets the device ID of a Phidget.
|
106
|
-
*/
|
107
|
-
rb_define_method(ph_common, "getDeviceID", ph_common_get_device_id, 0);
|
90
|
+
VALUE ph_common_get_device_id(VALUE self) {
|
91
|
+
return ph_get_int(get_ph_handle(self), (phidget_get_int_func)Phidget_getDeviceID);
|
92
|
+
}
|
108
93
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
* Gets the type (class) of a Phidget.
|
113
|
-
*/
|
114
|
-
rb_define_method(ph_common, "getDeviceType", ph_common_get_device_type, 0);
|
94
|
+
VALUE ph_common_get_device_name(VALUE self) {
|
95
|
+
return ph_get_string(get_ph_handle(self), Phidget_getDeviceName);
|
96
|
+
}
|
115
97
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
* Gets the specific name of a Phidget.
|
120
|
-
*/
|
121
|
-
rb_define_method(ph_common, "getDeviceName", ph_common_get_device_name, 0);
|
98
|
+
VALUE ph_common_get_device_serial_number(VALUE self) {
|
99
|
+
return ph_get_int(get_ph_handle(self), Phidget_getDeviceSerialNumber);
|
100
|
+
}
|
122
101
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
*/
|
128
|
-
rb_define_method(ph_common, "getSerialNumber", ph_common_get_serial_number, 0);
|
102
|
+
VALUE ph_common_set_device_serial_number(VALUE self, VALUE serial_number) {
|
103
|
+
ph_raise(Phidget_setDeviceSerialNumber(get_ph_handle(self), NUM2INT(serial_number)));
|
104
|
+
return Qnil;
|
105
|
+
}
|
129
106
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
* Gets the firmware version of a Phidget.
|
134
|
-
*/
|
135
|
-
rb_define_method(ph_common, "getDeviceVersion", ph_common_get_device_version, 0);
|
107
|
+
VALUE ph_common_get_device_sku(VALUE self) {
|
108
|
+
return ph_get_string(get_ph_handle(self), Phidget_getDeviceSKU);
|
109
|
+
}
|
136
110
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
* Gets the attached status of a Phidget.
|
141
|
-
*/
|
142
|
-
rb_define_method(ph_common, "getDeviceStatus", ph_common_get_device_status, 0);
|
111
|
+
VALUE ph_common_get_device_version(VALUE self) {
|
112
|
+
return ph_get_int(get_ph_handle(self), Phidget_getDeviceVersion);
|
113
|
+
}
|
143
114
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
* Gets the label of a Phidget.
|
148
|
-
*/
|
149
|
-
rb_define_method(ph_common, "getDeviceLabel", ph_common_get_device_label, 0);
|
115
|
+
VALUE ph_common_get_device_label(VALUE self) {
|
116
|
+
return ph_get_string(get_ph_handle(self), Phidget_getDeviceLabel);
|
117
|
+
}
|
150
118
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
*/
|
156
|
-
rb_define_method(ph_common, "setDeviceLabel", ph_common_set_device_label, 1);
|
119
|
+
VALUE ph_common_set_device_label(VALUE self, VALUE label) {
|
120
|
+
ph_raise(Phidget_setDeviceLabel(get_ph_handle(self), StringValueCStr(label)));
|
121
|
+
return Qnil;
|
122
|
+
}
|
157
123
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
*/
|
163
|
-
rb_define_method(ph_common, "getServerID", ph_common_get_server_id, 0);
|
124
|
+
VALUE ph_common_write_device_label(VALUE self, VALUE label) {
|
125
|
+
ph_raise(Phidget_writeDeviceLabel(get_ph_handle(self), StringValueCStr(label)));
|
126
|
+
return Qnil;
|
127
|
+
}
|
164
128
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
* Gets the address and port of a remotely opened Phidget. This will fail if the Phidget was opened locally.
|
169
|
-
*/
|
170
|
-
rb_define_method(ph_common, "getServerAddress", ph_common_get_server_address, 0);
|
129
|
+
VALUE ph_common_get_channel(VALUE self) {
|
130
|
+
return ph_get_int(get_ph_handle(self), Phidget_getChannel);
|
131
|
+
}
|
171
132
|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
*/
|
177
|
-
rb_define_method(ph_common, "getServerStatus", ph_common_get_server_status, 0);
|
133
|
+
VALUE ph_common_set_channel(VALUE self, VALUE channel) {
|
134
|
+
ph_raise(Phidget_setChannel(get_ph_handle(self), NUM2INT(channel)));
|
135
|
+
return Qnil;
|
136
|
+
}
|
178
137
|
|
179
|
-
|
180
|
-
|
181
|
-
rb_define_private_method(ph_common, "ext_setOnDetachHandler", ph_common_set_on_detach_handler, 1);
|
182
|
-
rb_define_private_method(ph_common, "ext_setOnServerConnectHandler", ph_common_set_on_server_connect_handler, 1);
|
183
|
-
rb_define_private_method(ph_common, "ext_setOnServerDisconnectHandler", ph_common_set_on_server_disconnect_handler, 1);
|
184
|
-
#endif
|
185
|
-
|
186
|
-
rb_define_alias(ph_common, "open_label", "openLabel");
|
187
|
-
rb_define_alias(ph_common, "open_remote", "openRemote");
|
188
|
-
rb_define_alias(ph_common, "open_label_remote", "openLabelRemote");
|
189
|
-
rb_define_alias(ph_common, "open_remote_ip", "openRemoteIP");
|
190
|
-
rb_define_alias(ph_common, "open_label_remote_ip", "openLabelRemoteIP");
|
191
|
-
rb_define_alias(ph_common, "wait_for_attachment", "waitForAttachment");
|
192
|
-
rb_define_alias(ph_common, "device_class", "getDeviceClass");
|
193
|
-
rb_define_alias(ph_common, "device_id", "getDeviceID");
|
194
|
-
rb_define_alias(ph_common, "device_type", "getDeviceType");
|
195
|
-
rb_define_alias(ph_common, "device_name", "getDeviceName");
|
196
|
-
rb_define_alias(ph_common, "serial_number", "getSerialNumber");
|
197
|
-
rb_define_alias(ph_common, "device_version", "getDeviceVersion");
|
198
|
-
rb_define_alias(ph_common, "device_status", "getDeviceStatus");
|
199
|
-
rb_define_alias(ph_common, "device_label", "getDeviceLabel");
|
200
|
-
rb_define_alias(ph_common, "device_label=", "setDeviceLabel");
|
201
|
-
rb_define_alias(ph_common, "server_id", "getServerID");
|
202
|
-
rb_define_alias(ph_common, "server_address", "getServerAddress");
|
203
|
-
rb_define_alias(ph_common, "server_status", "getServerStatus");
|
138
|
+
VALUE ph_common_get_channel_name(VALUE self) {
|
139
|
+
return ph_get_string(get_ph_handle(self), Phidget_getChannelName);
|
204
140
|
}
|
205
141
|
|
142
|
+
VALUE ph_common_get_channel_class(VALUE self) {
|
143
|
+
return ph_get_int(get_ph_handle(self), (phidget_get_int_func)Phidget_getChannelClass);
|
144
|
+
}
|
206
145
|
|
146
|
+
VALUE ph_common_get_channel_class_name(VALUE self) {
|
147
|
+
return ph_get_string(get_ph_handle(self), Phidget_getChannelClassName);
|
148
|
+
}
|
207
149
|
|
208
|
-
VALUE
|
209
|
-
|
210
|
-
VALUE self = Data_Make_Struct(klass, ph_data_t, 0, ph_common_free, ph);
|
211
|
-
memset(ph, 0, sizeof(ph_data_t));
|
212
|
-
return self;
|
150
|
+
VALUE ph_common_get_channel_subclass(VALUE self) {
|
151
|
+
return ph_get_int(get_ph_handle(self), (phidget_get_int_func)Phidget_getChannelSubclass);
|
213
152
|
}
|
214
153
|
|
215
|
-
|
216
|
-
|
217
|
-
CPhidget_close(ph->handle);
|
218
|
-
CPhidget_delete(ph->handle);
|
219
|
-
ph->handle = NULL;
|
220
|
-
}
|
221
|
-
if(ph) xfree(ph);
|
154
|
+
VALUE ph_common_get_data_interval(VALUE self) {
|
155
|
+
return ph_get_uint(get_ph_handle(self), Phidget_getDataInterval);
|
222
156
|
}
|
223
157
|
|
224
|
-
VALUE
|
225
|
-
|
226
|
-
ph_raise(CPhidget_open(handle, FIX2INT(serial_number)));
|
158
|
+
VALUE ph_common_set_data_interval(VALUE self, VALUE interval) {
|
159
|
+
ph_raise(Phidget_setDataInterval(get_ph_handle(self), NUM2UINT(interval)));
|
227
160
|
return Qnil;
|
228
161
|
}
|
229
162
|
|
230
|
-
VALUE
|
231
|
-
|
232
|
-
ph_raise(CPhidget_openLabel(handle, StringValueCStr(label)));
|
233
|
-
return Qnil;
|
163
|
+
VALUE ph_common_get_hub_port(VALUE self) {
|
164
|
+
return ph_get_int(get_ph_handle(self), Phidget_getHubPort);
|
234
165
|
}
|
235
166
|
|
236
|
-
VALUE
|
237
|
-
|
238
|
-
ph_raise(CPhidget_openRemote(handle, FIX2INT(serial_number), StringValueCStr(server_id), StringValueCStr(password)));
|
167
|
+
VALUE ph_common_set_hub_port(VALUE self, VALUE hub_port) {
|
168
|
+
ph_raise(Phidget_setHubPort(get_ph_handle(self), NUM2INT(hub_port)));
|
239
169
|
return Qnil;
|
240
170
|
}
|
241
171
|
|
242
|
-
VALUE
|
243
|
-
|
244
|
-
ph_raise(CPhidget_openLabelRemote(handle, StringValueCStr(label), StringValueCStr(server_id), StringValueCStr(password)));
|
245
|
-
return Qnil;
|
172
|
+
VALUE ph_common_get_hub_port_count(VALUE self) {
|
173
|
+
return ph_get_int(get_ph_handle(self), Phidget_getHubPortCount);
|
246
174
|
}
|
247
175
|
|
248
|
-
VALUE
|
249
|
-
|
250
|
-
ph_raise(CPhidget_openRemoteIP(handle, FIX2INT(serial_number), StringValueCStr(address), FIX2INT(port), StringValueCStr(password)));
|
251
|
-
return Qnil;
|
176
|
+
VALUE ph_common_get_is_channel(VALUE self) {
|
177
|
+
return ph_get_bool(get_ph_handle(self), Phidget_getIsChannel);
|
252
178
|
}
|
253
179
|
|
254
|
-
VALUE
|
255
|
-
|
256
|
-
ph_raise(CPhidget_openLabelRemoteIP(handle, StringValueCStr(label), StringValueCStr(address), FIX2INT(port), StringValueCStr(password)));
|
257
|
-
return Qnil;
|
180
|
+
VALUE ph_common_get_is_hub_port_device(VALUE self) {
|
181
|
+
return ph_get_bool(get_ph_handle(self), Phidget_getIsHubPortDevice);
|
258
182
|
}
|
259
183
|
|
260
|
-
VALUE
|
261
|
-
|
262
|
-
ph_raise(CPhidget_waitForAttachment(handle, FIX2INT(milliseconds)));
|
184
|
+
VALUE ph_common_set_is_hub_port_device(VALUE self, VALUE is_hub_port_device) {
|
185
|
+
ph_raise(Phidget_setIsHubPortDevice(get_ph_handle(self), TYPE(is_hub_port_device) == T_TRUE ? PTRUE : PFALSE));
|
263
186
|
return Qnil;
|
264
187
|
}
|
265
188
|
|
266
|
-
VALUE
|
267
|
-
|
268
|
-
ph_raise(CPhidget_close(handle));
|
269
|
-
return Qnil;
|
189
|
+
VALUE ph_common_get_is_local(VALUE self) {
|
190
|
+
return ph_get_bool(get_ph_handle(self), Phidget_getIsLocal);
|
270
191
|
}
|
271
192
|
|
272
|
-
VALUE
|
273
|
-
|
274
|
-
|
275
|
-
ph_raise(CPhidget_getDeviceClass(handle, &device_class));
|
276
|
-
return INT2FIX(device_class);
|
193
|
+
VALUE ph_common_set_is_local(VALUE self, VALUE is_local) {
|
194
|
+
ph_raise(Phidget_setIsLocal(get_ph_handle(self), TYPE(is_local) == T_TRUE ? PTRUE : PFALSE));
|
195
|
+
return Qnil;
|
277
196
|
}
|
278
197
|
|
279
|
-
VALUE
|
280
|
-
|
281
|
-
CPhidget_DeviceID device_id;
|
282
|
-
ph_raise(CPhidget_getDeviceID(handle, &device_id));
|
283
|
-
return INT2FIX(device_id);
|
198
|
+
VALUE ph_common_get_is_remote(VALUE self) {
|
199
|
+
return ph_get_bool(get_ph_handle(self), Phidget_getIsRemote);
|
284
200
|
}
|
285
201
|
|
286
|
-
VALUE
|
287
|
-
|
288
|
-
|
289
|
-
ph_raise(CPhidget_getDeviceType(handle, &device_type));
|
290
|
-
return rb_str_new2(device_type);
|
202
|
+
VALUE ph_common_set_is_remote(VALUE self, VALUE is_remote) {
|
203
|
+
ph_raise(Phidget_setIsRemote(get_ph_handle(self), TYPE(is_remote) == T_TRUE ? PTRUE : PFALSE));
|
204
|
+
return Qnil;
|
291
205
|
}
|
292
206
|
|
293
|
-
VALUE
|
294
|
-
|
295
|
-
const char *device_name;
|
296
|
-
ph_raise(CPhidget_getDeviceName(handle, &device_name));
|
297
|
-
return rb_str_new2(device_name);
|
207
|
+
VALUE ph_common_get_server_hostname(VALUE self) {
|
208
|
+
return ph_get_string(get_ph_handle(self), Phidget_getServerHostname);
|
298
209
|
}
|
299
210
|
|
300
|
-
VALUE
|
301
|
-
|
302
|
-
int serial;
|
303
|
-
ph_raise(CPhidget_getSerialNumber(handle, &serial));
|
304
|
-
return INT2FIX(serial);
|
211
|
+
VALUE ph_common_get_server_name(VALUE self) {
|
212
|
+
return ph_get_string(get_ph_handle(self), Phidget_getServerName);
|
305
213
|
}
|
306
214
|
|
307
|
-
VALUE
|
308
|
-
|
309
|
-
|
310
|
-
ph_raise(CPhidget_getDeviceVersion(handle, &device_version));
|
311
|
-
return INT2FIX(device_version);
|
215
|
+
VALUE ph_common_set_server_name(VALUE self, VALUE server_name) {
|
216
|
+
ph_raise(Phidget_setServerName(get_ph_handle(self), StringValueCStr(server_name)));
|
217
|
+
return Qnil;
|
312
218
|
}
|
313
219
|
|
314
|
-
VALUE
|
315
|
-
|
316
|
-
int device_status;
|
317
|
-
ph_raise(CPhidget_getDeviceStatus(handle, &device_status));
|
318
|
-
return INT2FIX(device_status);
|
220
|
+
VALUE ph_common_get_server_peer_name(VALUE self) {
|
221
|
+
return ph_get_string(get_ph_handle(self), Phidget_getServerPeerName);
|
319
222
|
}
|
320
223
|
|
321
|
-
VALUE
|
322
|
-
|
323
|
-
const char *device_label;
|
324
|
-
ph_raise(CPhidget_getDeviceLabel(handle, &device_label));
|
325
|
-
return rb_str_new2(device_label);
|
224
|
+
VALUE ph_common_get_server_unique_name(VALUE self) {
|
225
|
+
return ph_get_string(get_ph_handle(self), Phidget_getServerUniqueName);
|
326
226
|
}
|
327
227
|
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
228
|
+
|
229
|
+
void CCONV ph_common_on_attach(PhidgetHandle phid, void *userPtr) {
|
230
|
+
ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
|
231
|
+
while(sem_wait(&callback_data->handler_ready)!=0) {};
|
232
|
+
callback_data->arg1 = Qnil;
|
233
|
+
callback_data->arg2 = Qnil;
|
234
|
+
callback_data->arg3 = Qnil;
|
235
|
+
callback_data->arg4 = Qnil;
|
236
|
+
sem_post(&callback_data->callback_called);
|
332
237
|
}
|
333
238
|
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
239
|
+
|
240
|
+
void CCONV ph_common_on_detach(PhidgetHandle phid, void *userPtr) {
|
241
|
+
ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
|
242
|
+
while(sem_wait(&callback_data->handler_ready)!=0) {};
|
243
|
+
callback_data->arg1 = Qnil;
|
244
|
+
callback_data->arg2 = Qnil;
|
245
|
+
callback_data->arg3 = Qnil;
|
246
|
+
callback_data->arg4 = Qnil;
|
247
|
+
sem_post(&callback_data->callback_called);
|
339
248
|
}
|
340
249
|
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
250
|
+
|
251
|
+
void CCONV ph_common_on_error(PhidgetHandle phid, void *userPtr, Phidget_ErrorEventCode code, const char* description) {
|
252
|
+
ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
|
253
|
+
while(sem_wait(&callback_data->handler_ready)!=0) {};
|
254
|
+
callback_data->arg1 = INT2NUM(code);
|
255
|
+
callback_data->arg2 = rb_str_new2(description);
|
256
|
+
callback_data->arg3 = Qnil;
|
257
|
+
callback_data->arg4 = Qnil;
|
258
|
+
sem_post(&callback_data->callback_called);
|
347
259
|
}
|
348
260
|
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
261
|
+
|
262
|
+
void CCONV ph_common_on_property_change(PhidgetHandle phid, void *userPtr, const char *propertyName) {
|
263
|
+
ph_callback_data_t *callback_data = ((ph_callback_data_t *)userPtr);
|
264
|
+
while(sem_wait(&callback_data->handler_ready)!=0) {};
|
265
|
+
callback_data->arg1 = rb_str_new2(propertyName);
|
266
|
+
callback_data->arg2 = Qnil;
|
267
|
+
callback_data->arg3 = Qnil;
|
268
|
+
callback_data->arg4 = Qnil;
|
269
|
+
sem_post(&callback_data->callback_called);
|
354
270
|
}
|
355
271
|
|
356
|
-
|
272
|
+
|
357
273
|
VALUE ph_common_set_on_attach_handler(VALUE self, VALUE handler) {
|
358
274
|
ph_data_t *ph = get_ph_data(self);
|
359
275
|
ph_callback_data_t *callback_data = &ph->attach_callback;
|
360
276
|
if( TYPE(handler) == T_NIL ) {
|
277
|
+
callback_data->callback = T_NIL;
|
361
278
|
callback_data->exit = true;
|
362
|
-
ph_raise(
|
279
|
+
ph_raise(Phidget_setOnAttachHandler(ph->handle, NULL, (void *)NULL));
|
280
|
+
sem_post(&callback_data->callback_called);
|
363
281
|
} else {
|
364
|
-
callback_data->called = false;
|
365
282
|
callback_data->exit = false;
|
366
283
|
callback_data->phidget = self;
|
367
284
|
callback_data->callback = handler;
|
368
|
-
ph_raise(
|
285
|
+
ph_raise(Phidget_setOnAttachHandler(ph->handle, ph_common_on_attach, (void *)callback_data));
|
369
286
|
ph_callback_thread(callback_data);
|
370
287
|
}
|
371
288
|
return Qnil;
|
@@ -375,79 +292,417 @@ VALUE ph_common_set_on_detach_handler(VALUE self, VALUE handler) {
|
|
375
292
|
ph_data_t *ph = get_ph_data(self);
|
376
293
|
ph_callback_data_t *callback_data = &ph->detach_callback;
|
377
294
|
if( TYPE(handler) == T_NIL ) {
|
295
|
+
callback_data->callback = T_NIL;
|
378
296
|
callback_data->exit = true;
|
379
|
-
ph_raise(
|
297
|
+
ph_raise(Phidget_setOnDetachHandler(ph->handle, NULL, (void *)NULL));
|
298
|
+
sem_post(&callback_data->callback_called);
|
380
299
|
} else {
|
381
|
-
callback_data->called = false;
|
382
300
|
callback_data->exit = false;
|
383
301
|
callback_data->phidget = self;
|
384
302
|
callback_data->callback = handler;
|
385
|
-
ph_raise(
|
303
|
+
ph_raise(Phidget_setOnDetachHandler(ph->handle, ph_common_on_detach, (void *)callback_data));
|
386
304
|
ph_callback_thread(callback_data);
|
387
305
|
}
|
388
306
|
return Qnil;
|
389
307
|
}
|
390
308
|
|
391
|
-
VALUE
|
309
|
+
VALUE ph_common_set_on_error_handler(VALUE self, VALUE handler) {
|
392
310
|
ph_data_t *ph = get_ph_data(self);
|
393
|
-
ph_callback_data_t *callback_data = &ph->
|
311
|
+
ph_callback_data_t *callback_data = &ph->error_callback;
|
394
312
|
if( TYPE(handler) == T_NIL ) {
|
313
|
+
callback_data->callback = T_NIL;
|
395
314
|
callback_data->exit = true;
|
396
|
-
ph_raise(
|
315
|
+
ph_raise(Phidget_setOnErrorHandler(ph->handle, NULL, (void *)NULL));
|
316
|
+
sem_post(&callback_data->callback_called);
|
397
317
|
} else {
|
398
|
-
callback_data->called = false;
|
399
318
|
callback_data->exit = false;
|
400
319
|
callback_data->phidget = self;
|
401
320
|
callback_data->callback = handler;
|
402
|
-
ph_raise(
|
321
|
+
ph_raise(Phidget_setOnErrorHandler(ph->handle, ph_common_on_error, (void *)callback_data));
|
403
322
|
ph_callback_thread(callback_data);
|
404
323
|
}
|
405
324
|
return Qnil;
|
406
325
|
}
|
407
326
|
|
408
|
-
VALUE
|
327
|
+
VALUE ph_common_set_on_property_change_handler(VALUE self, VALUE handler) {
|
409
328
|
ph_data_t *ph = get_ph_data(self);
|
410
|
-
ph_callback_data_t *callback_data = &ph->
|
329
|
+
ph_callback_data_t *callback_data = &ph->property_change_callback;
|
411
330
|
if( TYPE(handler) == T_NIL ) {
|
331
|
+
callback_data->callback = T_NIL;
|
412
332
|
callback_data->exit = true;
|
413
|
-
ph_raise(
|
333
|
+
ph_raise(Phidget_setOnPropertyChangeHandler(ph->handle, NULL, (void *)NULL));
|
334
|
+
sem_post(&callback_data->callback_called);
|
414
335
|
} else {
|
415
|
-
callback_data->called = false;
|
416
336
|
callback_data->exit = false;
|
417
337
|
callback_data->phidget = self;
|
418
338
|
callback_data->callback = handler;
|
419
|
-
ph_raise(
|
339
|
+
ph_raise(Phidget_setOnPropertyChangeHandler(ph->handle, ph_common_on_property_change, (void *)callback_data));
|
420
340
|
ph_callback_thread(callback_data);
|
421
341
|
}
|
422
342
|
return Qnil;
|
423
343
|
}
|
424
344
|
|
425
345
|
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
}
|
346
|
+
void Init_common() {
|
347
|
+
VALUE ph_module = rb_const_get(rb_cObject, rb_intern("Phidgets"));
|
348
|
+
VALUE ph_common = rb_define_class_under(ph_module, "Common", rb_cObject);
|
349
|
+
rb_define_alloc_func(ph_common, ph_common_allocate);
|
431
350
|
|
351
|
+
/* Document-method: open
|
352
|
+
* call-seq: open
|
353
|
+
*
|
354
|
+
* Opens the Phidget channel. The specific channel to be opened can be specified by setting any of the following properties:
|
355
|
+
* DeviceSerialNumber
|
356
|
+
* DeviceLabel
|
357
|
+
* Channel
|
358
|
+
* HubPort
|
359
|
+
* IsHubPortDevice
|
360
|
+
* ServerName
|
361
|
+
* IsLocal
|
362
|
+
* IsRemote
|
363
|
+
*
|
364
|
+
* open will return immediately, with the attachment process proceeding asynchronously. Use the Attach event or Attached property to determine when the channel is ready to use.
|
365
|
+
*/
|
366
|
+
rb_define_method(ph_common, "open", ph_common_open, 0);
|
432
367
|
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
368
|
+
/* Document-method: openWaitForAttachment
|
369
|
+
* call-seq: openWaitForAttachment(milliseconds)
|
370
|
+
*
|
371
|
+
* Opens the Phidget channel and waits a defined amount of time for the device to attach.The specific channel to be opened can be specified by setting any of the following properties:
|
372
|
+
* DeviceSerialNumber
|
373
|
+
* DeviceLabel
|
374
|
+
* Channel
|
375
|
+
* HubPort
|
376
|
+
* IsHubPortDevice
|
377
|
+
* ServerName
|
378
|
+
* IsLocal
|
379
|
+
* IsRemote
|
380
|
+
*
|
381
|
+
* openWaitForAttachment will block until the channel is attached or a timeout occurs. A timeout value of 0 will wait forever.
|
382
|
+
*/
|
383
|
+
rb_define_method(ph_common, "openWaitForAttachment", ph_common_open_wait_for_attachment, 1);
|
384
|
+
rb_define_alias(ph_common, "open_wait_for_attachment", "openWaitForAttachment");
|
438
385
|
|
386
|
+
/* Document-method: getAttached
|
387
|
+
* call-seq: getAttached -> status
|
388
|
+
*
|
389
|
+
* Gets the attached status of channel. A Phidget is attached after it has been opened and the Phidget library finds and connects to the corresponding hardware device.
|
390
|
+
*/
|
391
|
+
rb_define_method(ph_common, "getAttached", ph_common_get_attached, 0);
|
392
|
+
rb_define_alias(ph_common, "attached?", "getAttached");
|
439
393
|
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
394
|
+
/* Document-method: close
|
395
|
+
* call-seq: close
|
396
|
+
*
|
397
|
+
* Closes a Phidget channel that has been opened.
|
398
|
+
*/
|
399
|
+
rb_define_method(ph_common, "close", ph_common_close, 0);
|
445
400
|
|
401
|
+
/* Document-method: getDeviceChannelCount
|
402
|
+
* call-seq: getDeviceChannelCount(channel_class) -> channel_count
|
403
|
+
*
|
404
|
+
* Gets the number of channels of the specified channel class on the device. Pass Phidgets::CHCLASS_NOTHING to get the total number of channels.
|
405
|
+
*/
|
406
|
+
rb_define_method(ph_common, "getDeviceChannelCount", ph_common_get_device_channel_count, 1);
|
407
|
+
rb_define_alias(ph_common, "device_channel_count", "getDeviceChannelCount");
|
446
408
|
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
409
|
+
/* Document-method: getDeviceClass
|
410
|
+
* call-seq: getDeviceClass -> device_class
|
411
|
+
*
|
412
|
+
* Gets the device class for the Phidget which this channel is a part of.
|
413
|
+
*/
|
414
|
+
rb_define_method(ph_common, "getDeviceClass", ph_common_get_device_class, 0);
|
415
|
+
rb_define_alias(ph_common, "device_class", "getDeviceClass");
|
416
|
+
|
417
|
+
/* Document-method: getDeviceClassName
|
418
|
+
* call-seq: getDeviceClassName -> device_class_name
|
419
|
+
*
|
420
|
+
* Gets the name of the device class for the Phidget which this channel is a part of.
|
421
|
+
*/
|
422
|
+
rb_define_method(ph_common, "getDeviceClassName", ph_common_get_device_class_name, 0);
|
423
|
+
rb_define_alias(ph_common, "device_class_name", "getDeviceClassName");
|
424
|
+
|
425
|
+
/* Document-method: getDeviceID
|
426
|
+
* call-seq: getDeviceID -> device_id
|
427
|
+
*
|
428
|
+
* Gets the DeviceID for the Phidget which this channel is a part of.
|
429
|
+
*/
|
430
|
+
rb_define_method(ph_common, "getDeviceID", ph_common_get_device_id, 0);
|
431
|
+
rb_define_alias(ph_common, "device_id", "getDeviceID");
|
432
|
+
|
433
|
+
/* Document-method: getDeviceName
|
434
|
+
* call-seq: getDeviceName -> device_name
|
435
|
+
*
|
436
|
+
* Gets the name of the Phidget which this channel is a part of.
|
437
|
+
*/
|
438
|
+
rb_define_method(ph_common, "getDeviceName", ph_common_get_device_name, 0);
|
439
|
+
rb_define_alias(ph_common, "device_name", "getDeviceName");
|
440
|
+
|
441
|
+
/* Document-method: getDeviceSerialNumber
|
442
|
+
* call-seq: getDeviceSerialNumber -> serial_number
|
443
|
+
*
|
444
|
+
* Gets the serial number of the Phidget which this channel is a part of.
|
445
|
+
* If the channel is part of a VINT device, this will be the serial number of the VINT Hub the device is attached to.
|
446
|
+
*/
|
447
|
+
rb_define_method(ph_common, "getDeviceSerialNumber", ph_common_get_device_serial_number, 0);
|
448
|
+
rb_define_alias(ph_common, "device_serial_number", "getDeviceSerialNumber");
|
449
|
+
|
450
|
+
/* Document-method: setDeviceSerialNumber
|
451
|
+
* call-seq: setDeviceSerialNumber(serial_number)
|
452
|
+
*
|
453
|
+
* Specifies the serial number of the Phidget to be opened. Leave un-set, or set to Phidgets::SERIALNUMBER_ANY to open any serial number.
|
454
|
+
* If the channel is part of a VINT device, this will be the serial number of the VINT Hub the device is attached to.
|
455
|
+
*
|
456
|
+
* If setting this property, it must be set before the channel is opened. The behaviour of setting this property while the channel is open is undefined.
|
457
|
+
*/
|
458
|
+
rb_define_method(ph_common, "setDeviceSerialNumber", ph_common_set_device_serial_number, 1);
|
459
|
+
rb_define_alias(ph_common, "device_serial_number=", "setDeviceSerialNumber");
|
460
|
+
|
461
|
+
/* Document-method: getDeviceSKU
|
462
|
+
* call-seq: getDeviceSKU -> device_sku
|
463
|
+
*
|
464
|
+
* Gets the SKU (part number) of the Phidget which this channel is a part of.
|
465
|
+
*/
|
466
|
+
rb_define_method(ph_common, "getDeviceSKU", ph_common_get_device_sku, 0);
|
467
|
+
rb_define_alias(ph_common, "device_sku", "getDeviceSKU");
|
468
|
+
|
469
|
+
/* Document-method: getDeviceVersion
|
470
|
+
* call-seq: getDeviceVersion -> version
|
471
|
+
*
|
472
|
+
* Gets the firmware version of the Phidget which this channel is a part of.
|
473
|
+
*/
|
474
|
+
rb_define_method(ph_common, "getDeviceVersion", ph_common_get_device_version, 0);
|
475
|
+
rb_define_alias(ph_common, "device_version", "getDeviceVersion");
|
476
|
+
|
477
|
+
/* Document-method: getDeviceLabel
|
478
|
+
* call-seq: getDeviceLabel -> label
|
479
|
+
*
|
480
|
+
* Gets the label of the Phidget which this channel is a part of. A device label is a custom string used to more easily identify a Phidget.
|
481
|
+
* Labels are written to a Phidget using writeDeviceLabel().
|
482
|
+
*/
|
483
|
+
rb_define_method(ph_common, "getDeviceLabel", ph_common_get_device_label, 0);
|
484
|
+
rb_define_alias(ph_common, "device_label", "getDeviceLabel");
|
485
|
+
|
486
|
+
/* Document-method: setDeviceLabel
|
487
|
+
* call-seq: setDeviceLabel(label)
|
488
|
+
*
|
489
|
+
* Specifies the label of the Phidget to be opened. Leave un-set to open any label. A device label is a custom string used to more easily identify a Phidget.
|
490
|
+
* Labels are written to a Phidget using writeDeviceLabel().
|
491
|
+
*/
|
492
|
+
rb_define_method(ph_common, "setDeviceLabel", ph_common_write_device_label, 1);
|
493
|
+
rb_define_alias(ph_common, "device_label=", "setDeviceLabel");
|
494
|
+
|
495
|
+
/* Document-method: writeDeviceLabel
|
496
|
+
* call-seq: writeDeviceLabel(label)
|
497
|
+
*
|
498
|
+
* Writes a label to the device in the form of a string in the device flash memory. This label can then be used to identify the device, and will persist across power cycles.
|
499
|
+
*/
|
500
|
+
rb_define_method(ph_common, "writeDeviceLabel", ph_common_write_device_label, 1);
|
501
|
+
rb_define_alias(ph_common, "write_device_label", "writeDeviceLabel");
|
502
|
+
|
503
|
+
/* Document-method: getChannel
|
504
|
+
* call-seq: getChannel -> channel
|
505
|
+
*
|
506
|
+
* Gets the channel index of the channel on the device.
|
507
|
+
*/
|
508
|
+
rb_define_method(ph_common, "getChannel", ph_common_get_channel, 0);
|
509
|
+
rb_define_alias(ph_common, "channel", "getChannel");
|
510
|
+
|
511
|
+
/* Document-method: setChannel
|
512
|
+
* call-seq: setChannel(channel)
|
513
|
+
*
|
514
|
+
* Specifies the channel index to be opened. The default channel is 0. Set to PHIDGET_CHANNEL_ANY to open any channel on the specified device.
|
515
|
+
* If setting this property, it must be set before the channel is opened. The behaviour of setting this property while the channel is open is undefined.
|
516
|
+
*/
|
517
|
+
rb_define_method(ph_common, "setChannel", ph_common_set_channel, 1);
|
518
|
+
rb_define_alias(ph_common, "channel=", "setChannel");
|
519
|
+
|
520
|
+
/* Document-method: getChannelName
|
521
|
+
* call-seq: getChannelName -> channel_name
|
522
|
+
*
|
523
|
+
* Gets the channel's name. This name serves as a description of the specific nature of the channel.
|
524
|
+
*/
|
525
|
+
rb_define_method(ph_common, "getChannelName", ph_common_get_channel_name, 0);
|
526
|
+
rb_define_alias(ph_common, "channel_name", "getChannelName");
|
527
|
+
|
528
|
+
/* Document-method: getChannelClass
|
529
|
+
* call-seq: getChannelClass -> channel_class
|
530
|
+
*
|
531
|
+
* Gets the channel class of the channel.
|
532
|
+
*/
|
533
|
+
rb_define_method(ph_common, "getChannelClass", ph_common_get_channel_class, 0);
|
534
|
+
rb_define_alias(ph_common, "channel_class", "getChannelClass");
|
535
|
+
|
536
|
+
/* Document-method: getChannelClassName
|
537
|
+
* call-seq: getChannelClassName -> channel_class_name
|
538
|
+
*
|
539
|
+
* Gets the name of the channel class the channel belongs to.
|
540
|
+
*/
|
541
|
+
rb_define_method(ph_common, "getChannelClassName", ph_common_get_channel_class_name, 0);
|
542
|
+
rb_define_alias(ph_common, "channel_class_name", "getChannelClassName");
|
543
|
+
|
544
|
+
/* Document-method: getChannelSubclass
|
545
|
+
* call-seq: getChannelSubclass -> channel_subclass
|
546
|
+
*
|
547
|
+
* Gets the subclass for this channel. Allows for identifying channels with specific characteristics without needing to know the exact device and channel index.
|
548
|
+
*/
|
549
|
+
rb_define_method(ph_common, "getChannelSubclass", ph_common_get_channel_subclass, 0);
|
550
|
+
rb_define_alias(ph_common, "channel_subclass", "getChannelSubclass");
|
551
|
+
|
552
|
+
/* Document-method: getDataInterval
|
553
|
+
* call-seq: getDataInterval -> data_interval
|
554
|
+
*
|
555
|
+
* Gets the data interval for any channel that supports one.
|
556
|
+
* The DataInterval is the time that must elapse before the channel will fire another data event.
|
557
|
+
* The data interval is bounded by MinDataInterval and MaxDataInterval.
|
558
|
+
* The timing between data events can also be affected by the specific change trigger for the channel.
|
559
|
+
*/
|
560
|
+
rb_define_method(ph_common, "getDataInterval", ph_common_get_data_interval, 0);
|
561
|
+
rb_define_alias(ph_common, "data_interval", "getDataInterval");
|
562
|
+
|
563
|
+
/* Document-method: setDataInterval
|
564
|
+
* call-seq: setDataInterval(data_interval)
|
565
|
+
*
|
566
|
+
* Sets the data interval for any channel that supports one.
|
567
|
+
* The DataInterval is the time that must elapse before the channel will fire another data event.
|
568
|
+
* The data interval is bounded by MinDataInterval and MaxDataInterval.
|
569
|
+
* The timing between data events can also be affected by the specific change trigger for the channel.
|
570
|
+
*/
|
571
|
+
rb_define_method(ph_common, "setDataInterval", ph_common_set_data_interval, 1);
|
572
|
+
rb_define_alias(ph_common, "data_interval=", "setDataInterval");
|
573
|
+
|
574
|
+
/* Document-method: getHubPort
|
575
|
+
* call-seq: getHubPort -> hub_port
|
576
|
+
*
|
577
|
+
* Gets the hub port index of the VINT Hub port that the channel is attached to.
|
578
|
+
*/
|
579
|
+
rb_define_method(ph_common, "getHubPort", ph_common_get_hub_port, 0);
|
580
|
+
rb_define_alias(ph_common, "hub_port", "getHubPort");
|
581
|
+
|
582
|
+
/* Document-method: setHubPort
|
583
|
+
* call-seq: setHubPort(hub_port)
|
584
|
+
*
|
585
|
+
* Specifies the hub port index of the VINT Hub port to open this channel on. Leave un-set, or set to Phidgets::HUBPORT_ANY to open the channel on any VINT Hub port.
|
586
|
+
*/
|
587
|
+
rb_define_method(ph_common, "setHubPort", ph_common_set_hub_port, 1);
|
588
|
+
rb_define_alias(ph_common, "hub_port=", "setHubPort");
|
589
|
+
|
590
|
+
/* Document-method: getHubPortCount
|
591
|
+
* call-seq: getHubPortCount -> hub_port_count
|
592
|
+
*
|
593
|
+
* Gets the number of VINT ports present on the VINT Hub that the channel is attached to.
|
594
|
+
*/
|
595
|
+
rb_define_method(ph_common, "getHubPortCount", ph_common_get_hub_port_count, 0);
|
596
|
+
rb_define_alias(ph_common, "hub_port_count", "getHubPortCount");
|
597
|
+
|
598
|
+
/* Document-method: getIsChannel
|
599
|
+
* call-seq: getIsChannel -> is_channel
|
600
|
+
*
|
601
|
+
* Returns true if it is a channel. Mostly for use alongside getParent() to distinguish channel handles from device handles.
|
602
|
+
*/
|
603
|
+
rb_define_method(ph_common, "getIsChannel", ph_common_get_is_channel, 0);
|
604
|
+
rb_define_alias(ph_common, "is_channel?", "getIsChannel");
|
605
|
+
|
606
|
+
/* Document-method: getIsHubPortDevice
|
607
|
+
* call-seq: getIsHubPortDevice -> is_hub_port_device
|
608
|
+
*
|
609
|
+
* Gets whether this channel is a VINT Hub port channel, or part of a VINT device attached to a hub port.
|
610
|
+
*/
|
611
|
+
rb_define_method(ph_common, "getIsHubPortDevice", ph_common_get_is_hub_port_device, 0);
|
612
|
+
rb_define_alias(ph_common, "is_hub_port_device?", "getIsHubPortDevice");
|
613
|
+
|
614
|
+
/* Document-method: setIsHubPortDevice
|
615
|
+
* call-seq: setIsHubPortDevice(is_hub_port_device)
|
616
|
+
*
|
617
|
+
* Specifies whether this channel should be opened on a VINT Hub port directly, or on a VINT device attached to a hub port.
|
618
|
+
*/
|
619
|
+
rb_define_method(ph_common, "setIsHubPortDevice", ph_common_set_is_hub_port_device, 1);
|
620
|
+
rb_define_alias(ph_common, "is_hub_port_device=", "setIsHubPortDevice");
|
621
|
+
|
622
|
+
/* Document-method: getIsLocal
|
623
|
+
* call-seq: getIsLocal -> is_local
|
624
|
+
*
|
625
|
+
* Returns true when this channel is attached directly on the local machine, or false otherwise.
|
626
|
+
*/
|
627
|
+
rb_define_method(ph_common, "getIsLocal", ph_common_get_is_local, 0);
|
628
|
+
rb_define_alias(ph_common, "is_local?", "getIsLocal");
|
629
|
+
|
630
|
+
/* Document-method: setIsLocal
|
631
|
+
* call-seq: setIsLocal(is_local)
|
632
|
+
*
|
633
|
+
* Set to true if the channel is to be opened locally, and not over a network. If both this and IsRemote are set to False (the default),
|
634
|
+
* the channel will be opened either locally or remotely, on whichever matching channel is found first.
|
635
|
+
*/
|
636
|
+
rb_define_method(ph_common, "setIsLocal", ph_common_set_is_local, 1);
|
637
|
+
rb_define_alias(ph_common, "is_local=", "setIsLocal");
|
638
|
+
|
639
|
+
/* Document-method: getIsRemote
|
640
|
+
* call-seq: getIsRemote -> is_remote
|
641
|
+
*
|
642
|
+
* Returns true when this channel is attached via a Phidget network server, or false otherwise.
|
643
|
+
*/
|
644
|
+
rb_define_method(ph_common, "getIsRemote", ph_common_get_is_remote, 0);
|
645
|
+
rb_define_alias(ph_common, "is_remote?", "getIsRemote");
|
646
|
+
|
647
|
+
/* Document-method: setIsRemote
|
648
|
+
* call-seq: setIsRemote(is_remote)
|
649
|
+
*
|
650
|
+
* Set to true if the channel is to be opened remotely, rather than locally. If both this and IsLocal are set to False (the default),
|
651
|
+
* the channel will be opened either locally or remotely, on whichever matching channel is found first.
|
652
|
+
*/
|
653
|
+
rb_define_method(ph_common, "setIsRemote", ph_common_set_is_remote, 1);
|
654
|
+
rb_define_alias(ph_common, "is_remote=", "setIsRemote");
|
655
|
+
|
656
|
+
/* Document-method: getServerHostname
|
657
|
+
* call-seq: getServerHostname -> server_hostname
|
658
|
+
*
|
659
|
+
* Gets the hostname of the Phidget network server for network attached Phidgets.
|
660
|
+
* Fails if the channel is not connected to a Phidget network server.
|
661
|
+
*/
|
662
|
+
rb_define_method(ph_common, "getServerHostname", ph_common_get_server_hostname, 0);
|
663
|
+
rb_define_alias(ph_common, "server_hostname", "getServerHostname");
|
664
|
+
|
665
|
+
/* Document-method: getServerName
|
666
|
+
* call-seq: getServerName -> server_name
|
667
|
+
*
|
668
|
+
* Gets the name of the Phidget network server the channel is attached to, if any.
|
669
|
+
* Fails if the channel is not connected to a Phidget network server.
|
670
|
+
*/
|
671
|
+
rb_define_method(ph_common, "getServerName", ph_common_get_server_name, 0);
|
672
|
+
rb_define_alias(ph_common, "server_name", "getServerName");
|
673
|
+
|
674
|
+
/* Document-method: setServerName
|
675
|
+
* call-seq: setServerName(server_name)
|
676
|
+
*
|
677
|
+
* Specifies that this channel will be opened remotely, on a Phidget network server with this name.
|
678
|
+
* This function should only be used if you want your Phidget to be found on a specific server, and does not need to be specified if the Phidget can be on any any available server.
|
679
|
+
* In order for your program to have access to remote Phidgets, you must use the Networking API to EnableServerDiscovery or AddServer.
|
680
|
+
* If setting this property, it must be set before the channel is opened. The behaviour of setting this property while the channel is open is undefined.
|
681
|
+
*/
|
682
|
+
rb_define_method(ph_common, "setServerName", ph_common_set_server_name, 1);
|
683
|
+
rb_define_alias(ph_common, "server_name=", "setServerName");
|
684
|
+
|
685
|
+
/* Document-method: getServerPeerName
|
686
|
+
* call-seq: getServerPeerName -> peer_name
|
687
|
+
*
|
688
|
+
* Gets the peer name (address and port) of the Phidget server for network attached Phidgets, formatted as: address:port
|
689
|
+
* Fails if the channel is not connected to a Phidget network server.
|
690
|
+
*/
|
691
|
+
rb_define_method(ph_common, "getServerPeerName", ph_common_get_server_peer_name, 0);
|
692
|
+
rb_define_alias(ph_common, "server_peer_name", "getServerPeerName");
|
693
|
+
|
694
|
+
/* Document-method: getServerUniqueName
|
695
|
+
* call-seq: getServerUniqueName -> unique_name
|
696
|
+
*
|
697
|
+
* Gets the unique name for the server the channel is attached to, if any. This is either a unique mDNS name, or the name specified in addServer
|
698
|
+
* Fails if the channel is not connected to a Phidget network server.
|
699
|
+
*/
|
700
|
+
rb_define_method(ph_common, "getServerUniqueName", ph_common_get_server_unique_name, 0);
|
701
|
+
rb_define_alias(ph_common, "server_unique_name", "getServerUniqueName");
|
702
|
+
|
703
|
+
rb_define_private_method(ph_common, "ext_setOnAttachHandler", ph_common_set_on_attach_handler, 1);
|
704
|
+
rb_define_private_method(ph_common, "ext_setOnDetachHandler", ph_common_set_on_detach_handler, 1);
|
705
|
+
rb_define_private_method(ph_common, "ext_setOnErrorHandler", ph_common_set_on_error_handler, 1);
|
706
|
+
rb_define_private_method(ph_common, "ext_setOnPropertyChangeHandler", ph_common_set_on_property_change_handler, 1);
|
451
707
|
}
|
452
|
-
#endif
|
453
708
|
|