phidgets-ffi 0.0.5 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. data/.gitignore +3 -0
  2. data/LICENSE +1 -1
  3. data/README.rdoc +92 -42
  4. data/examples/accelerometer.rb +39 -0
  5. data/examples/advanced_servo.rb +94 -0
  6. data/examples/analog.rb +43 -0
  7. data/examples/bridge.rb +57 -0
  8. data/examples/dictionary.rb +46 -31
  9. data/examples/encoder.rb +59 -0
  10. data/examples/frequency_counter.rb +63 -0
  11. data/examples/gps.rb +91 -0
  12. data/examples/interface_kit_with_block.rb +68 -0
  13. data/examples/interface_kit_without_block.rb +60 -0
  14. data/examples/ir.rb +157 -0
  15. data/examples/led.rb +36 -0
  16. data/examples/manager.rb +16 -10
  17. data/examples/motor_control.rb +108 -0
  18. data/examples/{ffi → raw-ffi}/dictionary.rb +11 -1
  19. data/examples/{ffi → raw-ffi}/interface_kit.rb +19 -2
  20. data/examples/{ffi → raw-ffi}/library_version.rb +0 -0
  21. data/examples/{ffi → raw-ffi}/log.rb +0 -0
  22. data/examples/{ffi → raw-ffi}/manager.rb +6 -3
  23. data/examples/rfid.rb +63 -0
  24. data/examples/servo.rb +45 -30
  25. data/examples/spatial.rb +75 -0
  26. data/examples/stepper.rb +87 -0
  27. data/examples/temperature_sensor.rb +49 -0
  28. data/examples/text_lcd.rb +101 -0
  29. data/lib/phidgets-ffi.rb +34 -3
  30. data/lib/phidgets-ffi/accelerometer.rb +122 -0
  31. data/lib/phidgets-ffi/advanced_servo.rb +304 -0
  32. data/lib/phidgets-ffi/analog.rb +111 -0
  33. data/lib/phidgets-ffi/bridge.rb +167 -0
  34. data/lib/phidgets-ffi/common.rb +506 -103
  35. data/lib/phidgets-ffi/dictionary.rb +136 -23
  36. data/lib/phidgets-ffi/encoder.rb +196 -0
  37. data/lib/phidgets-ffi/error.rb +8 -3
  38. data/lib/phidgets-ffi/ffi/accelerometer.rb +30 -0
  39. data/lib/phidgets-ffi/ffi/advanced_servo.rb +73 -0
  40. data/lib/phidgets-ffi/ffi/analog.rb +29 -0
  41. data/lib/phidgets-ffi/ffi/bridge.rb +44 -0
  42. data/lib/phidgets-ffi/ffi/common.rb +51 -34
  43. data/lib/phidgets-ffi/ffi/constants.rb +3 -1
  44. data/lib/phidgets-ffi/ffi/dictionary.rb +25 -20
  45. data/lib/phidgets-ffi/ffi/encoder.rb +32 -0
  46. data/lib/phidgets-ffi/ffi/frequency_counter.rb +38 -0
  47. data/lib/phidgets-ffi/ffi/gps.rb +32 -0
  48. data/lib/phidgets-ffi/ffi/interface_kit.rb +26 -23
  49. data/lib/phidgets-ffi/ffi/ir.rb +50 -0
  50. data/lib/phidgets-ffi/ffi/led.rb +40 -0
  51. data/lib/phidgets-ffi/ffi/log.rb +7 -6
  52. data/lib/phidgets-ffi/ffi/manager.rb +35 -20
  53. data/lib/phidgets-ffi/ffi/motor_control.rb +66 -0
  54. data/lib/phidgets-ffi/ffi/rfid.rb +36 -0
  55. data/lib/phidgets-ffi/ffi/servo.rb +16 -15
  56. data/lib/phidgets-ffi/ffi/spatial.rb +40 -0
  57. data/lib/phidgets-ffi/ffi/stepper.rb +56 -0
  58. data/lib/phidgets-ffi/ffi/temperature_sensor.rb +42 -0
  59. data/lib/phidgets-ffi/ffi/text_lcd.rb +55 -0
  60. data/lib/phidgets-ffi/frequency_counter.rb +148 -0
  61. data/lib/phidgets-ffi/gps.rb +181 -0
  62. data/lib/phidgets-ffi/interface_kit.rb +205 -92
  63. data/lib/phidgets-ffi/ir.rb +290 -0
  64. data/lib/phidgets-ffi/led.rb +112 -0
  65. data/lib/phidgets-ffi/log.rb +14 -2
  66. data/lib/phidgets-ffi/manager.rb +143 -26
  67. data/lib/phidgets-ffi/motor_control.rb +497 -0
  68. data/lib/phidgets-ffi/phidgets-ffi.rb +15 -2
  69. data/lib/phidgets-ffi/rfid.rb +220 -0
  70. data/lib/phidgets-ffi/servo.rb +103 -61
  71. data/lib/phidgets-ffi/spatial.rb +306 -0
  72. data/lib/phidgets-ffi/stepper.rb +370 -0
  73. data/lib/phidgets-ffi/temperature_sensor.rb +157 -0
  74. data/lib/phidgets-ffi/text_lcd.rb +298 -0
  75. data/lib/phidgets-ffi/version.rb +1 -1
  76. data/phidgets-ffi.gemspec +2 -2
  77. metadata +89 -76
  78. data/examples/ffi/servo.rb +0 -67
  79. data/examples/interface_kit.rb +0 -20
