artoo-beaglebone 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: da58ec62c81ebfdea9be0e49806cb6790b1816cf
4
+ data.tar.gz: adf28851c3b42c2c3722f10d2e54bd19feed2bbd
5
+ SHA512:
6
+ metadata.gz: 36f9b54633c413b170dd270aab9847704faf33e3e8a7bc805a83e17f984baca027e16aed96fb7effee8ba1e8416b0e5d499271b30552f45cf1f68618df19ac3a
7
+ data.tar.gz: 00918328fea3788e53bf5327b7c88c0586e936d5f2ff387db5cc5d45703a3a460718d55c36143818334d1915112cb60092725bac2226c3703a9b2d189db8d799
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ .rvmrc
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in artoo-beaglebone.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,65 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ artoo-beaglebone (0.1.0)
5
+ artoo (>= 1.3.0)
6
+ artoo-gpio
7
+ artoo-i2c
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ artoo (1.3.0)
13
+ celluloid (~> 0.15.0)
14
+ celluloid-io (~> 0.15.0)
15
+ multi_json (~> 1.6)
16
+ pry (~> 0.9)
17
+ rake
18
+ reel (~> 0.4.0)
19
+ thor (~> 0.18.1)
20
+ artoo-gpio (0.2.1)
21
+ artoo (>= 1.2.2)
22
+ artoo-i2c (0.3.0)
23
+ artoo (>= 1.3.0)
24
+ celluloid (0.15.1)
25
+ timers (~> 1.1.0)
26
+ celluloid-io (0.15.0)
27
+ celluloid (>= 0.15.0)
28
+ nio4r (>= 0.5.0)
29
+ coderay (1.0.9)
30
+ http (0.5.0)
31
+ http_parser.rb
32
+ http_parser.rb (0.6.0.beta.2)
33
+ metaclass (0.0.1)
34
+ method_source (0.8.2)
35
+ minitest (5.0.8)
36
+ minitest-happy (1.0.0)
37
+ mocha (0.14.0)
38
+ metaclass (~> 0.0.1)
39
+ multi_json (1.8.1)
40
+ nio4r (0.5.0)
41
+ pry (0.9.12.2)
42
+ coderay (~> 1.0.5)
43
+ method_source (~> 0.8)
44
+ slop (~> 3.4)
45
+ rake (10.1.0)
46
+ reel (0.4.0)
47
+ celluloid (>= 0.15.1)
48
+ celluloid-io (>= 0.15.0)
49
+ http (>= 0.5.0)
50
+ http_parser.rb (>= 0.6.0.beta.2)
51
+ websocket_parser (>= 0.1.4)
52
+ slop (3.4.6)
53
+ thor (0.18.1)
54
+ timers (1.1.0)
55
+ websocket_parser (0.1.4)
56
+ http
57
+
58
+ PLATFORMS
59
+ ruby
60
+
61
+ DEPENDENCIES
62
+ artoo-beaglebone!
63
+ minitest (>= 5.0)
64
+ minitest-happy
65
+ mocha (>= 0.14.0)
data/LICENSE ADDED
@@ -0,0 +1,2 @@
1
+
2
+ # TODO: put your license file here
data/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # Artoo Adaptor For Beaglebone
2
+
3
+ This repository contains the Artoo (http://artoo.io/) adaptor for the [Beaglebone Black](http://beagleboard.org/Products/BeagleBone+Black/).
4
+
5
+ Artoo is a open source micro-framework for robotics using Ruby.
6
+
7
+ For more information about Artoo, check out our repo at https://github.com/hybridgroup/artoo
8
+
9
+ [![Code Climate](https://codeclimate.com/github/hybridgroup/artoo-beaglebone.png)](https://codeclimate.com/github/hybridgroup/artoo-beaglebone) [![Build Status](https://travis-ci.org/hybridgroup/artoo-beaglebone.png?branch=master)](https://travis-ci.org/hybridgroup/artoo-beaglebone)
10
+
11
+ ## Installing
12
+
13
+ ```
14
+ gem install artoo-beaglebone
15
+ ```
16
+
17
+ ## Using
18
+
19
+ ```ruby
20
+ require 'artoo'
21
+
22
+ connection :beaglebone, :adaptor => :beaglebone
23
+ device :led, :driver => :led, :pin => :P9_12
24
+
25
+ work do
26
+ every 1.second do
27
+ led.on? ? led.off : led.on
28
+ end
29
+ end
30
+ ```
31
+
32
+ ## Getting Started
33
+
34
+ The fastest way to get started with your Beaglebone Black is to use our provided [image](https://github.com/hybridgroup/artoo-beaglebone/wiki/artoo-image-instructions)
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.pattern = "test/**/*_test.rb"
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "artoo-beaglebone/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "artoo-beaglebone"
7
+ s.version = Artoo::Beaglebone::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Adrian Zankich", "Ron Evans"]
10
+ s.email = ["artoo@hybridgroup.com"]
11
+ s.homepage = "https://github.com/hybridgroup/artoo-beaglebone"
12
+ s.summary = %q{Artoo adaptor for Beaglebone}
13
+ s.description = %q{Artoo adaptor for Beaglebone}
14
+
15
+ s.rubyforge_project = "artoo-beaglebone"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_runtime_dependency 'artoo', '>= 1.3.0'
23
+ s.add_runtime_dependency 'artoo-gpio'
24
+ s.add_runtime_dependency 'artoo-i2c'
25
+ s.add_development_dependency 'minitest', '>= 5.0'
26
+ s.add_development_dependency 'minitest-happy'
27
+ s.add_development_dependency 'mocha', '>= 0.14.0'
28
+ end
data/examples/blink.rb ADDED
@@ -0,0 +1,10 @@
1
+ require 'artoo'
2
+
3
+ connection :beaglebone, :adaptor => :beaglebone
4
+ device :led, :driver => :led, :pin => :P9_12
5
+
6
+ work do
7
+ every 1.second do
8
+ led.on? ? led.off : led.on
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ require 'artoo'
2
+
3
+ connection :beaglebone, :adaptor => :beaglebone
4
+ device :wiichuck, :driver => :wiichuck, :connection => :beaglebone, :interval => 0.01
5
+
6
+ work do
7
+ on wiichuck, :c_button => proc { puts "c button pressed!" }
8
+ on wiichuck, :z_button => proc { puts "z button pressed!" }
9
+ on wiichuck, :joystick => proc { |*value|
10
+ puts "joystick x: #{value[1][:x]}, y: #{value[1][:y]}"
11
+ }
12
+ end
@@ -0,0 +1,2 @@
1
+ require 'lib/artoo/adaptors/beaglebone'
2
+ require 'lib/artoo-beaglebone/version'
@@ -0,0 +1,5 @@
1
+ module Artoo
2
+ module Beaglebone
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,135 @@
1
+ require 'artoo/adaptors/adaptor'
2
+ require 'artoo/adaptors/io'
3
+
4
+ module Artoo
5
+ module Adaptors
6
+ # Connect to a beaglebone device
7
+ # @see device documentation for more information
8
+ class Beaglebone < Adaptor
9
+ include Artoo::Adaptors::IO
10
+ PINS = {
11
+ :P8_3 => 38,
12
+ :P8_4 => 39,
13
+ :P8_5 => 34,
14
+ :P8_6 => 35,
15
+ :P8_7 => 66,
16
+ :P8_8 => 67,
17
+ :P8_9 => 69,
18
+ :P8_10 => 68,
19
+ :P8_11 => 45,
20
+ :P8_12 => 44,
21
+ :P8_13 => 23,
22
+ :P8_14 => 26,
23
+ :P8_15 => 47,
24
+ :P8_16 => 46,
25
+ :P8_17 => 27,
26
+ :P8_18 => 65,
27
+ :P8_19 => 22,
28
+ :P8_20 => 63,
29
+ :P8_21 => 62,
30
+ :P8_22 => 37,
31
+ :P8_23 => 36,
32
+ :P8_24 => 33,
33
+ :P8_25 => 32,
34
+ :P8_26 => 61,
35
+ :P8_27 => 86,
36
+ :P8_28 => 88,
37
+ :P8_29 => 87,
38
+ :P8_30 => 89,
39
+ :P8_31 => 10,
40
+ :P8_32 => 11,
41
+ :P8_33 => 9,
42
+ :P8_34 => 81,
43
+ :P8_35 => 8,
44
+ :P8_36 => 80,
45
+ :P8_37 => 78,
46
+ :P8_38 => 79,
47
+ :P8_39 => 76,
48
+ :P8_40 => 77,
49
+ :P8_41 => 74,
50
+ :P8_42 => 75,
51
+ :P8_43 => 72,
52
+ :P8_44 => 73,
53
+ :P8_45 => 70,
54
+ :P8_46 => 71,
55
+ :P9_11 => 30,
56
+ :P9_12 => 60,
57
+ :P9_13 => 31,
58
+ :P9_14 => 50,
59
+ :P9_15 => 48,
60
+ :P9_16 => 51,
61
+ :P9_17 => 5,
62
+ :P9_18 => 4,
63
+ :P9_19 => 13,
64
+ :P9_20 => 12,
65
+ :P9_21 => 3,
66
+ :P9_22 => 2,
67
+ :P9_23 => 49,
68
+ :P9_24 => 15,
69
+ :P9_25 => 117,
70
+ :P9_26 => 14,
71
+ :P9_27 => 115,
72
+ :P9_28 => 113,
73
+ :P9_29 => 111,
74
+ :P9_30 => 112,
75
+ :P9_31 => 110
76
+ }
77
+ attr_reader :pins, :i2c
78
+
79
+ # Name of device
80
+ # @return [String]
81
+ def firmware_name
82
+ "Beaglebone"
83
+ end
84
+
85
+ # Version of device
86
+ # @return [String]
87
+ def version
88
+ Artoo::Beaglebone::VERSION
89
+ end
90
+
91
+ def digital_write pin, val
92
+ pin = beaglebone_pin(pin, "w")
93
+ pin.digital_write(val)
94
+ end
95
+
96
+ def digital_read pin
97
+ pin = beaglebone_pin(pin, "r")
98
+ pin.digital_read
99
+ end
100
+
101
+ def i2c_start address
102
+ @i2c = I2c.new i2c2_file, address
103
+ end
104
+
105
+ def i2c_write *data
106
+ i2c.write *data
107
+ end
108
+
109
+ def i2c_read len
110
+ i2c.read len
111
+ end
112
+
113
+ private
114
+
115
+ def translate_pin pin
116
+ begin
117
+ PINS.fetch(pin.upcase.to_sym)
118
+ rescue Exception => e
119
+ raise "Not a valid pin"
120
+ end
121
+ end
122
+
123
+ def beaglebone_pin pin, mode
124
+ @pins = [] if @pins.nil?
125
+ pin = translate_pin pin
126
+ @pins[pin] = DigitalPin.new(pin, mode) if @pins[pin].nil? || @pins[pin].mode != mode
127
+ @pins[pin]
128
+ end
129
+
130
+ def i2c2_file
131
+ "/dev/i2c-1"
132
+ end
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,62 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+ require 'artoo/adaptors/beaglebone'
3
+
4
+ describe Artoo::Adaptors::Beaglebone do
5
+ before do
6
+ @adaptor = Artoo::Adaptors::Beaglebone.new
7
+ end
8
+
9
+ describe "device info interface" do
10
+ it "#firmware_name" do
11
+ @adaptor.firmware_name.must_equal "Beaglebone"
12
+ end
13
+
14
+ it "#version" do
15
+ @adaptor.version.must_equal Artoo::Beaglebone::VERSION
16
+ end
17
+ end
18
+
19
+ describe "digital GPIO interface" do
20
+ it "#digital_read" do
21
+ @pin = mock('pin')
22
+ @adaptor.expects(:beaglebone_pin).with(:P1_1, "r").returns(@pin)
23
+ @pin.expects(:digital_read).returns(true)
24
+
25
+ @adaptor.digital_read(:P1_1).must_equal true
26
+ end
27
+
28
+ it "#digital_write" do
29
+ @pin = mock('pin')
30
+ @adaptor.expects(:beaglebone_pin).with(:P1_1, "w").returns(@pin)
31
+ @pin.expects(:digital_write).with(true)
32
+
33
+ @adaptor.digital_write(:P1_1, true)
34
+ end
35
+ end
36
+
37
+ describe "i2c interface" do
38
+ it "#i2c_start" do
39
+ @adaptor.expects(:i2c2_file).returns '/a/file'
40
+ @i2c = mock('i2c')
41
+ Artoo::Adaptors::IO::I2c.expects(:new).with('/a/file', 0xFF).returns(@i2c)
42
+
43
+ @adaptor.i2c_start 0xFF
44
+ end
45
+
46
+ it "#i2c_read" do
47
+ @i2c = mock('i2c')
48
+ @i2c.expects(:read).with(6)
49
+ @adaptor.expects(:i2c).returns @i2c
50
+
51
+ @adaptor.i2c_read 6
52
+ end
53
+
54
+ it "#i2c_write" do
55
+ @i2c = mock('i2c')
56
+ @i2c.expects(:write).with(0x01, 0x03, 0x05)
57
+ @adaptor.expects(:i2c).returns @i2c
58
+
59
+ @adaptor.i2c_write 0x01, 0x03, 0x05
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,10 @@
1
+ require 'minitest/autorun'
2
+ require 'mocha/setup'
3
+ require 'artoo/robot'
4
+
5
+ Celluloid.logger = nil
6
+
7
+ MiniTest::Spec.before do
8
+ Celluloid.shutdown
9
+ Celluloid.boot
10
+ end
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: artoo-beaglebone
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Adrian Zankich
8
+ - Ron Evans
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-05 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: artoo
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: 1.3.0
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: 1.3.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: artoo-gpio
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: artoo-i2c
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: minitest
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '5.0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '5.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: minitest-happy
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: mocha
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: 0.14.0
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: 0.14.0
98
+ description: Artoo adaptor for Beaglebone
99
+ email:
100
+ - artoo@hybridgroup.com
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - .gitignore
106
+ - Gemfile
107
+ - Gemfile.lock
108
+ - LICENSE
109
+ - README.md
110
+ - Rakefile
111
+ - artoo-beaglebone.gemspec
112
+ - examples/blink.rb
113
+ - examples/wiichuck.rb
114
+ - lib/artoo-beaglebone.rb
115
+ - lib/artoo-beaglebone/version.rb
116
+ - lib/artoo/adaptors/beaglebone.rb
117
+ - test/adaptors/beaglebone_adaptor_test.rb
118
+ - test/test_helper.rb
119
+ homepage: https://github.com/hybridgroup/artoo-beaglebone
120
+ licenses: []
121
+ metadata: {}
122
+ post_install_message:
123
+ rdoc_options: []
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ requirements: []
137
+ rubyforge_project: artoo-beaglebone
138
+ rubygems_version: 2.0.3
139
+ signing_key:
140
+ specification_version: 4
141
+ summary: Artoo adaptor for Beaglebone
142
+ test_files: []