wiringpi2 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. data/ext/wiringpi/WiringPi/examples/blink.c +50 -0
  2. data/ext/wiringpi/WiringPi/examples/delayTest.c +107 -0
  3. data/ext/wiringpi/WiringPi/examples/ds1302.c +238 -0
  4. data/ext/wiringpi/WiringPi/examples/gertboard.c +94 -0
  5. data/ext/wiringpi/WiringPi/examples/header.h +23 -0
  6. data/ext/wiringpi/WiringPi/examples/isr-osc.c +118 -0
  7. data/ext/wiringpi/WiringPi/examples/isr.c +99 -0
  8. data/ext/wiringpi/WiringPi/examples/lcd.c +129 -0
  9. data/ext/wiringpi/WiringPi/examples/nes.c +67 -0
  10. data/ext/wiringpi/WiringPi/examples/okLed.c +83 -0
  11. data/ext/wiringpi/WiringPi/examples/piface.c +74 -0
  12. data/ext/wiringpi/WiringPi/examples/pwm.c +93 -0
  13. data/ext/wiringpi/WiringPi/examples/serialRead.c +48 -0
  14. data/ext/wiringpi/WiringPi/examples/serialTest.c +75 -0
  15. data/ext/wiringpi/WiringPi/examples/servo.c +57 -0
  16. data/ext/wiringpi/WiringPi/examples/speed.c +123 -0
  17. data/ext/wiringpi/WiringPi/examples/test1.c +111 -0
  18. data/ext/wiringpi/WiringPi/examples/test2.c +58 -0
  19. data/ext/wiringpi/WiringPi/examples/tone.c +59 -0
  20. data/ext/wiringpi/WiringPi/examples/wfi.c +161 -0
  21. data/ext/wiringpi/WiringPi/gpio/gpio.c +1371 -0
  22. data/ext/wiringpi/WiringPi/wiringPi/ds1302.c +239 -0
  23. data/ext/wiringpi/WiringPi/wiringPi/ds1302.h +44 -0
  24. data/ext/wiringpi/WiringPi/wiringPi/gertboard.c +166 -0
  25. data/ext/wiringpi/WiringPi/wiringPi/gertboard.h +40 -0
  26. data/ext/wiringpi/WiringPi/wiringPi/lcd.c +380 -0
  27. data/ext/wiringpi/WiringPi/wiringPi/lcd.h +46 -0
  28. data/ext/wiringpi/WiringPi/wiringPi/mcp23008.c +155 -0
  29. data/ext/wiringpi/WiringPi/wiringPi/mcp23008.h +33 -0
  30. data/ext/wiringpi/WiringPi/wiringPi/mcp23017.c +195 -0
  31. data/ext/wiringpi/WiringPi/wiringPi/mcp23017.h +33 -0
  32. data/ext/wiringpi/WiringPi/wiringPi/mcp23s08.c +195 -0
  33. data/ext/wiringpi/WiringPi/wiringPi/mcp23s08.h +33 -0
  34. data/ext/wiringpi/WiringPi/wiringPi/mcp23s17.c +236 -0
  35. data/ext/wiringpi/WiringPi/wiringPi/mcp23s17.h +33 -0
  36. data/ext/wiringpi/WiringPi/wiringPi/mcp23x08.h +73 -0
  37. data/ext/wiringpi/WiringPi/wiringPi/mcp23x0817.h +87 -0
  38. data/ext/wiringpi/WiringPi/wiringPi/piFace.c +179 -0
  39. data/ext/wiringpi/WiringPi/wiringPi/piFace.h +32 -0
  40. data/ext/wiringpi/WiringPi/wiringPi/piHiPri.c +50 -0
  41. data/ext/wiringpi/WiringPi/wiringPi/piNes.c +113 -0
  42. data/ext/wiringpi/WiringPi/wiringPi/piNes.h +45 -0
  43. data/ext/wiringpi/WiringPi/wiringPi/piThread.c +63 -0
  44. data/ext/wiringpi/WiringPi/wiringPi/softPwm.c +130 -0
  45. data/ext/wiringpi/WiringPi/wiringPi/softPwm.h +34 -0
  46. data/ext/wiringpi/WiringPi/wiringPi/softServo.c +211 -0
  47. data/ext/wiringpi/WiringPi/wiringPi/softServo.h +35 -0
  48. data/ext/wiringpi/WiringPi/wiringPi/softTone.c +121 -0
  49. data/ext/wiringpi/WiringPi/wiringPi/softTone.h +38 -0
  50. data/ext/wiringpi/WiringPi/wiringPi/sr595.c +108 -0
  51. data/ext/wiringpi/WiringPi/wiringPi/sr595.h +33 -0
  52. data/ext/wiringpi/WiringPi/wiringPi/wiringPi.c +1664 -0
  53. data/ext/wiringpi/WiringPi/wiringPi/wiringPi.h +168 -0
  54. data/ext/wiringpi/WiringPi/wiringPi/wiringPiI2C.c +227 -0
  55. data/ext/wiringpi/WiringPi/wiringPi/wiringPiI2C.h +42 -0
  56. data/ext/wiringpi/WiringPi/wiringPi/wiringPiSPI.c +119 -0
  57. data/ext/wiringpi/WiringPi/wiringPi/wiringPiSPI.h +35 -0
  58. data/ext/wiringpi/WiringPi/wiringPi/wiringSerial.c +213 -0
  59. data/ext/wiringpi/WiringPi/wiringPi/wiringSerial.h +38 -0
  60. data/ext/wiringpi/WiringPi/wiringPi/wiringShift.c +83 -0
  61. data/ext/wiringpi/WiringPi/wiringPi/wiringShift.h +41 -0
  62. data/ext/wiringpi/extconf.rb +8 -0
  63. data/ext/wiringpi/wiringpi_wrap.c +4378 -0
  64. data/lib/wiringpi/event.rb +21 -0
  65. data/lib/wiringpi/gpio.rb +131 -0
  66. data/lib/wiringpi/i2c.rb +26 -0
  67. data/lib/wiringpi/mcp23x17.rb +31 -0
  68. data/lib/wiringpi/serial.rb +49 -0
  69. data/lib/wiringpi/spi.rb +15 -0
  70. data/lib/wiringpi2.rb +42 -0
  71. metadata +122 -0