@@ -1,11 +1,16 @@
1
1
  module Phidgets
2
2
  module Error
3
3
  @errors = {}
4
+
4
5
  Phidgets::FFI::ErrorCodes.to_hash.each_pair do |sym, num|
5
- eval "@errors[num] = (#{sym.to_s.split("_").map(&:capitalize).join} = Class.new(Exception))"
6
+ eval "@errors[num] = (#{sym.to_s.split("_").map(&:capitalize).join} = Class.new(Exception))"
6
7
  end
7
- def self.exception_for(error_code)
8
- @errors[error_code]
8
+
9
+ # Returns the error description corresponding to the error code, or raises an error.
10
+ # @param [Integer] error_code error code
11
+ # @return [String] the error description, or raises an error.
12
+ def self.exception_for(error_code)
13
+ @errors[error_code]
9
14
  end
10
15
  end
11
16
  end
@@ -0,0 +1,30 @@
1
+ module Phidgets
2
+ module FFI
3
+
4
+ attach_function :CPhidgetAccelerometer_create, [:phid], :int
5
+ attach_function :CPhidgetAccelerometer_getAxisCount, [:phid, :pointer], :int
6
+ attach_function :CPhidgetAccelerometer_getAcceleration, [:phid, :int, :pointer], :int
7
+ attach_function :CPhidgetAccelerometer_getAccelerationMax, [:phid, :int, :pointer], :int
8
+ attach_function :CPhidgetAccelerometer_getAccelerationMin, [:phid, :int, :pointer], :int
9
+ attach_function :CPhidgetAccelerometer_getAccelerationChangeTrigger, [:phid, :int, :pointer], :int
10
+ attach_function :CPhidgetAccelerometer_setAccelerationChangeTrigger, [:phid, :int, :double], :int
11
+
12
+ callback :CPhidgetAccelerometer_set_OnAccelerationChange_Callback, [:phid, :user_ptr, :int, :double], :int
13
+ attach_function :CPhidgetAccelerometer_set_OnAccelerationChange_Handler, [:phid, :CPhidgetAccelerometer_set_OnAccelerationChange_Callback, :user_ptr], :int
14
+
15
+ module CPhidgetAccelerometer
16
+ def self.method_missing(method, *args, &block)
17
+ if ::Phidgets::FFI.respond_to?("CPhidgetAccelerometer_#{method}".to_sym)
18
+ if (rs = ::Phidgets::FFI.send("CPhidgetAccelerometer_#{method}".to_sym, *args, &block)) != 0
19
+ raise Phidgets::Error.exception_for(rs), Phidgets::FFI.error_description(rs)
20
+ end
21
+ else
22
+ super(method, *args, &block)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+
30
+
@@ -0,0 +1,73 @@
1
+ module Phidgets
2
+ module FFI
3
+
4
+ AdvancedServoType = enum(
5
+ :default, 1,
6
+ :raw_us_mode,
7
+ :hitec_hs322hd,
8
+ :hitec_hS5245mg,
9
+ :hitec_805bb,
10
+ :hitec_hs422,
11
+ :towerpro_mg90,
12
+ :hitec_hsr1425cr,
13
+ :hitec_hs785hb,
14
+ :hitec_hs485hb,
15
+ :hitec_hs645mg,
16
+ :hitec_815bb,
17
+ :firgelli_l12_30_50_06_r,
18
+ :firgelli_l12_50_100_06_r,
19
+ :firgelli_l12_50_210_06_r,
20
+ :firgelli_l12_100_50_06_r,
21
+ :firgelli_l12_100_100_06_r,
22
+ :user_defined
23
+ )
24
+
25
+ attach_function :CPhidgetAdvancedServo_create, [:phid], :int
26
+ attach_function :CPhidgetAdvancedServo_getMotorCount, [:phid, :pointer], :int
27
+ attach_function :CPhidgetAdvancedServo_getAcceleration, [:phid, :int, :pointer], :int
28
+ attach_function :CPhidgetAdvancedServo_setAcceleration, [:phid, :int, :double], :int
29
+ attach_function :CPhidgetAdvancedServo_getAccelerationMax, [:phid, :int, :pointer], :int
30
+ attach_function :CPhidgetAdvancedServo_getAccelerationMin, [:phid, :int, :pointer], :int
31
+ attach_function :CPhidgetAdvancedServo_getVelocityLimit, [:phid, :int, :pointer], :int
32
+ attach_function :CPhidgetAdvancedServo_setVelocityLimit, [:phid, :int, :double], :int
33
+ attach_function :CPhidgetAdvancedServo_getVelocity, [:phid, :int, :pointer], :int
34
+ attach_function :CPhidgetAdvancedServo_getVelocityMax, [:phid, :int, :pointer], :int
35
+ attach_function :CPhidgetAdvancedServo_getVelocityMin, [:phid, :int, :pointer], :int
36
+ attach_function :CPhidgetAdvancedServo_getPosition, [:phid, :int, :pointer], :int
37
+ attach_function :CPhidgetAdvancedServo_setPosition, [:phid, :int, :double], :int
38
+ attach_function :CPhidgetAdvancedServo_getPositionMax, [:phid, :int, :pointer], :int
39
+ attach_function :CPhidgetAdvancedServo_setPositionMax, [:phid, :int, :double], :int
40
+ attach_function :CPhidgetAdvancedServo_getPositionMin, [:phid, :int, :pointer], :int
41
+ attach_function :CPhidgetAdvancedServo_setPositionMin, [:phid, :int, :double], :int
42
+ attach_function :CPhidgetAdvancedServo_getCurrent, [:phid, :int, :pointer], :int
43
+ attach_function :CPhidgetAdvancedServo_getSpeedRampingOn, [:phid, :int, :pointer], :int
44
+ attach_function :CPhidgetAdvancedServo_setSpeedRampingOn, [:phid, :int, :int], :int
45
+ attach_function :CPhidgetAdvancedServo_getEngaged, [:phid, :int, :pointer], :int
46
+ attach_function :CPhidgetAdvancedServo_setEngaged, [:phid, :int, :int], :int
47
+ attach_function :CPhidgetAdvancedServo_getStopped, [:phid, :int, :pointer], :int
48
+ attach_function :CPhidgetAdvancedServo_getServoType, [:phid, :int, :pointer], :int
49
+ attach_function :CPhidgetAdvancedServo_setServoType, [:phid, :int, AdvancedServoType], :int
50
+ attach_function :CPhidgetAdvancedServo_setServoParameters, [:phid, :int, :double, :double, :double, :double], :int
51
+
52
+ callback :CPhidgetAdvancedServo_set_OnVelocityChange_Callback, [:phid, :user_ptr, :int, :double], :int
53
+ attach_function :CPhidgetAdvancedServo_set_OnVelocityChange_Handler, [:phid, :CPhidgetAdvancedServo_set_OnVelocityChange_Callback, :user_ptr], :int
54
+
55
+ callback :CPhidgetAdvancedServo_set_OnPositionChange_Callback, [:phid, :user_ptr, :int, :double], :int
56
+ attach_function :CPhidgetAdvancedServo_set_OnPositionChange_Handler, [:phid, :CPhidgetAdvancedServo_set_OnPositionChange_Callback, :user_ptr], :int
57
+
58
+ callback :CPhidgetAdvancedServo_set_OnCurrentChange_Callback, [:phid, :user_ptr, :int, :double], :int
59
+ attach_function :CPhidgetAdvancedServo_set_OnCurrentChange_Handler, [:phid, :CPhidgetAdvancedServo_set_OnCurrentChange_Callback, :user_ptr], :int
60
+
61
+ module CPhidgetAdvancedServo
62
+ def self.method_missing(method, *args, &block)
63
+ if ::Phidgets::FFI.respond_to?("CPhidgetAdvancedServo_#{method}".to_sym)
64
+ if (rs = ::Phidgets::FFI.send("CPhidgetAdvancedServo_#{method}".to_sym, *args, &block)) != 0
65
+ raise Phidgets::Error.exception_for(rs), Phidgets::FFI.error_description(rs)
66
+ end
67
+ else
68
+ super(method, *args, &block)
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,29 @@
1
+ module Phidgets
2
+ module FFI
3
+
4
+ attach_function :CPhidgetAnalog_create, [:phid], :int
5
+ attach_function :CPhidgetAnalog_getOutputCount, [:phid, :pointer], :int
6
+ attach_function :CPhidgetAnalog_getVoltage, [:phid, :int, :pointer], :int
7
+ attach_function :CPhidgetAnalog_setVoltage, [:phid, :int, :double], :int
8
+ attach_function :CPhidgetAnalog_getVoltageMax, [:phid, :int, :pointer], :int
9
+ attach_function :CPhidgetAnalog_getVoltageMin, [:phid, :int, :pointer], :int
10
+ attach_function :CPhidgetAnalog_getEnabled, [:phid, :int, :pointer], :int
11
+ attach_function :CPhidgetAnalog_setEnabled, [:phid, :int, :int], :int
12
+
13
+ module CPhidgetAnalog
14
+ def self.method_missing(method, *args, &block)
15
+ if ::Phidgets::FFI.respond_to?("CPhidgetAnalog_#{method}".to_sym)
16
+ if (rs = ::Phidgets::FFI.send("CPhidgetAnalog_#{method}".to_sym, *args, &block)) != 0
17
+
18
+ raise Phidgets::Error.exception_for(rs), Phidgets::FFI.error_description(rs)
19
+ end
20
+ else
21
+ super(method, *args, &block)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+
29
+
@@ -0,0 +1,44 @@
1
+ module Phidgets
2
+ module FFI
3
+
4
+ BridgeGains = enum(
5
+ :gain_1, 1,
6
+ :gain_8,
7
+ :gain_16,
8
+ :gain_32,
9
+ :gain_64,
10
+ :gain_128,
11
+ :gain_unknown
12
+ )
13
+
14
+ attach_function :CPhidgetBridge_create, [:phid], :int
15
+ attach_function :CPhidgetBridge_getInputCount, [:phid, :pointer], :int
16
+ attach_function :CPhidgetBridge_getBridgeValue, [:phid, :int, :pointer], :int
17
+ attach_function :CPhidgetBridge_getBridgeMax, [:phid, :int, :pointer], :int
18
+ attach_function :CPhidgetBridge_getBridgeMin, [:phid, :int, :pointer], :int
19
+ attach_function :CPhidgetBridge_setEnabled, [:phid, :int, :int], :int
20
+ attach_function :CPhidgetBridge_getEnabled, [:phid, :int, :pointer], :int
21
+ attach_function :CPhidgetBridge_getGain, [:phid, :int, :pointer], :int
22
+ attach_function :CPhidgetBridge_setGain, [:phid, :int, BridgeGains], :int
23
+ attach_function :CPhidgetBridge_getDataRate, [:phid, :pointer], :int
24
+ attach_function :CPhidgetBridge_setDataRate, [:phid, :int], :int
25
+ attach_function :CPhidgetBridge_getDataRateMax, [:phid, :pointer], :int
26
+ attach_function :CPhidgetBridge_getDataRateMin, [:phid, :pointer], :int
27
+ attach_function :CPhidgetBridge_getBridgeValue, [:phid, :int, :pointer], :int
28
+
29
+ callback :CPhidgetBridge_set_OnBridgeData_Callback, [:phid, :user_ptr, :int, :double], :int
30
+ attach_function :CPhidgetBridge_set_OnBridgeData_Handler, [:phid, :CPhidgetBridge_set_OnBridgeData_Callback, :user_ptr], :int
31
+
32
+ module CPhidgetBridge
33
+ def self.method_missing(method, *args, &block)
34
+ if ::Phidgets::FFI.respond_to?("CPhidgetBridge_#{method}".to_sym)
35
+ if (rs = ::Phidgets::FFI.send("CPhidgetBridge_#{method}".to_sym, *args, &block)) != 0
36
+ raise Phidgets::Error.exception_for(rs), Phidgets::FFI.error_description(rs)
37
+ end
38
+ else
39
+ super(method, *args, &block)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,45 +1,62 @@
1
1
  module Phidgets
