beaglebone-rails 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 63c4e8a445a9cd50935043e9d14bc4fd0a516c48
4
- data.tar.gz: a9d38a2e6a7ac0e0556de016e93d687cdd361a3a
3
+ metadata.gz: 72b4c75160c895afafbf13b720ff5e01257d25d5
4
+ data.tar.gz: ad4ab95c6b5e9ef53124bae49136deff8c54e351
5
5
  SHA512:
6
- metadata.gz: b2f748f0cb0b64902d8e2841c6e6bf2bb75089cc15fa8ecd2ba7bae1f164e2d8332295769754398d150531bce0658899bfa7ebe70184ca09f7ba72deb194a3af
7
- data.tar.gz: d5eb524abb647379501a996def5a45d1c1f914f830703fb2a59417bba5f4487f6f36b2021a9aacd4f833338e284851dbf6c31335ac4e68c88357ccece3741cc4
6
+ metadata.gz: a53ae00c501aeef5a6d87c8a4adc8a3038fd04c30e20ea126ec5ed68e0479aeae91cf14ef74cbfb6053db956a7740ff4aadd21ecd36c6304b259249e72d8d821
7
+ data.tar.gz: ffa18ce5c22cee86c6eaf9d14e310f6dce12ecfa09a6dd9929e0fdd2da6c8dca126ce782afc2e6e62e199113c3e58622165a29e4306884b24eee8a7f94690094
data/.travis.yml CHANGED
@@ -1,4 +1,7 @@
1
+ sudo: required
1
2
  language: ruby
2
3
  rvm:
3
4
  - 2.2.2
4
- before_install: gem install bundler -v 1.10.5
5
+ before_install:
6
+ - gem install bundler -v 1.10.5
7
+ - sudo ./install.sh
@@ -0,0 +1 @@
1
+ SUBSYSTEM=="subsystem", KERNEL=="gpio", ACTION=="add", PROGRAM="/bin/sh -c 'chmod -R 0777 /sys%p'"
data/Gemfile CHANGED
@@ -5,6 +5,4 @@ gemspec
5
5
 
6
6
  group :test do
7
7
  gem 'rake'
