pi_wire 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fc5b6d6abcb49e1e5acc56711ad043f6bccd38c0
4
+ data.tar.gz: ab15e75cf0f06d57b8b4be0acb993f2454c2254c
5
+ SHA512:
6
+ metadata.gz: 697f5d880a9163ec71e5630b033224868f28c0a34196d9f9e21bf7b4fabafa3f4216a008902dc1d99b6b2e97bc13b8b747fe05358010bcf843d14717d9a5cbd6
7
+ data.tar.gz: 040dc0268bc21657ef512cdd1dfe8e4997091eb351a76b19cec0af823ffbc5f8f7b8d2f8b909a15d6a3298d469f31abd72c5a458613a1bc580d4109b06cb4b51
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ lib/**/*.so
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
19
+ ext/pi_wire/Makefile
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in pi_wire.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 TODO: Write your name
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,75 @@
1
+ # PiWire
2
+
3
+ PiWire is a ruby wrapper around the [wiringPi](http://wiringpi.com) C library.
4
+
5
+ ## Installation
6
+
7
+ PiWire requires the wiringPi library be installed to work, make sure you have succesfully installed wiringPi _before_ trying to install PiWire.
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem 'pi_wire'
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install pi_wire
20
+
21
+ ## Usage
22
+
23
+ As with wiringPi you must initialize PiWire before you start using it.
24
+
25
+ PiWire.init
26
+
27
+ If you don't do this then at best things wont work, and at worst your program will crash.
28
+
29
+ ### LED Blink
30
+
31
+ This is effectively the hello world program of electronics:
32
+
33
+ require 'pi_wire'
34
+
35
+ PiWire.init
36
+
37
+ pin = PiWire::OutputPin.new(1)
38
+
39
+ loop do
40
+ pin.toggle!
41
+ sleep 0.5
42
+ end
43
+
44
+ ### Output Pin
45
+
46
+ A new output pin can be created, specifiying the wiringPi pin number to use:
47
+
48
+ pin = PiWire::OutputPin.new(0)
49
+
50
+ You can now read and write from this pin:
51
+
52
+ pin.read # will return PiWire::LOW (0) or PiWire::HIGH (1)
53
+ pin.write PiWire::HIGH
54
+
55
+ ### PWM Pin
56
+
57
+ A new PWM pin can be created, this will use pin number 1 by default.
58
+
59
+ pin = PiWire::PWMPin.new
60
+
61
+ You can write to this pin, by default the range is from 0 to 1023
62
+
63
+ pin.write 512
64
+
65
+ ## Tests
66
+
67
+ Run the tests with `rake`, these must be run as a superuser.
68
+
69
+ ## Contributing
70
+
71
+ 1. Fork it
72
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
73
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
74
+ 4. Push to the branch (`git push origin my-new-feature`)
75
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/extensiontask"
3
+ require "rspec/core/rake_task"
4
+
5
+ spec = Gem::Specification.load("pi_wire.gemspec")
6
+
7
+ RSpec::Core::RakeTask.new(:spec)
8
+ Rake::ExtensionTask.new("pi_wire", spec) do |ext|
9
+ ext.lib_dir = File.join("lib", "pi_wire")
10
+ end
11
+
12
+ task default: :spec
@@ -0,0 +1,30 @@
1
+ require 'mkmf'
2
+
3
+ LIBDIR = RbConfig::CONFIG['libdir']
4
+ INCLUDEDIR = RbConfig::CONFIG['includedir']
5
+
6
+ HEADER_DIRS = [
7
+ '/opt/local/include',
8
+ '/usr/local/include',
9
+ INCLUDEDIR,
10
+ '/usr/include'
11
+ ]
12
+
13
+ LIB_DIRS = [
14
+ '/opt/local/lib',
15
+ '/usr/local/lib',
16
+ LIBDIR,
17
+ '/usr/lib'
18
+ ]
19
+
20
+ dir_config('wiringPi', HEADER_DIRS, LIB_DIRS)
21
+
22
+ unless find_header('wiringPi.h', *HEADER_DIRS)
23
+ abort 'wiringPi is missing, please install wiringPi'
24
+ end
25
+
26
+ unless find_library('wiringPi', nil, *LIB_DIRS)
27
+ abort 'wiringPi is missing, please install wiringPi'
28
+ end
29
+
30
+ create_makefile('pi_wire/pi_wire')
@@ -0,0 +1,29 @@
1
+ #include <pi_wire.h>
2
+
3
+ VALUE mPiWire;
4
+
5
+ static VALUE hello_world(VALUE klass) {
6
+ return rb_str_new2("Hello, World!");
7
+ }
8
+
9
+ static VALUE init_wiring_pi(VALUE klass) {
10
+ wiringPiSetup();
11
+ return Qtrue;
12
+ }
13
+
14
+ void Init_pi_wire() {
15
+ mPiWire = rb_define_module("PiWire");
16
+ rb_define_module_function(mPiWire, "hello_world", hello_world, 0);
17
+ rb_define_module_function(mPiWire, "init", init_wiring_pi, 0);
18
+
19
+ rb_define_const(mPiWire, "OUTPUT_MODE", INT2FIX(OUTPUT));
20
+ rb_define_const(mPiWire, "PWM_MODE", INT2FIX(PWM_OUTPUT));
21
+
22
+ rb_define_const(mPiWire, "LOW", INT2FIX(LOW));
23
+ rb_define_const(mPiWire, "HIGH", INT2FIX(HIGH));
24
+
25
+ Init_pi_wire_pin();
26
+ Init_pi_wire_output_pin();
27
+ Init_pi_wire_pwm_pin();
28
+ Init_pi_wire_serial();
29
+ }
@@ -0,0 +1,17 @@
1
+ #ifndef PI_WIRE
2
+ #define PI_WIRE
3
+
4
+ #include <ruby.h>
5
+ #include <wiringPi.h>
6
+ #include <wiringSerial.h>
7
+
8
+ extern VALUE mPiWire;
9
+
10
+ void Init_pi_wire();
11
+
12
+ #include <pi_wire_pin.h>
13
+ #include <pi_wire_output_pin.h>
14
+ #include <pi_wire_pwm_pin.h>
15
+ #include <pi_wire_serial.h>
16
+
17
+ #endif
@@ -0,0 +1,19 @@
1
+ #include <pi_wire_output_pin.h>
2
+
3
+ static VALUE read(VALUE self) {
4
+ int pin_value = digitalRead(pin_number(self));
5
+ return INT2FIX(pin_value);
6
+ }
7
+
8
+ static VALUE write(VALUE self, VALUE rb_int) {
9
+ digitalWrite(pin_number(self), NUM2INT(rb_int));
10
+ return Qtrue;
11
+ }
12
+
13
+ void Init_pi_wire_output_pin() {
14
+ VALUE cPiWireOutputPin = rb_define_class_under(mPiWire, "OutputPin", cPiWirePin);
15
+
16
+ rb_define_method(cPiWireOutputPin, "read", read, 0);
17
+ rb_define_method(cPiWireOutputPin, "write", write, 1);
18
+ rb_define_alias(cPiWireOutputPin, "<<", "write");
19
+ }
@@ -0,0 +1,9 @@
1
+ #ifndef PI_WIRE_OUTPUT_PIN
2
+ #define PI_WIRE_OUTPUT_PIN
3
+
4
+ #include <pi_wire.h>
5
+ #include <pi_wire_pin.h>
6
+
7
+ void Init_pi_wire_output_pin();
8
+
9
+ #endif
@@ -0,0 +1,19 @@
1
+ #include <pi_wire_pin.h>
2
+
3
+ VALUE cPiWirePin;
4
+
5
+ int pin_number(VALUE self) {
6
+ VALUE pin_number = rb_ivar_get(self, rb_intern("@number"));
7
+ return NUM2INT(pin_number);
8
+ }
9
+
10
+ static VALUE set_mode(VALUE self, VALUE rb_int) {
11
+ pinMode(pin_number(self), NUM2INT(rb_int));
12
+ return Qtrue;
13
+ }
14
+
15
+ void Init_pi_wire_pin() {
16
+ cPiWirePin = rb_define_class_under(mPiWire, "Pin", rb_cObject);
17
+
18
+ rb_define_private_method(cPiWirePin, "mode=", set_mode, 1);
19
+ }
@@ -0,0 +1,11 @@
1
+ #ifndef PI_WIRE_PIN
2
+ #define PI_WIRE_PIN
3
+
4
+ #include <pi_wire.h>
5
+
6
+ extern VALUE cPiWirePin;
7
+
8
+ void Init_pi_wire_pin();
9
+ int pin_number(VALUE);
10
+
11
+ #endif
@@ -0,0 +1,13 @@
1
+ #include <pi_wire_pwm_pin.h>
2
+
3
+ static VALUE write(VALUE self, VALUE rb_int) {
4
+ pwmWrite(pin_number(self), NUM2INT(rb_int));
5
+ return Qtrue;
6
+ }
7
+
8
+ void Init_pi_wire_pwm_pin() {
9
+ VALUE cPiWirePWMPin = rb_define_class_under(mPiWire, "PWMPin", cPiWirePin);
10
+
11
+ rb_define_method(cPiWirePWMPin, "write", write, 1);
12
+ rb_define_alias(cPiWirePWMPin, "<<", "write");
13
+ }
@@ -0,0 +1,9 @@
1
+ #ifndef PI_WIRE_PWM_PIN
2
+ #define PI_WIRE_PWM_PIN
3
+
4
+ #include <pi_wire.h>
5
+ #include <pi_wire_pin.h>
6
+
7
+ void Init_pi_wire_pwm_pin();
8
+
9
+ #endif
@@ -0,0 +1,72 @@
1
+ #include <pi_wire_serial.h>
2
+
3
+ static char *get_file_name(VALUE self) {
4
+ VALUE rb_file_name = rb_ivar_get(self, rb_intern("@name"));
5
+ return StringValueCStr(rb_file_name);
6
+ }
7
+
8
+ static int get_baud_rate(VALUE self) {
9
+ VALUE rb_baud_rate = rb_ivar_get(self, rb_intern("@baud_rate"));
10
+ return NUM2INT(rb_baud_rate);
11
+ }
12
+
13
+ static int get_fd(VALUE self) {
14
+ VALUE rb_fd = rb_ivar_get(self, rb_intern("@fd"));
15
+ return NUM2INT(rb_fd);
16
+ }
17
+
18
+ static VALUE open_serial_file(VALUE self) {
19
+ char *file_name = get_file_name(self);
20
+ int baud_rate = get_baud_rate(self);
21
+ int fd = serialOpen(file_name, baud_rate);
22
+
23
+ if (fd == -1) {
24
+ rb_raise(rb_eRuntimeError, "Couldn't open %s", file_name);
25
+ }
26
+
27
+ rb_ivar_set(self, rb_intern("@fd"), INT2NUM(fd));
28
+ return Qnil;
29
+ }
30
+
31
+ static VALUE serial_write(VALUE self, VALUE str) {
32
+ int fd = get_fd(self);
33
+ char *s = StringValueCStr(str);
34
+ serialPuts(fd, s);
35
+ return Qtrue;
36
+ }
37
+
38
+ static VALUE serial_read(VALUE self) {
39
+ int fd = get_fd(self);
40
+ int chars_available = serialDataAvail(fd);
41
+ int i;
42
+ char *str = malloc(chars_available + 2);
43
+
44
+ if (chars_available == -1) {
45
+ rb_raise(rb_eRuntimeError, "No data to read");
46
+ return Qnil;
47
+ }
48
+
49
+ for (i = 0; i < chars_available; i++) {
50
+ str[i] = serialGetchar(fd);
51
+ }
52
+
53
+ str[chars_available +1] = '\0';
54
+
55
+ return rb_str_new2(str);
56
+ }
57
+
58
+ static VALUE serial_close(VALUE self) {
59
+ int fd = get_fd(self);
60
+ serialClose(fd);
61
+ return Qtrue;
62
+ }
63
+
64
+ void Init_pi_wire_serial() {
65
+ VALUE cPiWireSerial = rb_define_class_under(mPiWire, "Serial", rb_cObject);
66
+
67
+ rb_define_method(cPiWireSerial, "write", serial_write, 1);
68
+ rb_define_method(cPiWireSerial, "read", serial_read, 0);
69
+ rb_define_method(cPiWireSerial, "close", serial_close, 0);
70
+
71
+ rb_define_private_method(cPiWireSerial, "open", open_serial_file, 0);
72
+ }
@@ -0,0 +1,8 @@
1
+ #ifndef PI_WIRE_SERIAL
2
+ #define PI_WIRE_SERIAL
3
+
4
+ #include <pi_wire.h>
5
+
6
+ void Init_pi_wire_serial();
7
+
8
+ #endif
@@ -0,0 +1,28 @@
1
+ module PiWire
2
+ class OutputPin < Pin
3
+ def initialize(number)
4
+ @number = number
5
+ self.mode = PiWire::OUTPUT_MODE
6
+ end
7
+
8
+ def low?
9
+ read == PiWire::LOW
10
+ end
11
+
12
+ def high?
13
+ read == PiWire::HIGH
14
+ end
15
+
16
+ def low!
17
+ write PiWire::LOW
18
+ end
19
+
20
+ def high!
21
+ write PiWire::HIGH
22
+ end
23
+
24
+ def toggle!
25
+ low? ? high! : low!
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,5 @@
1
+ module PiWire
2
+ class Pin
3
+ attr_reader :number
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ module PiWire
2
+ class PWMPin < Pin
3
+ def initialize
4
+ @number = 1
5
+ self.mode = PiWire::PWM_MODE
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,16 @@
1
+ module PiWire
2
+ class Serial
3
+ attr_reader :name, :baud_rate
4
+
5
+ def initialize(name, baud_rate)
6
+ @name = name
7
+ @baud_rate = baud_rate
8
+ open
9
+
10
+ if block_given?
11
+ yield self
12
+ close
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ module PiWire
2
+ VERSION = "0.0.2"
3
+ end
data/lib/pi_wire.rb ADDED
@@ -0,0 +1,11 @@
1
+ require "pi_wire/pi_wire"
2
+
3
+ require "pi_wire/pin"
4
+ require "pi_wire/output_pin"
5
+ require "pi_wire/pwm_pin"
6
+ require "pi_wire/serial"
7
+ require "pi_wire/version"
8
+
9
+ module PiWire
10
+ # Your code goes here...
11
+ end
data/pi_wire.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'pi_wire/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "pi_wire"
8
+ spec.version = PiWire::VERSION
9
+ spec.authors = ["Oliver Nightingale"]
10
+ spec.email = ["oliver.nightingale1@gmail.com"]
11
+ spec.description = %q{Ruby bindings to WiringPi}
12
+ spec.summary = %q{Ruby bindings to WiringPi}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+ spec.extensions << "ext/pi_wire/extconf.rb"
21
+
22
+ spec.add_development_dependency "bundler", "~> 1.3"
23
+ spec.add_development_dependency "rake"
24
+ spec.add_development_dependency "rake-compiler"
25
+ spec.add_development_dependency "rspec"
26
+ end
@@ -0,0 +1,120 @@
1
+ require 'spec_helper'
2
+
3
+ describe PiWire::OutputPin do
4
+ describe "#initialise" do
5
+ subject(:pin) { PiWire::OutputPin.new(1) }
6
+ its(:number) { should == 1 }
7
+ end
8
+
9
+ describe "#low?" do
10
+ let(:pin) { PiWire::OutputPin.new(1) }
11
+
12
+ subject { pin.low? }
13
+
14
+ context "yes" do
15
+ before { pin.stub(:read).and_return(PiWire::LOW) }
16
+ it { should be_true }
17
+ end
18
+
19
+ context "no" do
20
+ before { pin.stub(:read).and_return(PiWire::HIGH) }
21
+ it { should be_false }
22
+ end
23
+ end
24
+
25
+ describe "#high?" do
26
+ let(:pin) { PiWire::OutputPin.new(1) }
27
+
28
+ subject { pin.high? }
29
+
30
+ context "yes" do
31
+ before { pin.stub(:read).and_return(PiWire::HIGH) }
32
+ it { should be_true }
33
+ end
34
+
35
+ context "no" do
36
+ before { pin.stub(:read).and_return(PiWire::LOW) }
37
+ it { should be_false }
38
+ end
39
+ end
40
+
41
+ describe "#read" do
42
+ subject(:pin) { PiWire::OutputPin.new(1) }
43
+
44
+ context "high" do
45
+ before { pin << PiWire::HIGH }
46
+ it { should be_high }
47
+ end
48
+
49
+ context "low" do
50
+ before { pin << PiWire::LOW }
51
+ it { should be_low }
52
+ end
53
+ end
54
+
55
+ describe "#high!" do
56
+ subject(:pin) { PiWire::OutputPin.new(1) }
57
+
58
+ context "currently high" do
59
+ before { pin << PiWire::HIGH }
60
+
61
+ it "sets the pin high" do
62
+ pin.high!
63
+ pin.should be_high
64
+ end
65
+ end
66
+
67
+ context "currently low" do
68
+ before { pin << PiWire::LOW }
69
+
70
+ it "sets the pin high" do
71
+ pin.high!
72
+ pin.should be_high
73
+ end
74
+ end
75
+ end
76
+
77
+ describe "#low!" do
78
+ subject(:pin) { PiWire::OutputPin.new(1) }
79
+
80
+ context "currently high" do
81
+ before { pin << PiWire::HIGH }
82
+
83
+ it "sets the pin low" do
84
+ pin.low!
85
+ pin.should be_low
86
+ end
87
+ end
88
+
89
+ context "currently low" do
90
+ before { pin << PiWire::LOW }
91
+
92
+ it "sets the pin low" do
93
+ pin.low!
94
+ pin.should be_low
95
+ end
96
+ end
97
+ end
98
+
99
+ describe "toggle!" do
100
+ subject(:pin) { PiWire::OutputPin.new(1) }
101
+
102
+ context "currently high" do
103
+ before { pin << PiWire::HIGH }
104
+
105
+ it "sets the pin low" do
106
+ pin.toggle!
107
+ pin.should be_low
108
+ end
109
+ end
110
+
111
+ context "currently low" do
112
+ before { pin << PiWire::LOW }
113
+
114
+ it "sets the pin high" do
115
+ pin.toggle!
116
+ pin.should be_high
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe PiWire do
4
+ its(:hello_world) { should == "Hello, World!" }
5
+
6
+ describe "constants" do
7
+ it { PiWire::OUTPUT_MODE.should == 1 }
8
+ it { PiWire::PWM_MODE.should == 2 }
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ describe PiWire::PWMPin do
4
+ describe "#number" do
5
+ subject { PiWire::PWMPin.new }
6
+ its(:number) { should == 1 }
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'pi_wire'
3
+
4
+ # needed to setup the RaspberryPi GPIO hardware.
5
+ PiWire.init
6
+
7
+ RSpec.configure do |config|
8
+ config.treat_symbols_as_metadata_keys_with_true_values = true
9
+ config.run_all_when_everything_filtered = true
10
+ config.filter_run :focus
11
+
12
+ # Run specs in random order to surface order dependencies. If you find an
13
+ # order dependency and want to debug it, you can fix the order by providing
14
+ # the seed, which is printed after each run.
15
+ # --seed 1234
16
+ config.order = 'random'
17
+ end
metadata ADDED
@@ -0,0 +1,132 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pi_wire
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Oliver Nightingale
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake-compiler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Ruby bindings to WiringPi
70
+ email:
71
+ - oliver.nightingale1@gmail.com
72
+ executables: []
73
+ extensions:
74
+ - ext/pi_wire/extconf.rb
75
+ extra_rdoc_files: []
76
+ files:
77
+ - .gitignore
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - README.md
81
+ - Rakefile
82
+ - ext/pi_wire/extconf.rb
83
+ - ext/pi_wire/pi_wire.c
84
+ - ext/pi_wire/pi_wire.h
85
+ - ext/pi_wire/pi_wire_output_pin.c
86
+ - ext/pi_wire/pi_wire_output_pin.h
87
+ - ext/pi_wire/pi_wire_pin.c
88
+ - ext/pi_wire/pi_wire_pin.h
89
+ - ext/pi_wire/pi_wire_pwm_pin.c
90
+ - ext/pi_wire/pi_wire_pwm_pin.h
91
+ - ext/pi_wire/pi_wire_serial.c
92
+ - ext/pi_wire/pi_wire_serial.h
93
+ - lib/pi_wire.rb
94
+ - lib/pi_wire/output_pin.rb
95
+ - lib/pi_wire/pin.rb
96
+ - lib/pi_wire/pwm_pin.rb
97
+ - lib/pi_wire/serial.rb
98
+ - lib/pi_wire/version.rb
99
+ - pi_wire.gemspec
100
+ - spec/output_pin_spec.rb
101
+ - spec/pi_wire_spec.rb
102
+ - spec/pwm_pin_spec.rb
103
+ - spec/spec_helper.rb
104
+ homepage: ''
105
+ licenses:
106
+ - MIT
107
+ metadata: {}
108
+ post_install_message:
109
+ rdoc_options: []
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 2.0.3
125
+ signing_key:
126
+ specification_version: 4
127
+ summary: Ruby bindings to WiringPi
128
+ test_files:
129
+ - spec/output_pin_spec.rb
130
+ - spec/pi_wire_spec.rb
131
+ - spec/pwm_pin_spec.rb
132
+ - spec/spec_helper.rb