wiringpi-ruby 2.0.0 → 2.1.3

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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/ext/wiringpi/WiringPi/devLib/ds1302.c +240 -0
  3. data/ext/wiringpi/WiringPi/devLib/ds1302.h +44 -0
  4. data/ext/wiringpi/WiringPi/devLib/font.h +2577 -0
  5. data/ext/wiringpi/WiringPi/devLib/gertboard.c +164 -0
  6. data/ext/wiringpi/WiringPi/devLib/gertboard.h +45 -0
  7. data/ext/wiringpi/WiringPi/devLib/lcd.c +495 -0
  8. data/ext/wiringpi/WiringPi/devLib/lcd.h +52 -0
  9. data/ext/wiringpi/WiringPi/devLib/lcd128x64.c +673 -0
  10. data/ext/wiringpi/WiringPi/devLib/lcd128x64.h +39 -0
  11. data/ext/wiringpi/WiringPi/devLib/maxdetect.c +238 -0
  12. data/ext/wiringpi/WiringPi/devLib/maxdetect.h +40 -0
  13. data/ext/wiringpi/WiringPi/devLib/piFace.c +112 -0
  14. data/ext/wiringpi/WiringPi/devLib/piFace.h +32 -0
  15. data/ext/wiringpi/WiringPi/devLib/piFaceOld.c +177 -0
  16. data/ext/wiringpi/WiringPi/devLib/piGlow.c +118 -0
  17. data/ext/wiringpi/WiringPi/devLib/piGlow.h +45 -0
  18. data/ext/wiringpi/WiringPi/devLib/piNes.c +113 -0
  19. data/ext/wiringpi/WiringPi/devLib/piNes.h +45 -0
  20. data/ext/wiringpi/WiringPi/devLib/scrollPhat.c +430 -0
  21. data/ext/wiringpi/WiringPi/devLib/scrollPhat.h +39 -0
  22. data/ext/wiringpi/WiringPi/devLib/scrollPhatFont.h +544 -0
  23. data/ext/wiringpi/WiringPi/examples/Gertboard/7segments.c +221 -0
  24. data/ext/wiringpi/WiringPi/examples/Gertboard/buttons.c +83 -0
  25. data/ext/wiringpi/WiringPi/examples/Gertboard/gertboard.c +96 -0
  26. data/ext/wiringpi/WiringPi/examples/Gertboard/record.c +60 -0
  27. data/ext/wiringpi/WiringPi/examples/Gertboard/temperature.c +78 -0
  28. data/ext/wiringpi/WiringPi/examples/Gertboard/voltmeter.c +73 -0
  29. data/ext/wiringpi/WiringPi/examples/Gertboard/vumeter.c +152 -0
  30. data/ext/wiringpi/WiringPi/examples/PiFace/blink.c +59 -0
  31. data/ext/wiringpi/WiringPi/examples/PiFace/buttons.c +103 -0
  32. data/ext/wiringpi/WiringPi/examples/PiFace/ladder.c +337 -0
  33. data/ext/wiringpi/WiringPi/examples/PiFace/metro.c +111 -0
  34. data/ext/wiringpi/WiringPi/examples/PiFace/motor.c +120 -0
  35. data/ext/wiringpi/WiringPi/examples/PiFace/reaction.c +194 -0
  36. data/ext/wiringpi/WiringPi/examples/PiGlow/piGlow0.c +51 -0
  37. data/ext/wiringpi/WiringPi/examples/PiGlow/piGlow1.c +258 -0
  38. data/ext/wiringpi/WiringPi/examples/PiGlow/piglow.c +176 -0
  39. data/ext/wiringpi/WiringPi/examples/blink-thread.c +61 -0
  40. data/ext/wiringpi/WiringPi/examples/blink.c +48 -0
  41. data/ext/wiringpi/WiringPi/examples/blink12.c +111 -0
  42. data/ext/wiringpi/WiringPi/examples/blink12drcs.c +125 -0
  43. data/ext/wiringpi/WiringPi/examples/blink6drcs.c +115 -0
  44. data/ext/wiringpi/WiringPi/examples/blink8-drcn.c +61 -0
  45. data/ext/wiringpi/WiringPi/examples/blink8.c +57 -0
  46. data/ext/wiringpi/WiringPi/examples/clock.c +201 -0
  47. data/ext/wiringpi/WiringPi/examples/delayTest.c +102 -0
  48. data/ext/wiringpi/WiringPi/examples/ds1302.c +238 -0
  49. data/ext/wiringpi/WiringPi/examples/header.h +23 -0
  50. data/ext/wiringpi/WiringPi/examples/isr-osc.c +118 -0
  51. data/ext/wiringpi/WiringPi/examples/isr.c +110 -0
  52. data/ext/wiringpi/WiringPi/examples/lcd-adafruit.c +347 -0
  53. data/ext/wiringpi/WiringPi/examples/lcd.c +286 -0
  54. data/ext/wiringpi/WiringPi/examples/lowPower.c +68 -0
  55. data/ext/wiringpi/WiringPi/examples/max31855.c +60 -0
  56. data/ext/wiringpi/WiringPi/examples/nes.c +67 -0
  57. data/ext/wiringpi/WiringPi/examples/okLed.c +82 -0
  58. data/ext/wiringpi/WiringPi/examples/pwm.c +58 -0
  59. data/ext/wiringpi/WiringPi/examples/q2w/binary.c +79 -0
  60. data/ext/wiringpi/WiringPi/examples/q2w/blink-io.c +61 -0
  61. data/ext/wiringpi/WiringPi/examples/q2w/blink.c +50 -0
  62. data/ext/wiringpi/WiringPi/examples/q2w/bright.c +59 -0
  63. data/ext/wiringpi/WiringPi/examples/q2w/button.c +63 -0
  64. data/ext/wiringpi/WiringPi/examples/q2w/volts.c +62 -0
  65. data/ext/wiringpi/WiringPi/examples/rht03.c +86 -0
  66. data/ext/wiringpi/WiringPi/examples/scrollPhat/scphat.c +230 -0
  67. data/ext/wiringpi/WiringPi/examples/scrollPhat/test.c +115 -0
  68. data/ext/wiringpi/WiringPi/examples/serialRead.c +48 -0
  69. data/ext/wiringpi/WiringPi/examples/serialTest.c +75 -0
  70. data/ext/wiringpi/WiringPi/examples/servo.c +57 -0
  71. data/ext/wiringpi/WiringPi/examples/softPwm.c +89 -0
  72. data/ext/wiringpi/WiringPi/examples/softTone.c +54 -0
  73. data/ext/wiringpi/WiringPi/examples/speed.c +95 -0
  74. data/ext/wiringpi/WiringPi/examples/spiSpeed.c +118 -0
  75. data/ext/wiringpi/WiringPi/examples/wfi.c +161 -0
  76. data/ext/wiringpi/WiringPi/gpio/gpio.c +1538 -0
  77. data/ext/wiringpi/WiringPi/gpio/readall.c +403 -0
  78. data/ext/wiringpi/WiringPi/version.h +3 -0
  79. data/ext/wiringpi/WiringPi/wiringPi/ads1115.c +293 -0
  80. data/ext/wiringpi/WiringPi/wiringPi/ads1115.h +55 -0
  81. data/ext/wiringpi/WiringPi/wiringPi/bmp180.c +237 -0
  82. data/ext/wiringpi/WiringPi/wiringPi/bmp180.h +34 -0
  83. data/ext/wiringpi/WiringPi/wiringPi/drcNet.c +405 -0
  84. data/ext/wiringpi/WiringPi/wiringPi/drcNet.h +42 -0
  85. data/ext/wiringpi/WiringPi/wiringPi/drcSerial.c +196 -0
  86. data/ext/wiringpi/WiringPi/wiringPi/drcSerial.h +33 -0
  87. data/ext/wiringpi/WiringPi/wiringPi/ds18b20.c +146 -0
  88. data/ext/wiringpi/WiringPi/wiringPi/ds18b20.h +34 -0
  89. data/ext/wiringpi/WiringPi/wiringPi/htu21d.c +150 -0
  90. data/ext/wiringpi/WiringPi/wiringPi/htu21d.h +34 -0
  91. data/ext/wiringpi/WiringPi/wiringPi/max31855.c +99 -0
  92. data/ext/wiringpi/WiringPi/wiringPi/max31855.h +33 -0
  93. data/ext/wiringpi/WiringPi/wiringPi/max5322.c +84 -0
  94. data/ext/wiringpi/WiringPi/wiringPi/max5322.h +33 -0
  95. data/ext/wiringpi/WiringPi/wiringPi/mcp23008.c +149 -0
  96. data/ext/wiringpi/WiringPi/wiringPi/mcp23008.h +33 -0
  97. data/ext/wiringpi/WiringPi/wiringPi/mcp23016.c +164 -0
  98. data/ext/wiringpi/WiringPi/wiringPi/mcp23016.h +33 -0
  99. data/ext/wiringpi/WiringPi/wiringPi/mcp23016reg.h +48 -0
  100. data/ext/wiringpi/WiringPi/wiringPi/mcp23017.c +195 -0
  101. data/ext/wiringpi/WiringPi/wiringPi/mcp23017.h +33 -0
  102. data/ext/wiringpi/WiringPi/wiringPi/mcp23s08.c +188 -0
  103. data/ext/wiringpi/WiringPi/wiringPi/mcp23s08.h +33 -0
  104. data/ext/wiringpi/WiringPi/wiringPi/mcp23s17.c +235 -0
  105. data/ext/wiringpi/WiringPi/wiringPi/mcp23s17.h +33 -0
  106. data/ext/wiringpi/WiringPi/wiringPi/mcp23x08.h +73 -0
  107. data/ext/wiringpi/WiringPi/wiringPi/mcp23x0817.h +87 -0
  108. data/ext/wiringpi/WiringPi/wiringPi/mcp3002.c +76 -0
  109. data/ext/wiringpi/WiringPi/wiringPi/mcp3002.h +33 -0
  110. data/ext/wiringpi/WiringPi/wiringPi/mcp3004.c +76 -0
  111. data/ext/wiringpi/WiringPi/wiringPi/mcp3004.h +33 -0
  112. data/ext/wiringpi/WiringPi/wiringPi/mcp3422.c +125 -0
  113. data/ext/wiringpi/WiringPi/wiringPi/mcp3422.h +43 -0
  114. data/ext/wiringpi/WiringPi/wiringPi/mcp4802.c +76 -0
  115. data/ext/wiringpi/WiringPi/wiringPi/mcp4802.h +33 -0
  116. data/ext/wiringpi/WiringPi/wiringPi/pcf8574.c +126 -0
  117. data/ext/wiringpi/WiringPi/wiringPi/pcf8574.h +33 -0
  118. data/ext/wiringpi/WiringPi/wiringPi/pcf8591.c +90 -0
  119. data/ext/wiringpi/WiringPi/wiringPi/pcf8591.h +33 -0
  120. data/ext/wiringpi/WiringPi/wiringPi/piHiPri.c +51 -0
  121. data/ext/wiringpi/WiringPi/wiringPi/piThread.c +63 -0
  122. data/ext/wiringpi/WiringPi/wiringPi/pseudoPins.c +95 -0
  123. data/ext/wiringpi/WiringPi/wiringPi/pseudoPins.h +26 -0
  124. data/ext/wiringpi/WiringPi/wiringPi/rht03.c +252 -0
  125. data/ext/wiringpi/WiringPi/wiringPi/rht03.h +25 -0
  126. data/ext/wiringpi/WiringPi/wiringPi/sn3218.c +75 -0
  127. data/ext/wiringpi/WiringPi/wiringPi/sn3218.h +33 -0
  128. data/ext/wiringpi/WiringPi/wiringPi/softPwm.c +186 -0
  129. data/ext/wiringpi/WiringPi/wiringPi/softPwm.h +35 -0
  130. data/ext/wiringpi/WiringPi/wiringPi/softServo.c +211 -0
  131. data/ext/wiringpi/WiringPi/wiringPi/softServo.h +35 -0
  132. data/ext/wiringpi/WiringPi/wiringPi/softTone.c +150 -0
  133. data/ext/wiringpi/WiringPi/wiringPi/softTone.h +39 -0
  134. data/ext/wiringpi/WiringPi/wiringPi/sr595.c +109 -0
  135. data/ext/wiringpi/WiringPi/wiringPi/sr595.h +34 -0
  136. data/ext/wiringpi/WiringPi/wiringPi/wiringPi.c +2507 -0
  137. data/ext/wiringpi/WiringPi/wiringPi/wiringPi.h +269 -0
  138. data/ext/wiringpi/WiringPi/wiringPi/wiringPiI2C.c +233 -0
  139. data/ext/wiringpi/WiringPi/wiringPi/wiringPiI2C.h +42 -0
  140. data/ext/wiringpi/WiringPi/wiringPi/wiringPiSPI.c +144 -0
  141. data/ext/wiringpi/WiringPi/wiringPi/wiringPiSPI.h +36 -0
  142. data/ext/wiringpi/WiringPi/wiringPi/wiringSerial.c +225 -0
  143. data/ext/wiringpi/WiringPi/wiringPi/wiringSerial.h +38 -0
  144. data/ext/wiringpi/WiringPi/wiringPi/wiringShift.c +83 -0
  145. data/ext/wiringpi/WiringPi/wiringPi/wiringShift.h +41 -0
  146. data/ext/wiringpi/WiringPi/wiringPi/wpiExtensions.c +928 -0
  147. data/ext/wiringpi/WiringPi/wiringPi/wpiExtensions.h +26 -0
  148. data/ext/wiringpi/WiringPi/wiringPiD/daemonise.c +82 -0
  149. data/ext/wiringpi/WiringPi/wiringPiD/daemonise.h +9 -0
  150. data/ext/wiringpi/WiringPi/wiringPiD/drcNetCmd.h +43 -0
  151. data/ext/wiringpi/WiringPi/wiringPiD/network.c +330 -0
  152. data/ext/wiringpi/WiringPi/wiringPiD/network.h +31 -0
  153. data/ext/wiringpi/WiringPi/wiringPiD/runRemote.c +126 -0
  154. data/ext/wiringpi/WiringPi/wiringPiD/runRemote.h +29 -0
  155. data/ext/wiringpi/WiringPi/wiringPiD/wiringpid.c +382 -0
  156. data/ext/wiringpi/wiringpi_wrap.c +636 -219
  157. data/lib/wiringpi.rb +25 -12
  158. data/lib/wiringpi/gpio.rb +90 -83
  159. data/lib/wiringpi/i2c.rb +29 -22
  160. data/lib/wiringpi/modules/mcp23017.rb +15 -0
  161. data/lib/wiringpi/modules/mcp23s17.rb +16 -0
  162. data/lib/wiringpi/scrollphat.rb +14 -14
  163. data/lib/wiringpi/serial.rb +8 -18
  164. data/lib/wiringpi/spi.rb +14 -11
  165. data/lib/wiringpi/watch.rb +24 -0
  166. metadata +160 -4
  167. data/lib/wiringpi/event.rb +0 -21
  168. data/lib/wiringpi/mcp23x17.rb +0 -31