8
- gem 'rspec', '~> 3.4'
9
- gem 'coveralls', '~> 0.8.10'
10
8
  end
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016 TODO: Write your name
3
+ Copyright (c) 2016 Nicholaus Brabant
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- [![Gem](https://img.shields.io/gem/v/beaglebone-rails.svg)](https://rubygems.org/gems/beaglebone-rails)
2
- [![Travis](https://img.shields.io/travis/DivXZero/beaglebone-rails.svg)](https://travis-ci.org/DivXZero/beaglebone-rails)
3
- [![Coveralls](https://img.shields.io/coveralls/DivXZero/beaglebone-rails.svg)](https://coveralls.io/github/DivXZero/beaglebone-rails)
1
+ [![Gem Version](https://badge.fury.io/rb/beaglebone-rails.svg)](https://badge.fury.io/rb/beaglebone-rails)
2
+ [![Build Status](https://travis-ci.org/DivXZero/beaglebone-rails.svg?branch=master)](https://travis-ci.org/DivXZero/beaglebone-rails)
3
+ [![Coverage Status](https://coveralls.io/repos/github/DivXZero/beaglebone-rails/badge.svg?branch=master)](https://coveralls.io/github/DivXZero/beaglebone-rails?branch=master)
4
4
  [![Inline docs](http://inch-ci.org/github/DivXZero/beaglebone-rails.svg?branch=master&style=shields)](http://inch-ci.org/github/DivXZero/beaglebone-rails)
5
5
  [//]: [![Gemnasium](https://img.shields.io/gemnasium/DivXZero/beaglebone-rails.svg)](https://gemnasium.com/DivXZero/beaglebone-rails)
6
6
 
@@ -24,6 +24,10 @@ Or install it yourself as:
24
24
 
25
25
  $ gem install beaglebone-rails
26
26
 
27
+ Run the install script to create the rules that allow the gem to access the subsystem (Warning: This is currently insecure):
28
+
29
+ $ sudo ./install.sh
30
+
27
31
  ## Usage
28
32
 
29
33
  TODO: Write usage instructions here
@@ -18,5 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.required_ruby_version = '>= 1.9'
22
+
21
23
  spec.add_development_dependency "bundler", "~> 1.10"
24
+ spec.add_development_dependency "rspec", "~> 3.4"
25
+ spec.add_development_dependency "coveralls", "~> 0.8.10"
22
26
  end
data/install.sh ADDED
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+ chown root:root 99-beaglebone-rails.rules
3
+ chmod 0644 99-beaglebone-rails.rules
4
+ cp 99-beaglebone-rails.rules /etc/udev/rules.d/
5
+ udevadm control --reload-rules
6
+ udevadm test --action=add /class/gpio
@@ -3,6 +3,8 @@ require 'beaglebone/GPIO/GPIO'
3
3
  require 'beaglebone/GPIO/pins'
4
4
  require 'beaglebone/version'
5
5
 
6
+ # Top Level Module
7
+ #
6
8
  module Beaglebone
7
9
 
8
10
  # Just a friendly greeting :)
@@ -1,14 +1,18 @@
1
1
 
2
2
  module Beaglebone
3
+ # General Purpose I/O
4
+ #
3
5
  module GPIO
4
6
 
5
7
  # Returns an array of active GPIO pins
6
8
  #
7
- # @param [Bool] optional List all active pins including export and unexport utilites
9
+ # @param list_all [Bool] optional List all active pins including export and unexport utilites
8
10
  #
9
11
  # @example Return all active GPIO pins
10
12
  # Beaglebone::GPIO.list #=> ["gpiochip32", "gpiochip64", "gpiochip96", "gpiochip0"]
11
13
  #
14
+ # @return [Array] String array of active gpio pins
15
+ #
12
16
  def self.list(list_all = false)
13
17
  gpio_array = Dir.entries('/sys/class/gpio')
14
18
  gpio_array.delete('.')
@@ -22,5 +26,73 @@ module Beaglebone
22
26
  gpio_array
23
27
  end
24
28
 
29
+ # Enables a pin for GPIO
30
+ #
31
+ # @param pin [Object] Specifies a value from GPIO::PINS to enable
32
+ #
33
+ # @example
34
+ # Beaglebone::GPIO.enable_pin(:P9_12)
35
+ #
36
+ # @return [Boolean] Returns true for success, false otherwise
37
+ #
38
+ def self.enable_pin(pin)
39
+ pin = PINS[pin]
40
+ export = File.open('/sys/class/gpio/export', 'w')
41
+ return false if pin.nil? or export.nil?
42
+ export.puts(pin)
43
+ return true
44
+ end
45
+
46
+ # Disables a GPIO pin
47
+ #
48
+ # @param pin [Object] Specifies a value from GPIO::PINS
49
+ #
50
+ # @example
51
+ # Beaglebone::GPIO.disable_pin(:P9_12)
52
+ #
53
+ # @return [Boolean] Returns true for success, false otherwise
54
+ #
55
+ def self.disable_pin(pin)
56
+ pin = PINS[pin]
57
+ unexport = File.open('/sys/class/gpio/unexport', 'w')
58
+ return false if pin.nil? or unexport.nil?
59
+ unexport.puts(pin)
60
+ return true
61
+ end
62
+
63
+ # Set pin direction
64
+ #
65
+ # @param pin [Object] Specifies a value from GPIO::PINS
66
+ # @param direction [Object] Specifies a value from GPIO::DIRECTION
67
+ #
68
+ # @example
69
+ # Beaglebone::GPIO.set_direction(:P9_12, :OUT)
70
+ #
71
+ # @return [Boolean] Returns true for success, false otherwise
72
+ #
73
+ def self.set_direction(pin, direction)
74
+ dir_file = File.open("/sys/class/gpio/gpio#{PINS[pin]}/direction", 'w')
75
+ return false if dir_file.nil?
76
+ dir_file.puts(DIRECTION[direction])
77
+ return true
78
+ end
79
+
80
+ # Set pin value
81
+ #
82
+ # @param pin [Object] Specifies a value from GPIO::PINS
83
+ # @param value [Object] Specifies a value from GPIO::VALUE
84
+ #
85
+ # @example
86
+ # Beaglebone::GPIO.set_value(:P9_12, :HIGH)
87
+ #
88
+ # @return [Boolean] Returns true for success, false otherwise
89
+ #
90
+ def self.set_value(pin, value)
91
+ mode = File.open("/sys/class/gpio/gpio#{PINS[pin]/value}", 'w')
92
+ return false if mode.nil?
93
+ mode.puts(VALUE[value])
94
+ return true
95
+ end
96
+
25
97
  end
26
98
  end
@@ -1,6 +1,8 @@
1
1
 
2
2
  module Beaglebone
3
3
  module GPIO
4
+ DIRECTION = { :IN => 'in', :OUT => 'out', :LOW => 'in', :HIGH => 'out' }
5
+ VALUE = { :LOW => 0, :HIGH => 1, 0 => 0, 1 => 1 }
4
6
  PINS = {
5
7
  :P9_11 => 30, :P9_12 => 60,
6
8
  :P9_13 => 31, :P9_14 => 50,
@@ -3,6 +3,6 @@ module Beaglebone
3
3
 
4
4
  # Current Gem Version
5
5
  #
6
- VERSION = "0.0.5"
6
+ VERSION = "0.1.0"
7
7
 
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaglebone-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholaus Brabant
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-26 00:00:00.000000000 Z
11
+ date: 2016-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.4'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: coveralls
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.8.10
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.10
27
55
  description:
28
56
  email:
29
57
  - nicholaus.brabant@gmail.com
@@ -34,6 +62,7 @@ files:
34
62
  - ".gitignore"
35
63
  - ".rspec"
36
64
  - ".travis.yml"
65
+ - 99-beaglebone-rails.rules
37
66
  - CODE_OF_CONDUCT.md
38
67
  - Gemfile
39
68
  - LICENSE.txt
@@ -42,6 +71,7 @@ files:
42
71
  - beaglebone-rails.gemspec
43
72
  - bin/console
44
73
  - bin/setup
74
+ - install.sh
45
75
  - lib/beaglebone-rails.rb
46
76
  - lib/beaglebone/GPIO/GPIO.rb
47
77
  - lib/beaglebone/GPIO/pins.rb
@@ -58,7 +88,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
58
88
  requirements:
59
89
  - - ">="
60
90
  - !ruby/object:Gem::Version
61
- version: '0'
91
+ version: '1.9'
62
92
  required_rubygems_version: !ruby/object:Gem::Requirement
63
93
  requirements:
64
94
  - - ">="