artoo 1.2.2 → 1.3.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: 50af62140dc15bced2e92c4164a56f98ecf21109
4
- data.tar.gz: 4ca6f889fa4e960867d06fe266d58fa5e39339d7
3
+ metadata.gz: 2ec3dffe53098b116ffd1d43926b191217004e92
4
+ data.tar.gz: 1ac14de8f26da07e301b070a4f49c9953d23e3d2
5
5
  SHA512:
6
- metadata.gz: 516085bfb3a1e26b7c8139b203bf49fa8b0d34ed82aae678169db99387be07380ff7824e43465eaf491a50a3a2aa5cc36293b92f5f57c9b3cc7c032c1184519e
7
- data.tar.gz: cb814d8ca08764353c9085668b515746a636e4bb6f63cb3e502b4127f65fd686f3f9c518afc0f94b9ef8cdcd4070e966c06fc16f382e9961ab51c5e16ef654bd
6
+ metadata.gz: 65a2047f7c1a45058ecd1c255912e6fe1ab5b9aaf9a3f476d20f385d150972266a37a036aeddea890fe3e0c0a8b27d04dc4264ef4fe6b27518caf3882c22f552
7
+ data.tar.gz: b44b3a7e6b8cc1caa1c60f39115c8778d5ec549dd2f7c25ca7c456df6a938a5441ab29ab99cbf0f91aab5fbf267406d4f2ab84c450a823bd079a55b1e2f00355
data/.travis.yml CHANGED
@@ -2,5 +2,8 @@ language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
4
  - 1.9.3
5
- # - jruby-1.7.4
5
+ - jruby-1.7.4
6
6
  - rbx-19mode
7
+ matrix:
8
+ allow_failures:
9
+ - rvm: jruby-1.7.4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- artoo (1.2.2)
4
+ artoo (1.3.0)
5
5
  celluloid (~> 0.15.0)
6
6
  celluloid-io (~> 0.15.0)
7
7
  multi_json (~> 1.6)
@@ -0,0 +1 @@
1
+ Dir[File.dirname(__FILE__) + '/io/*.rb'].each {|file| require file }
@@ -0,0 +1,86 @@
1
+ module Artoo
2
+ module Adaptors
3
+ module IO
4
+ class DigitalPin
5
+ attr_reader :pin_num, :mode, :pin_file, :status
6
+
7
+ GPIO_PATH = "/sys/class/gpio"
8
+ GPIO_DIRECTION_READ = "in"
9
+ GPIO_DIRECTION_WRITE = "out"
10
+ HIGH = 1
11
+ LOW = 0
12
+
13
+ def initialize(pin_num, mode)
14
+ @pin_num = pin_num
15
+
16
+ File.open("#{ GPIO_PATH }/export", "w") { |f| f.write("#{ pin_num }") }
17
+
18
+ # Sets the pin for read or write
19
+ set_mode(mode)
20
+ end
21
+
22
+ # Writes to the specified pin Digitally
23
+ # accepts values :high or :low, 1 or 0, "1" or "0"
24
+ def digital_write(value)
25
+ set_mode('w') unless @mode == 'w'
26
+
27
+ if value.is_a? Symbol
28
+ value = (value == :high) ? 1 : 0
29
+ end
30
+
31
+ value = value.to_i
32
+
33
+ raise StandardError unless ([HIGH, LOW].include? value)
34
+
35
+ @status = (value == 1) ? 'high' : 'low'
36
+
37
+ @pin_file.write(value)
38
+ @pin_file.flush
39
+ end
40
+
41
+ # Reads digitally from the specified pin on initialize
42
+ def digital_read
43
+ set_mode('r') unless @mode == 'r'
44
+
45
+ @pin_file.read
46
+ end
47
+
48
+ # Sets the pin in GPIO for read or write.
49
+ def set_mode(mode)
50
+ @mode = mode
51
+
52
+ if mode == 'w'
53
+ File.open("#{ GPIO_PATH }/gpio#{ pin_num }/direction", "w") { |f| f.write(GPIO_DIRECTION_WRITE) }
54
+ @pin_file = File.open("#{ GPIO_PATH }/gpio#{ pin_num }/value", "w")
55
+ elsif mode =='r'
56
+ File.open("#{ GPIO_PATH }/gpio#{ pin_num }/direction", "w") { |f| f.write(GPIO_DIRECTION_READ) }
57
+ @pin_file = File.open("#{ GPIO_PATH }/gpio#{pin_num}/value", "r")
58
+ end
59
+ end
60
+
61
+ def on?
62
+ (@status == 'high') ? true : false
63
+ end
64
+
65
+ def off?
66
+ !self.on?
67
+ end
68
+
69
+ # Sets digital write for the pin to HIGH
70
+ def on!
71
+ digital_write(:high)
72
+ end
73
+
74
+ # Sets digital write for the pin to LOW
75
+ def off!
76
+ digital_write(:off)
77
+ end
78
+
79
+ # Unexports the pin in GPIO to leave it free
80
+ def close
81
+ File.open("#{ GPIO_PATH }/unexport", "w") { |f| f.write("#{pin_num}") }
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,42 @@
1
+ module Artoo
2
+ module Adaptors
3
+ module IO
4
+ class I2c
5
+ attr_reader :handle, :address, :i2c_location
6
+
7
+ I2C_SLAVE = 0x0703
8
+
9
+ def initialize(i2c_location, address)
10
+ @i2c_location = i2c_location
11
+ start(address)
12
+ end
13
+
14
+ def start(address)
15
+ @address = address
16
+ @handle = File.open(@i2c_location, 'r+')
17
+ @handle.ioctl(I2C_SLAVE, @address)
18
+
19
+ write 0
20
+ end
21
+
22
+ def write(*data)
23
+ ret = ""
24
+ ret.force_encoding("US-ASCII")
25
+ data.each do |n|
26
+ ret << [n].pack("v")[0]
27
+ ret << [n].pack("v")[1]
28
+ end
29
+ @handle.write(ret)
30
+ end
31
+
32
+ def read(len)
33
+ begin
34
+ @handle.read_nonblock(len).unpack("C#{len}")
35
+ rescue Exception => e
36
+ start(@address)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
data/lib/artoo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Artoo
2
2
  unless const_defined?('VERSION')
3
- VERSION = "1.2.2"
3
+ VERSION = "1.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artoo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ron Evans
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-09-27 00:00:00.000000000 Z
15
+ date: 2013-10-04 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: celluloid
@@ -199,6 +199,9 @@ files:
199
199
  - examples/wiiclassic.rb
200
200
  - lib/artoo.rb
201
201
  - lib/artoo/adaptors/adaptor.rb
202
+ - lib/artoo/adaptors/io.rb
203
+ - lib/artoo/adaptors/io/digital_pin.rb
204
+ - lib/artoo/adaptors/io/i2c.rb
202
205
  - lib/artoo/adaptors/loopback.rb
203
206
  - lib/artoo/adaptors/test.rb
204
207
  - lib/artoo/api/api.rb