data/lib/wiringpi.rb CHANGED
@@ -1,10 +1,23 @@
1
1
  require 'wiringpi/wiringpi'
2
+
2
3
  module WiringPi
3
4
  extend self
4
5
 
6
+ # GPIO WiringPi PIN layout mode
7
+ GPIO_WPI = 0
8
+ GPIO_NORMAL = 1
9
+ GPIO_PHYSICAL = 2
10
+ GPIO_SYSTEM = 3
11
+
12
+ # GPIO signal
5
13
  HIGH = 1
6
14
  LOW = 0
7
15
 
16
+ # GPIO signal event
17
+ FALLING = :falling
18
+ RISING = :rising
19
+
20
+ # PIN mode
8
21
  INPUT = 0
9
22
  OUTPUT = 1
10
23
  PWM_OUTPUT = 1
@@ -18,25 +31,25 @@ module WiringPi
18
31
 
19
32
  class Modules
20
33
  class ModuleBase
21
-
22
- @name = 'Unknown'
23
- @pin_base = 0
24
- @pin_count = 0
25
- @pin_end = 0
26
-
27
34
  attr_reader :name, :pin_base, :pin_count, :pin_end
28
35
 
36
+ def initialize
37
+ @name = 'Unknown'
38
+ @pin_base = 0
39
+ @pin_count = 0
40
+ @pin_end = 0
41
+ end
42
+
29
43
  def new