2
2
  module FFI
3
3
  class Error < Exception; end
4
- attach_function :CPhidget_open, [:phid, :int], :int #int CPhidget_open(CPhidgetHandle phid, int serialNumber);
5
- attach_function :CPhidget_openLabel, [:phid, :string], :int #int CPhidget_openLabel(CPhidgetHandle phid, const char *label);
6
- attach_function :CPhidget_close, [:phid], :int #int CPhidget_close(CPhidgetHandle phid);
7
- attach_function :CPhidget_delete, [:phid], :int #int CPhidget_delete(CPhidgetHandle phid);
8
- callback :CPhidget_set_OnDetach_Callback, [:phid, :user_ptr], :int
9
- attach_function :CPhidget_set_OnDetach_Handler, [:phid, :CPhidget_set_OnDetach_Callback, :user_ptr], :int #int CPhidget_set_OnDetach_Handler(CPhidgetHandle phid, int( *fptr)(CPhidgetHandle phid, void *userPtr), void *userPtr);
10
- callback :CPhidget_set_OnAttach_Callback, [:phid, :user_ptr], :int
11
- attach_function :CPhidget_set_OnAttach_Handler, [:phid, :CPhidget_set_OnAttach_Callback, :user_ptr], :int #int CPhidget_set_OnAttach_Handler(CPhidgetHandle phid, int( *fptr)(CPhidgetHandle phid, void *userPtr), void *userPtr);
12
- callback :CPhidget_set_OnServerConnect_Callback, [:phid, :user_ptr], :int
13
- attach_function :CPhidget_set_OnServerConnect_Handler, [:phid, :CPhidget_set_OnServerConnect_Callback, :user_ptr], :int #int CPhidget_set_OnServerConnect_Handler(CPhidgetHandle phid, int ( *fptr)(CPhidgetHandle phid, void *userPtr), void *userPtr);
14
- callback :CPhidget_set_OnServerDisconnect_Callback, [:phid, :user_ptr], :int
15
- attach_function :CPhidget_set_OnServerDisconnect_Handler, [:phid, :CPhidget_set_OnServerDisconnect_Callback, :user_ptr], :int #int CPhidget_set_OnServerDisconnect_Handler(CPhidgetHandle phid, int ( *fptr)(CPhidgetHandle phid, void *userPtr), void *userPtr);
16
- callback :CPhidget_set_OnError_Callback, [:phid, :user_ptr, :int, :string], :int
17
- attach_function :CPhidget_set_OnError_Handler, [:phid, :CPhidget_set_OnError_Callback, :user_ptr], :int #int CPhidget_set_OnError_Handler(CPhidgetHandle phid, int( *fptr)(CPhidgetHandle phid, void *userPtr, int errorCode, const char *errorString), void *userPtr);
18
- attach_function :CPhidget_getDeviceName, [:phid, :pointer], :int #int CPhidget_getDeviceName(CPhidgetHandle phid, const char **deviceName);
19
- attach_function :CPhidget_getSerialNumber, [:phid, :pointer], :int #int CPhidget_getSerialNumber(CPhidgetHandle phid, int *serialNumber);
20
- attach_function :CPhidget_getDeviceVersion, [:phid, :pointer], :int #int CPhidget_getDeviceVersion(CPhidgetHandle phid, int *deviceVersion);
21
- attach_function :CPhidget_getDeviceStatus, [:phid, :pointer], :int #int CPhidget_getDeviceStatus(CPhidgetHandle phid, int *deviceStatus);
4
+
5
+ attach_function :CPhidget_open, [:phid, :int], :int
6
+ attach_function :CPhidget_openRemote, [:phid, :int, :string, :string], :int
7
+ attach_function :CPhidget_openRemoteIP, [:phid, :int, :string, :int, :string], :int
8
+ attach_function :CPhidget_openLabelRemote, [:phid, :string, :string, :string], :int
9
+ attach_function :CPhidget_openLabelRemoteIP, [:phid, :string, :string, :int, :string], :int
10
+ attach_function :CPhidget_openLabel, [:phid, :string], :int
11
+ attach_function :CPhidget_close, [:phid], :int
12
+ attach_function :CPhidget_delete, [:phid], :int
13
+ attach_function :CPhidget_getDeviceName, [:phid, :pointer], :int
14
+ attach_function :CPhidget_getSerialNumber, [:phid, :pointer], :int
15
+ attach_function :CPhidget_getDeviceVersion, [:phid, :pointer], :int
16
+ attach_function :CPhidget_getDeviceStatus, [:phid, :pointer], :int
22
17
  attach_function :CPhidget_getLibraryVersion, [:pointer], :int
