pi_piper 2.0.beta.1 → 2.0.beta.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/Gemfile.lock +2 -0
- data/README.md +2 -0
- data/Rakefile +4 -3
- data/lib/pi_piper.rb +38 -1
- data/lib/pi_piper/bcm2835.rb +7 -7
- data/lib/pi_piper/platform.rb +4 -2
- data/pi_piper.gemspec +6 -3
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14f0ac39d4e0f23013f42d657d6bc68ccca9433b
|
4
|
+
data.tar.gz: 3bb43ad2e9d6a72300f08990ca6b98850eae6026
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a1358e44e9a4648d132323dfcd24bb1494cc2a5e77145499e5292372c6e317659c507421e4aebc34926529b194760b55b1bfe5517997c8166179d3d5230f819
|
7
|
+
data.tar.gz: ce642bff726a8b60382ef781ca85b4097707bfe7f0154b6bb4f50cc442e838e4a8108b053583aa540578a082575b457dce7c303dfff0c51df0901b47cc2d58d5
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -9,6 +9,7 @@ GEM
|
|
9
9
|
rake (>= 0.9.2)
|
10
10
|
rdoc (>= 3.6.1)
|
11
11
|
rubyforge (>= 2.0.4)
|
12
|
+
eventmachine (1.0.3)
|
12
13
|
ffi (1.4.0)
|
13
14
|
gemcutter (0.7.1)
|
14
15
|
json_pure (1.7.7)
|
@@ -30,6 +31,7 @@ PLATFORMS
|
|
30
31
|
|
31
32
|
DEPENDENCIES
|
32
33
|
echoe
|
34
|
+
eventmachine (~> 1.0.3)
|
33
35
|
ffi
|
34
36
|
rake
|
35
37
|
rspec
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
## Overview
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/jwhitehorn/pi_piper.png)](https://travis-ci.org/jwhitehorn/pi_piper)
|
4
|
+
|
3
5
|
Pi Piper brings event driven programming to the Raspberry Pi's GPIO pins. Pi Piper works with all revisions of the Raspberry Pi,
|
4
6
|
and has been tested with Ruby 1.9.3 & 2.0 under both [Raspbian "wheezy"](http://www.raspberrypi.org/downloads) and [Occidentalis v0.2](http://learn.adafruit.com/adafruit-raspberry-pi-educational-linux-distro/occidentalis-v0-dot-2).
|
5
7
|
|
data/Rakefile
CHANGED
@@ -5,15 +5,16 @@ require 'rake/testtask'
|
|
5
5
|
|
6
6
|
#rake manifest
|
7
7
|
#rake build_gemspec
|
8
|
-
#
|
8
|
+
#gem build pi_piper.gemspec
|
9
|
+
#gem push xxx.gem
|
9
10
|
|
10
|
-
Echoe.new('pi_piper', '2.0.beta.
|
11
|
+
Echoe.new('pi_piper', '2.0.beta.3') do |p|
|
11
12
|
p.description = "Event driven Raspberry Pi GPIO library"
|
12
13
|
p.url = "http://github.com/jwhitehorn/pi_piper"
|
13
14
|
p.author = "Jason Whitehorn"
|
14
15
|
p.email = "jason.whitehorn@gmail.com"
|
15
16
|
p.ignore_pattern = ["examples/**/*", "spec/**/*"]
|
16
|
-
p.dependencies = ['ffi']
|
17
|
+
p.dependencies = ['ffi', 'eventmachine 1.0.3']
|
17
18
|
end
|
18
19
|
|
19
20
|
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
data/lib/pi_piper.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
require 'eventmachine'
|
2
|
+
Dir[File.dirname(__FILE__) + '/pi_piper/*.rb'].each {|file| require file }#unless file.end_with?('bcm2835.rb') }
|
2
3
|
|
3
4
|
module PiPiper
|
4
5
|
extend self
|
@@ -32,8 +33,44 @@ module PiPiper
|
|
32
33
|
options[:trigger] = options.delete(:goes) == :high ? :rising : :falling
|
33
34
|
watch options, &block
|
34
35
|
end
|
36
|
+
|
37
|
+
#Defines an event block to be called on a regular schedule. The block will be passed the slave output.
|
38
|
+
#
|
39
|
+
# @param [Hash] options A hash of options.
|
40
|
+
# @option options [Fixnum] :every A frequency of time (in seconds) to poll the SPI slave.
|
41
|
+
# @option options [Fixnum] :slave The slave number to poll.
|
42
|
+
# @option options [Number|Array] :write Data to poll the SPI slave with.
|
43
|
+
def poll_spi(options, &block)
|
44
|
+
EM::PeriodicTimer.new(options[:every]) do
|
45
|
+
Spi.begin options[:slave] do
|
46
|
+
output = write options[:write]
|
47
|
+
block.call output
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
#Defines an event block to be called when SPI slave output meets certain characteristics.
|
53
|
+
#The block will be passed the slave output.
|
54
|
+
#
|
55
|
+
# @param [Hash] options A hash of options.
|
56
|
+
# @option options [Fixnum] :every A frequency of time (in seconds) to poll the SPI slave.
|
57
|
+
# @option options [Fixnum] :slave The slave number to poll.
|
58
|
+
# @option options [Number|Array] :write Data to poll the SPI slave with.
|
59
|
+
# @option options [Fixnum] :eq Tests for SPI slave output equality.
|
60
|
+
# @option options [Fixnum] :lt Tests for SPI slave output less than supplied value.
|
61
|
+
# @option options [Fixnum] :gt Tests for SPI slave output greater than supplied value.
|
62
|
+
def when_spi(options, &block)
|
63
|
+
poll_spi options do |value|
|
64
|
+
if (options[:eq] && value == options[:eq]) ||
|
65
|
+
(options[:lt] && value < options[:lt]) ||
|
66
|
+
(options[:gt] && value > options[:gt])
|
67
|
+
block.call value
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
35
71
|
|
36
72
|
#Prevents the main thread from exiting. Required when using PiPiper.watch
|
73
|
+
# @deprecated Please use EventMachine.run instead
|
37
74
|
def wait
|
38
75
|
loop do sleep 1 end
|
39
76
|
end
|
data/lib/pi_piper/bcm2835.rb
CHANGED
@@ -32,9 +32,9 @@ module PiPiper
|
|
32
32
|
File.open("/sys/class/gpio/gpio#{pin}/value", 'w') {|f| f.write("#{value}") }
|
33
33
|
end
|
34
34
|
|
35
|
-
def
|
35
|
+
def Bcm2835.pin_output(pin)
|
36
36
|
File.open("/sys/class/gpio/export", "w") { |f| f.write("#{pin}") }
|
37
|
-
File.open(
|
37
|
+
File.open("/sys/class/gpio/gpio#{pin}/direction", "w") { |f| f.write("out") }
|
38
38
|
end
|
39
39
|
|
40
40
|
def self.pin_read(pin)
|
@@ -54,11 +54,11 @@ module PiPiper
|
|
54
54
|
:bcm2835_spi_setChipSelectPolarity, [:uint8, :uint8], :void
|
55
55
|
|
56
56
|
#I2C support...
|
57
|
-
attach_function :i2c_begin, :bcm2835_i2c_begin, [], :void
|
58
|
-
attach_function :i2c_end, :bcm2835_i2c_end, [], :void
|
59
|
-
attach_function :i2c_write, :bcm2835_i2c_write, [:pointer, :uint], :uint8
|
60
|
-
attach_function :i2c_set_address,:bcm2835_i2c_setSlaveAddress, [:uint8], :void
|
61
|
-
attach_function :i2c_set_clock_divider, :bcm2835_i2c_setClockDivider, [:uint16], :void
|
57
|
+
#attach_function :i2c_begin, :bcm2835_i2c_begin, [], :void
|
58
|
+
#attach_function :i2c_end, :bcm2835_i2c_end, [], :void
|
59
|
+
#attach_function :i2c_write, :bcm2835_i2c_write, [:pointer, :uint], :uint8
|
60
|
+
#attach_function :i2c_set_address,:bcm2835_i2c_setSlaveAddress, [:uint8], :void
|
61
|
+
#attach_function :i2c_set_clock_divider, :bcm2835_i2c_setClockDivider, [:uint16], :void
|
62
62
|
|
63
63
|
def self.i2c_allowed_clocks
|
64
64
|
[100.kilohertz,
|
data/lib/pi_piper/platform.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
+
#require 'bcm2835.rb'
|
1
2
|
module PiPiper
|
2
3
|
|
3
4
|
#Hardware abstraction manager. Not intended for direct use.
|
4
5
|
class Platform
|
6
|
+
@@driver = nil
|
5
7
|
|
6
8
|
#gets the current platform driver. Defaults to BCM2835.
|
7
9
|
def self.driver
|
8
10
|
unless @@driver
|
9
|
-
require 'bcm2835.rb'
|
11
|
+
#require 'bcm2835.rb'
|
10
12
|
PiPiper::Bcm2835.init
|
11
13
|
@@driver = PiPiper::Bcm2835
|
12
|
-
at_exit {
|
14
|
+
at_exit { Bcm2835.close }
|
13
15
|
end
|
14
16
|
@@driver
|
15
17
|
end
|
data/pi_piper.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "pi_piper"
|
5
|
-
s.version = "2.0.beta.
|
5
|
+
s.version = "2.0.beta.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Jason Whitehorn"]
|
9
|
-
s.date = "2013-09-
|
9
|
+
s.date = "2013-09-11"
|
10
10
|
s.description = "Event driven Raspberry Pi GPIO library"
|
11
11
|
s.email = "jason.whitehorn@gmail.com"
|
12
12
|
s.extra_rdoc_files = ["README.md", "lib/pi_piper.rb", "lib/pi_piper/bcm2835.rb", "lib/pi_piper/frequency.rb", "lib/pi_piper/i2c.rb", "lib/pi_piper/libbcm2835.img", "lib/pi_piper/pin.rb", "lib/pi_piper/platform.rb", "lib/pi_piper/spi.rb"]
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Pi_piper", "--main", "README.md"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubyforge_project = "pi_piper"
|
18
|
-
s.rubygems_version = "2.0.
|
18
|
+
s.rubygems_version = "2.0.0"
|
19
19
|
s.summary = "Event driven Raspberry Pi GPIO library"
|
20
20
|
|
21
21
|
if s.respond_to? :specification_version then
|
@@ -23,10 +23,13 @@ Gem::Specification.new do |s|
|
|
23
23
|
|
24
24
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
25
25
|
s.add_runtime_dependency(%q<ffi>, [">= 0"])
|
26
|
+
s.add_runtime_dependency(%q<eventmachine>, ["= 1.0.3"])
|
26
27
|
else
|
27
28
|
s.add_dependency(%q<ffi>, [">= 0"])
|
29
|
+
s.add_dependency(%q<eventmachine>, ["= 1.0.3"])
|
28
30
|
end
|
29
31
|
else
|
30
32
|
s.add_dependency(%q<ffi>, [">= 0"])
|
33
|
+
s.add_dependency(%q<eventmachine>, ["= 1.0.3"])
|
31
34
|
end
|
32
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pi_piper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.beta.
|
4
|
+
version: 2.0.beta.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Whitehorn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: eventmachine
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.0.3
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.3
|
27
41
|
description: Event driven Raspberry Pi GPIO library
|
28
42
|
email: jason.whitehorn@gmail.com
|
29
43
|
executables: []
|
@@ -78,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
92
|
version: '1.2'
|
79
93
|
requirements: []
|
80
94
|
rubyforge_project: pi_piper
|
81
|
-
rubygems_version: 2.0.
|
95
|
+
rubygems_version: 2.0.0
|
82
96
|
signing_key:
|
83
97
|
specification_version: 4
|
84
98
|
summary: Event driven Raspberry Pi GPIO library
|