30
44
  @pin_end = @pin_base + @pin_count
31
- updateName
45
+ update_name
32
46
  end
33
47
 
34
- def updateName
35
- @name = ' at offset ' + @pin_base.to_s
48
+ def update_name
49
+ @name = " at offset #{@pin_base}"
36
50
  end
37
-
38
51
  end
39
52
  end
40
-
41
53
  end
42
- Dir[File.dirname(__FILE__) + '/wiringpi/*.rb'].each {|file| require file }
54
+
55
+ Dir[File.dirname(__FILE__) + '/wiringpi/**/*.rb'].each { |file| require file }
data/lib/wiringpi/gpio.rb CHANGED
@@ -1,139 +1,146 @@
1
1
  module WiringPi
2
2
  class GPIO
3
-
4
- @modules = Array.new
5
- @pins = Array.new
6
-
7
3
  attr_reader :modules, :pins
8
4
 
9
- def initialize(&block)
10
- Wiringpi.wiringPiSetup
11
- @pins = Array.new
5
+ def initialize(pin_layout = GPIO_WPI, &block)
6
+ @pin_layout = pin_layout
7
+ @pins = []
8
+ @modules = []
9
+ setup_wiring_pi
12
10
  instance_eval &block if block_given?
13
11
  end
14
12
 