23
- attach_function :CPhidget_getDeviceType, [:phid, :pointer], :int #int CPhidget_getDeviceType(CPhidgetHandle phid, const char **deviceType);
24
- attach_function :CPhidget_getDeviceLabel, [:phid, :pointer], :int #int CPhidget_getDeviceLabel(CPhidgetHandle phid, const char **deviceLabel);
25
- attach_function :CPhidget_setDeviceLabel, [:phid, :string], :int #int CPhidget_setDeviceLabel(CPhidgetHandle phid, const char *deviceLabel);
26
- attach_function :CPhidget_getErrorDescription, [:int, :pointer], :int #int CPhidget_getErrorDescription(int errorCode, const char **errorString);
27
- attach_function :CPhidget_waitForAttachment, [:phid, :int], :int #int CPhidget_waitForAttachment(CPhidgetHandle phid, int milliseconds);
28
- attach_function :CPhidget_getServerID, [:phid, :pointer], :int #int CPhidget_getServerID(CPhidgetHandle phid, const char **serverID);
29
- attach_function :CPhidget_getServerAddress, [:phid, :pointer, :pointer], :int #int CPhidget_getServerAddress(CPhidgetHandle phid, const char **address, int *port);
30
- attach_function :CPhidget_getServerStatus, [:phid, :pointer], :int #int CPhidget_getServerStatus(CPhidgetHandle phid, int *serverStatus);
31
- attach_function :CPhidget_getDeviceID, [:phid, :pointer], :int #int CPhidget_getDeviceID(CPhidgetHandle phid, CPhidget_DeviceID *deviceID);
32
- attach_function :CPhidget_getDeviceClass, [:phid, :pointer], :int #int CPhidget_getDeviceClass(CPhidgetHandle phid, CPhidget_DeviceClass *deviceClass);
33
- callback :CPhidget_set_OnWillSleep_Callback, [:user_ptr], :int
34
- attach_function :CPhidget_set_OnWillSleep_Handler, [:CPhidget_set_OnWillSleep_Callback, :user_ptr], :int #int CPhidget_set_OnWillSleep_Handler(int( *fptr)(void *userPtr), void *userPtr);
35
- callback :CPhidget_set_OnWakeup_Callback, [:user_ptr], :int
36
- attach_function :CPhidget_set_OnWakeup_Handler, [:CPhidget_set_OnWakeup_Callback, :user_ptr], :int #int CPhidget_set_OnWakeup_Handler(int( *fptr)(void *userPtr), void *userPtr);
18
+ attach_function :CPhidget_getDeviceType, [:phid, :pointer], :int
19
+ attach_function :CPhidget_getDeviceLabel, [:phid, :pointer], :int
20
+ attach_function :CPhidget_setDeviceLabel, [:phid, :string], :int
21
+ attach_function :CPhidget_getErrorDescription, [:int, :pointer], :int
22
+
23
+ @blocking = true
24
+ attach_function :CPhidget_waitForAttachment, [:phid, :int], :int, :blocking => true
25
+
26
+ attach_function :CPhidget_getServerID, [:phid, :pointer], :int
27
+ attach_function :CPhidget_getServerAddress, [:phid, :pointer, :pointer], :int
28
+ attach_function :CPhidget_getServerStatus, [:phid, :pointer], :int
29
+ attach_function :CPhidget_getDeviceID, [:phid, :pointer], :int
30
+ attach_function :CPhidget_getDeviceClass, [:phid, :pointer], :int
31
+
32
+ callback :CPhidget_set_OnDetach_Callback, [:phid, :user_ptr], :int
33
+ attach_function :CPhidget_set_OnDetach_Handler, [:phid, :CPhidget_set_OnDetach_Callback, :user_ptr], :int
34
+
35
+ callback :CPhidget_set_OnAttach_Callback, [:phid, :user_ptr], :int
36
+ attach_function :CPhidget_set_OnAttach_Handler, [:phid, :CPhidget_set_OnAttach_Callback, :user_ptr], :int
37
+
38
+ callback :CPhidget_set_OnServerConnect_Callback, [:phid, :user_ptr], :int
39
+ attach_function :CPhidget_set_OnServerConnect_Handler, [:phid, :CPhidget_set_OnServerConnect_Callback, :user_ptr], :int
40
+
41
+ callback :CPhidget_set_OnServerDisconnect_Callback, [:phid, :user_ptr], :int
42
+ attach_function :CPhidget_set_OnServerDisconnect_Handler, [:phid, :CPhidget_set_OnServerDisconnect_Callback, :user_ptr], :int
43
+
44
+ callback :CPhidget_set_OnError_Callback, [:phid, :user_ptr, :int, :string], :int
45
+ attach_function :CPhidget_set_OnError_Handler, [:phid, :CPhidget_set_OnError_Callback, :user_ptr], :int
46
+
37
47
 
