beaglebone-rails 0.0.5 → 0.1.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.
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
  - - ">="