15
13
  def read_byte(starting_pin)
16
- bits = Array.new
17
- 8.times do |time|
18
- bits << Wiringpi.digitalRead(starting_pin + time)
19
- end
20
- bits.join
14
+ 8.times.map { |time| Wiringpi.digitalRead(starting_pin + time) }.join
21
15
  end
22
16
 
23
17
  def write_byte(starting_pin, byte)
24
- byte = byte.to_s(2) unless byte.length = 8
18
+ bits = byte.to_s(2) unless byte.length == 8
25
19
  offset = starting_pin
26
- byte.each_char do |bit|
20
+ bits.each_char do |bit|
27
21
  Wiringpi.digitalWrite(offset, bit)
28
22
  offset += 1
29
23
  end
30
24
  end
31
25
 
32
26
  def digital_read(pin)
33
- if pin.respond_to?(:each)
34
- pin.collect do |pin|
35
- Wiringpi.digitalRead(pin)
36
- end
37
- else
38
- Wiringpi.digitalRead(pin)
39
- end
27
+ pins = [pin] unless pin.is_a?(Array)
28
+ res = pins.collect { |pin| Wiringpi.digitalRead(pin) }
29
+ res.count == 1 ? res.first : res
40
30
  end
41
31
 
42
32
  def digital_write(pin, value)