48
+ if Config::CONFIG['target_os'] =~ /darwin/ #Mac OS X
49
+ callback :CPhidget_set_OnWillSleep_Callback, [:user_ptr], :int
50
+ attach_function :CPhidget_set_OnWillSleep_Handler, [:CPhidget_set_OnWillSleep_Callback, :user_ptr], :int
51
+ callback :CPhidget_set_OnWakeup_Callback, [:user_ptr], :int
52
+ attach_function :CPhidget_set_OnWakeup_Handler, [:CPhidget_set_OnWakeup_Callback, :user_ptr], :int
53
+ end
54
+
38
55
  module Common
39
56
  def self.method_missing(method, *args, &block)
40
57
  if ::Phidgets::FFI.respond_to?("CPhidget_#{method}".to_sym)
41
- if (rs = ::Phidgets::FFI.send("CPhidget_#{method}".to_sym, *args, &block)) != 0
42
- raise Phidgets::Error.exception_for(rs), Phidgets::FFI.error_description(rs)
58
+ if (rs = ::Phidgets::FFI.send("CPhidget_#{method}".to_sym, *args, &block)) != 0
59
+ raise Phidgets::Error.exception_for(rs), Phidgets::FFI.error_description(rs)
43
60
  end
44
61
  else
45
62
  super(method, *args, &block)