@@ -0,0 +1,21 @@
1
+ module WiringPi
2
+ class GPIO
3
+ def interrupt(pin, edge, &block)
4
+ Thread.new do
5
+ @value = digital_read(pin)
6
+ @last_value = value
7
+ loop do
8
+ @last_value = @value
9
+ @value = digital_read(pin)
10
+
11
+ if @value != @last_value
12
+ next if @value == 0 and edge == :falling_edge
13
+ next if @value == 1 and edge == :rising_edge
14
+ break
15
+ end
16
+ block.call @value
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,131 @@
1
+ module WiringPi
2
+ class GPIO
3
+
4
+ @modules = Array.new
5
+ @pins = Array.new
6
+
7
+ attr_reader :modules, :pins
8
+
9
+ def initialize(&block)
10
+ Wiringpi2.wiringPiSetup
11
+ @pins = Array.new
12
+ instance_eval &block if block_given?
13
+ end
14
+
15
+ def read_byte(starting_pin)
16
+ bits = Array.new
17
+ 8.times do |time|
18
+ bits << Wiringpi2.digitalRead(starting_pin + time)
19
+ end
20
+ bits.join
21
+ end
22
+
23
+ def write_byte(starting_pin, byte)
24
+ byte = byte.to_s(2) unless byte.length = 8
25
+ offset = starting_pin
26
+ byte.each_char do |bit|
27
+ Wiringpi2.digitalWrite(offset, bit)
28
+ offset += 1
29
+ end
30
+ end
31
+
32
+ def digital_read(pin)
33
+ if pin.respond_to?(:each)
34
+ pin.collect do |pin|
35
+ Wiringpi2.digitalRead(pin)
36
+ end
37
+ else
38
+ Wiringpi2.digitalRead(pin)
39
+ end
40
+ end
41
+
42
+ def digital_write(pin, value)
43
+ if pin.respond_to?(:each)
44
+ pin.each do |pin|
45
+ Wiringpi2.digitalWrite(pin, value)
46
+ end
47
+ else
48
+ Wiringpi2.digitalWrite(pin, value)
49
+ end
50
+ end
51
+
52
+ def pin_mode(pin, mode)
53
+ Wiringpi2.pinMode(pin, mode)
54
+ end
55
+
56
+ def pull_up_dn_control(pin,mode)
57
+ Wiringpi2.pullUpDnControl(pin, mode)
58
+ end
59
+
60
+ def delay(ms)
61
+ Wiringpi2.delay(ms)
62
+ end
63
+
64
+ def delay_microseconds(ms)
65
+ Wiringpi2.delayMicroseconds(ms)
66
+ end
67
+
68
+ def millis()
69
+ return Wiringpi2.millis()
70
+ end
71
+
72
+ def micros()
73
+ return Wiringpi2.micros()
74
+ end
75
+
76
+ def pi_board_rev()
77
+ return Wiringpi2.piBoardRev()
78
+ end
79
+
80
+ def wpi_pin_to_gpio(pin)
81
+ return Wiringpi2.wpiPinToGpio(pin)
82
+ end
83
+
84
+ def phys_pin_to_gpio(pin)
85
+ return Wiringpi2.physPinToGpio(pin)
86
+ end
87
+
88
+ def pwm_set_mode(mode)
89
+ return Wiringpi2.pwmSetMode(mode)
90
+ end
91
+
92
+ def pwm_set_range(range)
93
+ return Wiringpi2.pwmSetRange(range)
94
+ end
95
+
96
+ def pwm_set_clock(divisor)
97
+ return Wiringpi2.pwmSetClock(divisor)
98
+ end
99
+
100
+ def gpio_clock_set(pin, freq)
101
+ return Wiringpi2.gpioClockSet(pin, freq)
102
+ end
103
+
104
+ def wait_for_interrupt(pin, ms)
105
+ Wiringpi2.waitForInterrupt(pin, ms)
106
+ end
107
+
108
+ def wiringpi_isr(pin, mode, fn)
109
+ Wiringpi2.wiringPiISR(pin, mode, fn)
110
+ end
111
+
112
+ def shift_out(dpin, cpin, order, val )
113
+ Wiringpi2.shiftOut(dpin,cpin,order,val)
114
+ end
115
+
116
+ def shift_in(dpin, cpin, order)
117
+ Wiringpi2.shiftIn(dpin,cpin,order)
118
+ end
119
+
120
+ def add_module(module_instance)
121
+ @modules = Array.new if @modules.nil?
122
+
123
+ @modules << module_instance
124
+ puts 'Added module ' + module_instance.name.to_s
125
+
126
+ module_instance.pin_count.times do |offset|
127
+ @pins[offset + module_instance.pin_base] = 'ENABLED'
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,26 @@
1
+ module WiringPi
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
25
+ end
26
+ end
@@ -0,0 +1,31 @@
1
+ module WiringPi
2
+ class Modules
3
+ class Mcp23017 < ModuleBase
4
+
5
+ @i2c_address = 0x0
6
+
7
+ def initialize(pin_base, i2c_address)
8
+ @pin_base = pin_base
9
+ @pin_count = 16
10
+ @i2c_address = i2c_address
11
+ Wiringpi.mcp23017Setup( pin_base, i2c_address )
12
+ super()
13
+ end
14
+ end
15
+ class Mcp23s17 < ModuleBase
16
+
17
+ @spi_port = 0
18
+ @device_id = 0
19
+
20
+ def initialize(pin_base, spi_port, device_id)
21
+ @pin_base = pin_base
22
+ @pin_count = 16
23
+ @spi_port = spi_port
24
+ @device_id = device_id
25
+ Wiringpi.mcp23s17Setup( pin_base, spi_port, device_id )
26
+ super()
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,49 @@
1
+ module WiringPi
2
+ class Serial
3
+
4
+ @id = 0
5
+ @device = '/dev/ttyAMA0'
6
+ @baud = 9600
7
+
8
+ def initialize(device='/dev/ttyAMA0', baud=9600)
9
+
10
+ @device = device
11
+ @baud = baud
12
+
13
+ @id = Wiringpi2.serialOpen(@device, @baud)
14
+
15
+ end
16
+
17
+ def serial_close
18
+
19
+ Wiringpi2.serialClose(@id)
20
+ @id = 0
21
+
22
+ end
23
+
24
+ def serial_put_char(char)
25
+
26
+ Wiringpi2.serialPutchar(@id, char)
27
+
28
+ end
29
+
30
+ def serial_puts(string)
31
+
32
+ Wiringpi2.serialPuts(@id, string)
33
+
34
+ end
35
+
36
+ def serial_data_avail
37
+
38
+ Wiringpi2.serialDataAvail(@id)
39
+
40
+ end
41
+
42
+ def serial_get_char
43
+
44
+ Wiringpi2.serialGetchar(@id)
45
+
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,15 @@
1
+ module WiringPi
2
+ class SPI
3
+ @channel = 0
4
+ def initialize(channel,speed)
5
+ @channel = channel
6
+ Wiringpi.wiringPiSPISetup(channel,speed)
7
+ end
8
+ def wiringPiSPIGetFd()
9
+ return Wiringpi.wiringPiSPIGetFd(@channel)
10
+ end
11
+ def wiringPiSPIDataRW(data)
12
+ return Wiringpi.wiringPiSPIDataRW(@channel,data)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,42 @@
1
+ require 'wiringpi2/wiringpi2'
2
+ module WiringPi
3
+ extend self
4
+
5
+ HIGH = 1
6
+ LOW = 0
7
+
8
+ INPUT = 0
9
+ OUTPUT = 1
10
+ PWM_OUTPUT = 1
11
+
12
+ PUD_OFF = 0
13
+ PUD_DOWN = 1
14
+ PUD_UP = 2
15
+
16
+ LSPFIRST = 0
17
+ MSBFIRST = 1
18
+
19
+ class Modules
20
+ class ModuleBase
21
+
22
+ @name = 'Unknown'
23
+ @pin_base = 0
24
+ @pin_count = 0
25
+ @pin_end = 0
26
+
27
+ attr_reader :name, :pin_base, :pin_count, :pin_end
28
+
29
+ def new
30
+ @pin_end = @pin_base + @pin_count
31
+ updateName
32
+ end
33
+
34
+ def updateName
35
+ @name = ' at offset ' + @pin_base.to_s
36
+ end
37
+
38
+ end
39
+ end
40
+
41
+ end
42
+ Dir[File.dirname(__FILE__) + '/wiringpi/*.rb'].each {|file| require file }
metadata ADDED
@@ -0,0 +1,122 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wiringpi2
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Gordon
9
+ - Phil
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-04-07 00:00:00.000000000 Z
14
+ dependencies: []
15
+ description: ! 'WiringPi library wrapper for the Raspberry Pi only. Wraps up version
16
+ 2.x of the Arduino wiring-like WiringPi library into a convinient Ruby gem. Currently
17
+ includes GPIO functionality, I2C, SPI, serial and shiftOut/shiftIn support in addition
18
+ to peripheral drivers for things like the MCP23017. Credit to Gordon for the WiringPi
19
+ library, which can be found here: http://www.wiringpi.com'
20
+ email: phil@gadgetoid.com
21
+ executables: []
22
+ extensions:
23
+ - ext/wiringpi/extconf.rb
24
+ extra_rdoc_files: []
25
+ files:
26
+ - lib/wiringpi/mcp23x17.rb
27
+ - lib/wiringpi/i2c.rb
28
+ - lib/wiringpi/spi.rb
29
+ - lib/wiringpi/gpio.rb
30
+ - lib/wiringpi/event.rb
31
+ - lib/wiringpi/serial.rb
32
+ - lib/wiringpi2.rb
33
+ - ext/wiringpi/WiringPi/gpio/gpio.c
34
+ - ext/wiringpi/WiringPi/wiringPi/wiringPiSPI.c
35
+ - ext/wiringpi/WiringPi/wiringPi/ds1302.c
36
+ - ext/wiringpi/WiringPi/wiringPi/wiringSerial.c
37
+ - ext/wiringpi/WiringPi/wiringPi/lcd.c
38
+ - ext/wiringpi/WiringPi/wiringPi/piFace.c
39
+ - ext/wiringpi/WiringPi/wiringPi/mcp23s08.c
40
+ - ext/wiringpi/WiringPi/wiringPi/wiringPiI2C.c
41
+ - ext/wiringpi/WiringPi/wiringPi/softServo.c
42
+ - ext/wiringpi/WiringPi/wiringPi/piThread.c
43
+ - ext/wiringpi/WiringPi/wiringPi/wiringShift.c
44
+ - ext/wiringpi/WiringPi/wiringPi/mcp23017.c
45
+ - ext/wiringpi/WiringPi/wiringPi/piHiPri.c
46
+ - ext/wiringpi/WiringPi/wiringPi/softTone.c
47
+ - ext/wiringpi/WiringPi/wiringPi/wiringPi.c
48
+ - ext/wiringpi/WiringPi/wiringPi/mcp23008.c
49
+ - ext/wiringpi/WiringPi/wiringPi/mcp23s17.c
50
+ - ext/wiringpi/WiringPi/wiringPi/gertboard.c
51
+ - ext/wiringpi/WiringPi/wiringPi/softPwm.c
52
+ - ext/wiringpi/WiringPi/wiringPi/piNes.c
53
+ - ext/wiringpi/WiringPi/wiringPi/sr595.c
54
+ - ext/wiringpi/WiringPi/examples/blink.c
55
+ - ext/wiringpi/WiringPi/examples/nes.c
56
+ - ext/wiringpi/WiringPi/examples/test1.c
57
+ - ext/wiringpi/WiringPi/examples/tone.c
58
+ - ext/wiringpi/WiringPi/examples/ds1302.c
59
+ - ext/wiringpi/WiringPi/examples/lcd.c
60
+ - ext/wiringpi/WiringPi/examples/test2.c
61
+ - ext/wiringpi/WiringPi/examples/isr.c
62
+ - ext/wiringpi/WiringPi/examples/serialTest.c
63
+ - ext/wiringpi/WiringPi/examples/wfi.c
64
+ - ext/wiringpi/WiringPi/examples/serialRead.c
65
+ - ext/wiringpi/WiringPi/examples/okLed.c
66
+ - ext/wiringpi/WiringPi/examples/servo.c
67
+ - ext/wiringpi/WiringPi/examples/piface.c
68
+ - ext/wiringpi/WiringPi/examples/isr-osc.c
69
+ - ext/wiringpi/WiringPi/examples/delayTest.c
70
+ - ext/wiringpi/WiringPi/examples/gertboard.c
71
+ - ext/wiringpi/WiringPi/examples/speed.c
72
+ - ext/wiringpi/WiringPi/examples/pwm.c
73
+ - ext/wiringpi/wiringpi_wrap.c
74
+ - ext/wiringpi/WiringPi/wiringPi/piFace.h
75
+ - ext/wiringpi/WiringPi/wiringPi/mcp23017.h
76
+ - ext/wiringpi/WiringPi/wiringPi/wiringShift.h
77
+ - ext/wiringpi/WiringPi/wiringPi/softTone.h
78
+ - ext/wiringpi/WiringPi/wiringPi/mcp23x08.h
79
+ - ext/wiringpi/WiringPi/wiringPi/sr595.h
80
+ - ext/wiringpi/WiringPi/wiringPi/softPwm.h
81
+ - ext/wiringpi/WiringPi/wiringPi/lcd.h
82
+ - ext/wiringpi/WiringPi/wiringPi/wiringPiI2C.h
83
+ - ext/wiringpi/WiringPi/wiringPi/ds1302.h
84
+ - ext/wiringpi/WiringPi/wiringPi/gertboard.h
85
+ - ext/wiringpi/WiringPi/wiringPi/wiringPi.h
86
+ - ext/wiringpi/WiringPi/wiringPi/wiringSerial.h
87
+ - ext/wiringpi/WiringPi/wiringPi/wiringPiSPI.h
88
+ - ext/wiringpi/WiringPi/wiringPi/piNes.h
89
+ - ext/wiringpi/WiringPi/wiringPi/mcp23s08.h
90
+ - ext/wiringpi/WiringPi/wiringPi/mcp23s17.h
91
+ - ext/wiringpi/WiringPi/wiringPi/softServo.h
92
+ - ext/wiringpi/WiringPi/wiringPi/mcp23008.h
93
+ - ext/wiringpi/WiringPi/wiringPi/mcp23x0817.h
94
+ - ext/wiringpi/WiringPi/examples/header.h
95
+ - ext/wiringpi/extconf.rb
96
+ homepage: http://rubygems.org/gems/wiringpi2
97
+ licenses:
98
+ - GNU General Public License
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ requirements: []
116
+ rubyforge_project:
117
+ rubygems_version: 1.8.25
118
+ signing_key:
119
+ specification_version: 3
120
+ summary: Arduino wiring-like library for Raspberry Pi GPIO. Will only work on a Pi.
121
+ Alpha version.
122
+ test_files: []