43
- if pin.respond_to?(:each)
44
- pin.each do |pin|
45
- Wiringpi.digitalWrite(pin, value)
46
- end
47
- else
48
- Wiringpi.digitalWrite(pin, value)
49
- end
33
+ pins = [pin] unless pin.is_a?(Array)
34
+ pins.each { |pin| Wiringpi.digitalWrite(pin, value) }
35
+ end
36
+
37
+ def analog_read(pin)
38
+ pins = [pin] unless pin.is_a?(Array)
39
+ res = pins.collect { |pin| Wiringpi.analogRead(pin) }
40
+ res.count == 1 ? res.first : res
41
+ end
42
+
43
+ def analog_write(pin, value)
44
+ pins = [pin] unless pin.is_a?(Array)
45
+ pins.each { |pin| Wiringpi.analogWrite(pin, value) }
50
46
  end
51
47
 
52
48
  def pin_mode(pin, mode)
53
49
  Wiringpi.pinMode(pin, mode)
54
50
  end
55
51
 
56
- def pull_up_dn_control(pin,mode)
52
+ def pull_up_dn_control(pin, mode)
57
53
  Wiringpi.pullUpDnControl(pin, mode)
58
54
  end
59
55
 
60
- def delay(ms)
61
- Wiringpi.delay(ms)
62
- end
56
+ def delay(ms)
57
+ Wiringpi.delay(ms)
58
+ end
63
59
 