@@ -1,5 +1,6 @@
1
1
  module Phidgets
2
2
  module FFI
3
+
3
4
  typedef :pointer, :phid
4
5
  typedef :pointer, :user_ptr
5
6
 
@@ -65,7 +66,7 @@ module Phidgets
65
66
  :spatial_accel_gyro_compass, 0x033,
66
67
  :temperature_sensor, 0x070,
67
68
  :temperature_sensor_4, 0x032,
68
- :sensor_ir, 0x03C,
69
+ :temperature_sensor_ir, 0x03C,
69
70
  :textlcd_2x20_w_8_8_8, 0x17D,
70
71
  :textlcd_adapter, 0x03D,
71
72
  :unipolar_stepper_4motor, 0x07A,
@@ -110,5 +111,6 @@ module Phidgets
110
111
  :bad_version,
111
112
  :error_code_count
112
113
  )
114
+
113
115
  end
114
116
  end
@@ -9,27 +9,32 @@ module Phidgets
9
9
  :unchanged
10
10
  )
11
11
 
12
- attach_function :CPhidgetDictionary_create, [:dict], :int #int CPhidgetDictionary_create(CPhidgetDictionaryHandle *dict);
13
- attach_function :CPhidgetDictionary_openRemote, [:dict, :string, :string], :int #int CPhidgetDictionary_openRemote(CPhidgetDictionaryHandle dict, const char *serverID, const char *password);
14
- attach_function :CPhidgetDictionary_openRemoteIP, [:dict, :string, :int, :string], :int #int CPhidgetDictionary_openRemoteIP(CPhidgetDictionaryHandle dict, const char *address, int port, const char *password);
15
- attach_function :CPhidgetDictionary_close, [:dict], :int #int CPhidgetDictionary_close(CPhidgetDictionaryHandle dict);
16
- attach_function :CPhidgetDictionary_delete, [:dict], :int #int CPhidgetDictionary_delete(CPhidgetDictionaryHandle dict);
12
+ attach_function :CPhidgetDictionary_create, [:dict], :int
13
+ attach_function :CPhidgetDictionary_openRemote, [:dict, :string, :string], :int
14
+ attach_function :CPhidgetDictionary_openRemoteIP, [:dict, :string, :int, :string], :int
15
+ attach_function :CPhidgetDictionary_close, [:dict], :int
16
+ attach_function :CPhidgetDictionary_delete, [:dict], :int
17
+ attach_function :CPhidgetDictionary_addKey, [:dict, :string, :string, :int], :int
18
+ attach_function :CPhidgetDictionary_removeKey, [:dict, :string], :int
19
+ attach_function :CPhidgetDictionary_getKey, [:dict, :string, :pointer, :int], :int
20
+ attach_function :CPhidgetDictionary_getServerID, [:dict, :pointer], :int
21
+ attach_function :CPhidgetDictionary_getServerAddress, [:dict, :pointer, :pointer], :int
22
+ attach_function :CPhidgetDictionary_getServerStatus, [:dict, :pointer], :int
23
+
17
24
  callback :CPhidgetDictionary_set_OnError_Callback, [:dict, :pointer, :int, :string], :int