64
- def delay_microseconds(ms)
65
- Wiringpi.delayMicroseconds(ms)
66
- end
60
+ def delay_microseconds(ms)
61
+ Wiringpi.delayMicroseconds(ms)
62
+ end
67
63
 
68
- def millis()
69
- return Wiringpi.millis()
70
- end
64
+ def millis
65
+ Wiringpi.millis
66
+ end
71
67
 
72
- def micros()
73
- return Wiringpi.micros()
74
- end
68
+ def micros
69
+ Wiringpi.micros
70
+ end
75
71
 
76
- def pi_board_rev()
77
- return Wiringpi.piBoardRev()
78
- end
72
+ # NOTE: deprecated call to Wiringpi.piBoardRev
73
+ def pi_board_rev
74
+ Wiringpi.piBoardRev
75
+ end
79
76
 
80
- def wpi_pin_to_gpio(pin)
81
- return Wiringpi.wpiPinToGpio(pin)
82
- end
77
+ def wpi_pin_to_gpio(pin)
78
+ Wiringpi.wpiPinToGpio(pin)
79
+ end
83
80
 
84
- def phys_pin_to_gpio(pin)
85
- return Wiringpi.physPinToGpio(pin)
86
- end
81
+ def phys_pin_to_gpio(pin)
82
+ Wiringpi.physPinToGpio(pin)
83
+ end
87
84
 
88
- def pwm_set_mode(mode)
89
- return Wiringpi.pwmSetMode(mode)
90
- end
85
+ def pwm_set_mode(mode)
86
+ Wiringpi.pwmSetMode(mode)
87
+ end
91
88
 
92
- def pwm_set_range(range)
93
- return Wiringpi.pwmSetRange(range)
94
- end
89
+ def pwm_set_range(range)
90
+ Wiringpi.pwmSetRange(range)
91
+ end
95
92
 
96
- def pwm_set_clock(divisor)
97
- return Wiringpi.pwmSetClock(divisor)
98
- end
93
+ def pwm_set_clock(divisor)
94
+ Wiringpi.pwmSetClock(divisor)
95
+ end
99
96
 
100
- def soft_pwm_create(pin, initial_value, pwm_range)
101
- return Wiringpi.softPwmCreate(pin, initial_value, pwm_range)
102
- end
97
+ def soft_pwm_create(pin, initial_value, pwm_range)
98
+ Wiringpi.softPwmCreate(pin, initial_value, pwm_range)
99
+ end
103
100
 
104
- def soft_pwm_write(pin, value)
105
- Wiringpi.softPwmWrite(pin, value)
106
- end
101
+ def soft_pwm_write(pin, value)
102
+ Wiringpi.softPwmWrite(pin, value)
103
+ end
107
104
 
108
- def gpio_clock_set(pin, freq)
109
- return Wiringpi.gpioClockSet(pin, freq)
110
- end
105
+ def gpio_clock_set(pin, freq)
106
+ Wiringpi.gpioClockSet(pin, freq)
107
+ end
111
108
 
112
- def wait_for_interrupt(pin, ms)
113
- Wiringpi.waitForInterrupt(pin, ms)
114
- end
109
+ def wait_for_interrupt(pin, ms)
110
+ Wiringpi.waitForInterrupt(pin, ms)
111
+ end
115
112
 
116
- def wiringpi_isr(pin, mode, fn)
117
- Wiringpi.wiringPiISR(pin, mode, fn)
118
- end
113
+ def wiringpi_isr(pin, mode, fn)
114
+ Wiringpi.wiringPiISR(pin, mode, fn)
115
+ end
119
116
 
120
- def shift_out(dpin, cpin, order, val )
121
- Wiringpi.shiftOut(dpin,cpin,order,val)
122
- end
117
+ def shift_out(dpin, cpin, order, val )
118
+ Wiringpi.shiftOut(dpin,cpin,order,val)
119
+ end
123
120
 
124
- def shift_in(dpin, cpin, order)
125
- Wiringpi.shiftIn(dpin,cpin,order)
126
- end
121
+ def shift_in(dpin, cpin, order)
122
+ Wiringpi.shiftIn(dpin,cpin,order)
123
+ end
127
124
 
128
125
  def add_module(module_instance)
129
- @modules = Array.new if @modules.nil?
130
-
131
126
  @modules << module_instance
132
- puts 'Added module ' + module_instance.name.to_s
127
+ puts "Added module #{module_instance.name}"
133
128
 
134
129
  module_instance.pin_count.times do |offset|
135
130
  @pins[offset + module_instance.pin_base] = 'ENABLED'
136
131
  end
137
132
  end
133
+
134
+ private
135
+
136
+ def setup_wiring_pi
137
+ case @pin_layout
138
+ when GPIO_WPI; Wiringpi.wiringPiSetup
139
+ when GPIO_NORMAL; Wiringpi.wiringPiSetupGpio
140
+ when GPIO_PHYSICAL; Wiringpi.wiringPiSetupPhys
141
+ when GPIO_SYSTEM; Wiringpi.wiringPiSetupSys
142
+ else raise 'unknown pin layout to setup'
143
+ end
144
+ end
138
145
  end
139
146
  end
data/lib/wiringpi/i2c.rb CHANGED
@@ -1,26 +1,33 @@
1
1
  module WiringPi
2
2
  class I2C
3
- @device_id = 0
4
- def initialize(device_address)
5
- @device_id = Wiringpi.wiringPiI2CSetup(device_address)
6
- end
7
- def read()
8
- return Wiringpi.wiringPiI2CRead(@device_id)
9
- end
10
- def write(data)
11
- return Wiringpi.wiringPiI2CWrite(@device_id,data)
12
- end
13
- def read_reg_8(reg)
14
- return Wiringpi.wiringPiI2CReadReg8(@device_id,reg)
15
- end
16
- def write_reg_8(reg,data)
17
- return Wiringpi.wiringPiI2CWriteReg8(@device_id,reg,data)
18
- end
19
- def read_reg_16(reg)
20
- return Wiringpi.wiringPiI2CReadReg16(@device_id,reg)
21
- end
22
- def write_reg_16(reg,data)
23
- return Wiringpi.wiringPiI2CWriteReg16(@device_id,reg,data)
24
- end
3
+ attr_reader :device_id
4
+
5
+ def initialize(device_address)
6
+ @device_id = Wiringpi.wiringPiI2CSetup(device_address)
7
+ end
8
+
9
+ def read
10
+ Wiringpi.wiringPiI2CRead(@device_id)
11
+ end
12
+
13
+ def write(data)
14
+ Wiringpi.wiringPiI2CWrite(@device_id, data)
15
+ end
16
+
17
+ def read_reg_8(reg)
18
+ Wiringpi.wiringPiI2CReadReg8(@device_id, reg)
19
+ end
20
+
21
+ def write_reg_8(reg, data)
22
+ Wiringpi.wiringPiI2CWriteReg8(@device_id, reg, data)
23
+ end
24
+
25
+ def read_reg_16(reg)
26
+ Wiringpi.wiringPiI2CReadReg16(@device_id, reg)
27
+ end
28
+
29
+ def write_reg_16(reg, data)
30
+ Wiringpi.wiringPiI2CWriteReg16(@device_id, reg, data)
31
+ end
25
32
  end
26
33
  end
@@ -0,0 +1,15 @@
1
+ module WiringPi
2
+ class Modules
3
+ class Mcp23017 < ModuleBase
4
+ attr_reader :i2c_address
5
+
6
+ def initialize(pin_base, i2c_address = 0x0)
7
+ super
8
+ @pin_base = pin_base
9
+ @pin_count = 16
10
+ @i2c_address = i2c_address
11
+ Wiringpi.mcp23017Setup(pin_base, i2c_address)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ module WiringPi
2
+ class Modules
3
+ class Mcp23s17 < ModuleBase
4
+ attr_reader :spi_port, :device_id
5
+
6
+ def initialize(pin_base, spi_port, device_id)
7
+ super
8
+ @pin_base = pin_base
9
+ @pin_count = 16
10
+ @spi_port = spi_port || 0
11
+ @device_id = device_id || 0
12
+ Wiringpi.mcp23s17Setup(pin_base, spi_port, device_id)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,35 +1,35 @@
1
1
  module WiringPi