18
- attach_function :CPhidgetDictionary_set_OnError_Handler, [:dict, :CPhidgetDictionary_set_OnError_Callback, :pointer], :int #int CPhidgetDictionary_set_OnError_Handler(CPhidgetDictionaryHandle dict, int( *fptr)(CPhidgetDictionaryHandle, void *userPtr, int errorCode, const char *errorString), void *userPtr);
19
- attach_function :CPhidgetDictionary_addKey, [:dict, :string, :string, :int], :int #int CPhidgetDictionary_addKey(CPhidgetDictionaryHandle dict, const char *key, const char *value, int persistent);
20
- attach_function :CPhidgetDictionary_removeKey, [:dict, :string], :int #int CPhidgetDictionary_removeKey(CPhidgetDictionaryHandle dict, const char *pattern);
21
- attach_function :CPhidgetDictionary_getKey, [:dict, :string, :pointer, :int], :int #int CPhidgetDictionary_getKey(CPhidgetDictionaryHandle dict, const char *key, char *value, int valuelen);
22
- callback :CPhidgetDictionary_set_OnServerConnect_Callback, [:dict, :pointer], :int
23
- attach_function :CPhidgetDictionary_set_OnServerConnect_Handler, [:dict, :CPhidgetDictionary_set_OnServerConnect_Callback, :pointer], :int #int CPhidgetDictionary_set_OnServerConnect_Handler(CPhidgetDictionaryHandle dict, int ( *fptr)(CPhidgetDictionaryHandle dict, void *userPtr), void *userPtr);
24
- callback :CPhidgetDictionary_set_OnServerDisconnect_Callback, [:dict, :pointer], :int
25
- attach_function :CPhidgetDictionary_set_OnServerDisconnect_Handler, [:dict, :CPhidgetDictionary_set_OnServerDisconnect_Callback, :pointer], :int #int CPhidgetDictionary_set_OnServerDisconnect_Handler(CPhidgetDictionaryHandle dict, int ( *fptr)(CPhidgetDictionaryHandle dict, void *userPtr), void *userPtr);
26
- attach_function :CPhidgetDictionary_getServerID, [:dict, :pointer], :int #int CPhidgetDictionary_getServerID(CPhidgetDictionaryHandle dict, const char **serverID);
27
- attach_function :CPhidgetDictionary_getServerAddress, [:dict, :pointer, :pointer], :int #int CPhidgetDictionary_getServerAddress(CPhidgetDictionaryHandle dict, const char **address, int *port);
28
- attach_function :CPhidgetDictionary_getServerStatus, [:dict, :pointer], :int #int CPhidgetDictionary_getServerStatus(CPhidgetDictionaryHandle dict, int *serverStatus);
29
- callback :CPhidgetDictionary_set_OnKeyChange_Callback, [:dict, :pointer, :string, :string, KeyChangeReason], :int
30
- attach_function :CPhidgetDictionary_set_OnKeyChange_Handler, [:dict, :pointer, :string, :CPhidgetDictionary_set_OnKeyChange_Callback, :pointer], :int #int CPhidgetDictionary_set_OnKeyChange_Handler(CPhidgetDictionaryHandle dict, CPhidgetDictionaryListenerHandle *dictlistener, const char *pattern, CPhidgetDictionary_OnKeyChange_Function fptr, void *userPtr);
31
- attach_function :CPhidgetDictionary_remove_OnKeyChange_Handler, [:dict], :int #int CPhidgetDictionary_remove_OnKeyChange_Handler(CPhidgetDictionaryListenerHandle dictlistener);
32
-
25
+ attach_function :CPhidgetDictionary_set_OnError_Handler, [:dict, :CPhidgetDictionary_set_OnError_Callback, :pointer], :int
26
+
27
+ callback :CPhidgetDictionary_set_OnServerConnect_Callback, [:dict, :pointer], :int
28
+ attach_function :CPhidgetDictionary_set_OnServerConnect_Handler, [:dict, :CPhidgetDictionary_set_OnServerConnect_Callback, :pointer], :int
29
+
30
+ callback :CPhidgetDictionary_set_OnServerDisconnect_Callback, [:dict, :pointer], :int
31
+ attach_function :CPhidgetDictionary_set_OnServerDisconnect_Handler, [:dict, :CPhidgetDictionary_set_OnServerDisconnect_Callback, :pointer], :int
32
+
33
+ callback :CPhidgetDictionary_set_OnKeyChange_Callback, [:dict, :pointer, :string, :string, KeyChangeReason], :int
34
+ attach_function :CPhidgetDictionary_set_OnKeyChange_Handler, [:dict, :pointer, :string, :CPhidgetDictionary_set_OnKeyChange_Callback, :pointer], :int
35
+
36
+ attach_function :CPhidgetDictionary_remove_OnKeyChange_Handler, [:dict], :int
37
+
33
38
  module CPhidgetDictionary