2
2
  class ScrollPhat
3
- def initialize()
4
- Wiringpi.scrollPhatSetup()
3
+ def initialize
4
+ Wiringpi.scrollPhatSetup
5
5
  end
6
6
 
7
7
  def printf(text)
8
8
  Wiringpi.scrollPhatPrintf(text)
9
9
  end
10
10
 
11
- def point(x, y, colour)
12
- Wiringpi.scrollPhatPoint(x, y, colour)
11
+ def point(x, y, color)
12
+ Wiringpi.scrollPhatPoint(x, y, color)
13
13
  end
14
14
 
15
- def line(x0, y0, x1, y1, colour)
16
- Wiringpi.scrollPhatLine(x0, y0, x1, y1, colour)
15
+ def line(x0, y0, x1, y1, color)
16
+ Wiringpi.scrollPhatLine(x0, y0, x1, y1, color)
17
17
  end
18
18
 
19
- def lineTo(x, y, colour)
20
- Wiringpi.scrollPhatLineTo(x, y, colour)
19
+ def lineTo(x, y, color)
20
+ Wiringpi.scrollPhatLineTo(x, y, color)
21
21
  end
22
22
 
23
- def rectangle(x1, y1, x2, y2, colour)
24
- Wiringpi.scrollPhatRectangle(x1, y1, x2, y2, colour)
23
+ def rectangle(x1, y1, x2, y2, color)
24
+ Wiringpi.scrollPhatRectangle(x1, y1, x2, y2, color)
25
25
  end
26
26
 
27
- def update()
28
- Wiringpi.scrollPhatUpdate()
27
+ def update
28
+ Wiringpi.scrollPhatUpdate
29
29
  end
30
30
 
31
- def clear()
32
- Wiringpi.scrollPhatClear()
31
+ def clear
32
+ Wiringpi.scrollPhatClear
33
33
  end
34
34
 
35
35
  def putChar(char)
@@ -1,49 +1,39 @@
1
1
  module WiringPi
2
2
  class Serial
3
-
3
+ attr_reader :id, :device, :baud
4
4
  @id = 0
5
5
  @device = '/dev/ttyAMA0'
6
6
  @baud = 9600
7
7
 
8
- def initialize(device='/dev/ttyAMA0', baud=9600)
9
-
8
+ def initialize(device = '/dev/ttyAMA0', baud = 9600)
9
+ @id = Wiringpi.serialOpen(device, baud)
10
10
  @device = device
11
11
  @baud = baud
12
-
13
- @id = Wiringpi.serialOpen(@device, @baud)
14
-
15
12
  end
16
13
 
17
14
  def serial_close
18
-
19
15
  Wiringpi.serialClose(@id)
20
- @id = 0
21
-
16
+ @id = nil
22
17
  end
23
18
 
24
19
  def serial_put_char(char)
25
-
20
+ raise 'serial connection is closed' if @id.nil?
26
21
  Wiringpi.serialPutchar(@id, char)
27
-
28
22
  end
29
23
 
30
24
  def serial_puts(string)
31
-
25
+ raise 'serial connection is closed' if @id.nil?
32
26
  Wiringpi.serialPuts(@id, string)
33
-
34
27
  end
35
28
 
36
29
  def serial_data_avail
37
-
30
+ raise 'serial connection is closed' if @id.nil?
38
31
  Wiringpi.serialDataAvail(@id)
39
-
40
32
  end
41
33
 
42
34
  def serial_get_char
43
-
35
+ raise 'serial connection is closed' if @id.nil?
44
36
  Wiringpi.serialGetchar(@id)
45
-
46
37
  end
47
-
48
38
  end
49
39
  end