34
39
  def self.method_missing(method, *args, &block)
35
40
  if ::Phidgets::FFI.respond_to?("CPhidgetDictionary_#{method}".to_sym)
@@ -0,0 +1,32 @@
1
+ module Phidgets
2
+ module FFI
3
+
4
+ attach_function :CPhidgetEncoder_create, [:phid], :int
5
+ attach_function :CPhidgetEncoder_getInputCount, [:phid, :pointer], :int
6
+ attach_function :CPhidgetEncoder_getInputState, [:phid, :int, :pointer], :int
7
+ attach_function :CPhidgetEncoder_getEncoderCount, [:phid, :pointer], :int
8
+ attach_function :CPhidgetEncoder_getPosition, [:phid, :int, :pointer], :int
9
+ attach_function :CPhidgetEncoder_setPosition, [:phid, :int, :int], :int
10
+ attach_function :CPhidgetEncoder_getIndexPosition, [:phid, :int, :pointer], :int
11
+ attach_function :CPhidgetEncoder_getEnabled, [:phid, :int, :pointer], :int
12
+ attach_function :CPhidgetEncoder_setEnabled, [:phid, :int, :int], :int
13
+
14
+ callback :CPhidgetEncoder_set_OnInputChange_Callback, [:phid, :user_ptr, :int, :int], :int
15
+ attach_function :CPhidgetEncoder_set_OnInputChange_Handler, [:phid, :CPhidgetEncoder_set_OnInputChange_Callback, :user_ptr], :int
16
+
17
+ callback :CPhidgetEncoder_set_OnPositionChange_Callback, [:phid, :user_ptr, :int, :int, :int], :int
18
+ attach_function :CPhidgetEncoder_set_OnPositionChange_Handler, [:phid, :CPhidgetEncoder_set_OnPositionChange_Callback, :user_ptr], :int
19
+
20
+ module CPhidgetEncoder
21
+ def self.method_missing(method, *args, &block)
22
+ if ::Phidgets::FFI.respond_to?("CPhidgetEncoder_#{method}".to_sym)
23
+ if (rs = ::Phidgets::FFI.send("CPhidgetEncoder_#{method}".to_sym, *args, &block)) != 0
24
+ raise Phidgets::Error.exception_for(rs), Phidgets::FFI.error_description(rs)
25
+ end
26
+ else
27
+ super(method, *args, &block)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,38 @@
1
+ module Phidgets
2
+ module FFI
3
+
4
+ FrequencyCounterFilterTypes = enum(
5
+ :filter_type_zero_crossing, 1,
6
+ :filter_type_logic_level,
7
+ :filter_type_unknown
8
+ )
9
+
10
+ attach_function :CPhidgetFrequencyCounter_create, [:phid], :int
11
+ attach_function :CPhidgetFrequencyCounter_getFrequencyInputCount, [:phid, :pointer], :int
12
+ attach_function :CPhidgetFrequencyCounter_getFrequency, [:phid, :int, :pointer], :int
13
+ attach_function :CPhidgetFrequencyCounter_getTotalTime, [:phid, :int, :pointer], :int
14
+ attach_function :CPhidgetFrequencyCounter_getTotalCount, [:phid, :int, :pointer], :int
15
+ attach_function :CPhidgetFrequencyCounter_setTimeout, [:phid, :int, :int], :int
16
+ attach_function :CPhidgetFrequencyCounter_getTimeout, [:phid, :int, :pointer], :int
17
+ attach_function :CPhidgetFrequencyCounter_setEnabled, [:phid, :int, :int], :int
18
+ attach_function :CPhidgetFrequencyCounter_getEnabled, [:phid, :int, :pointer], :int
19
+ attach_function :CPhidgetFrequencyCounter_getFilter, [:phid, :int, :pointer], :int
20
+ attach_function :CPhidgetFrequencyCounter_setFilter, [:phid, :int, FrequencyCounterFilterTypes], :int
21
+ attach_function :CPhidgetFrequencyCounter_reset, [:phid, :int], :int
22
+
23
+ callback :CPhidgetFrequencyCounter_set_OnCount_Callback, [:phid, :user_ptr, :int, :int, :int], :int
24
+ attach_function :CPhidgetFrequencyCounter_set_OnCount_Handler, [:phid, :CPhidgetFrequencyCounter_set_OnCount_Callback, :user_ptr], :int
25
+
26
+ module CPhidgetFrequencyCounter
27
+ def self.method_missing(method, *args, &block)
28
+ if ::Phidgets::FFI.respond_to?("CPhidgetFrequencyCounter_#{method}".to_sym)
29
+ if (rs = ::Phidgets::FFI.send("CPhidgetFrequencyCounter_#{method}".to_sym, *args, &block)) != 0
30
+ raise Phidgets::Error.exception_for(rs), Phidgets::FFI.error_description(rs)
31
+ end
32
+ else
33
+ super(method, *args, &block)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end