pi_driver 0.0.1 → 0.0.2

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: dfc021b1477c6a5a8dee6afc2f5550dcc7eeb510
4
- data.tar.gz: e6bd262304d0f0a689bc600710d8180e46ade1c9
3
+ metadata.gz: db8ff0ea07f81396952ed0e32dcb93568789b07b
4
+ data.tar.gz: f9bbf070326600cc2baa2af12753a71660f0924c
5
5
  SHA512:
6
- metadata.gz: 7339065022461a951bd697926a746c1925bc93cc3e193a540dd93697f375caefdd28425b9cd36ab1163c7d97c01f04fdca83adbe5229e475538876b5d63835b8
7
- data.tar.gz: b94b27a6d86ae44c991729e764f7c177f480886ae3e2f91a6ff6ed0c965394cc00429608522f1185056fee493804133a469f075a3f9784454251ecb73a6c8647
6
+ metadata.gz: 305c2726c2f1063ebb0159f7ff50d99a1655e94cdd6c812c2801c80bb155f7b7c45a66aadc9cdff1389efa5bd009c862757b876610961a82603bccebc373458d
7
+ data.tar.gz: 6e50dda35d0213b347ddc5fb0ae5577cdaa8256bd9d1fb341fc99732fb8a0dadc311d63c3073fae83b3b2207b94a17acf448cca6a2dc3d5e85ffdfaf55fee4a0
data/bin/pin.rb CHANGED
@@ -1,3 +1,4 @@
1
+ #!
1
2
  # ruby -Ilib ./bin/pin.rb 10
2
3
 
3
4
  require 'pi_driver'
@@ -19,6 +19,8 @@ module PiDriver
19
19
  drive_clock_pin
20
20
  end
21
21
 
22
+ alias_method :restart, :start
23
+
22
24
  def write(byte)
23
25
  send_data byte
24
26
  byte
@@ -37,13 +39,15 @@ module PiDriver
37
39
  success
38
40
  end
39
41
 
40
- private
42
+ def self.prepare_address_for_write(address_byte)
43
+ address_byte << 1
44
+ end
41
45
 
42
- # def send_address(direction = :read)
43
- # byte = @slave_address << 1
44
- # byte += Pin::Value::HIGH if direction == :read
45
- # send_data byte
46
- # end
46
+ def self.prepare_address_for_read(address_byte)
47
+ (address_byte << 1) | 1
48
+ end
49
+
50
+ private
47
51
 
48
52
  def send_data(byte)
49
53
  bits = byte_to_bits byte
@@ -94,8 +98,13 @@ module PiDriver
94
98
  end
95
99
 
96
100
  def observe_clock_stretch
97
- # 1ms timeout typical
98
- loop { break if @clock_pin.set?}
101
+ clock_stretch_began_at = Time.now
102
+ one_millisecond = 0.001
103
+ loop do
104
+ elapsed_time = Time.now - clock_stretch_began_at
105
+ timed_out = elapsed_time > one_millisecond
106
+ break if @clock_pin.set? || timed_out
107
+ end
99
108
  end
100
109
 
101
110
  def observe_speed_requirement
data/lib/pi_driver/pin.rb CHANGED
@@ -1,31 +1,29 @@
1
- require 'pi_driver/pin/argument_helper'
2
- require 'pi_driver/pin/board'
3
- require 'pi_driver/pin/direction'
4
- require 'pi_driver/pin/edge'
5
- require 'pi_driver/pin/file_helper'
6
- require 'pi_driver/pin/value'
1
+ require_relative 'pin/argument_helper'
2
+ require_relative 'pin/board'
3
+ require_relative 'pin/direction'
4
+ require_relative 'pin/edge'
5
+ require_relative 'pin/file_helper'
6
+ require_relative 'pin/value'
7
7
 
8
8
  module PiDriver
9
9
  class Pin
10
10
  attr_reader :gpio_number
11
11
 
12
12
  def initialize(gpio_number, options = {})
13
- @gpio_number = gpio_number
13
+ @argument_helper = ArgumentHelper.new gpio_number
14
14
 
15
- @argument_helper = ArgumentHelper.new @gpio_number
16
- @argument_helper.check(:gpio_number, gpio_number, Board::VALID_NUMBERS)
15
+ @gpio_number = gpio_number
16
+ @argument_helper.check(:gpio_number, @gpio_number, Board::VALID_NUMBERS)
17
17
 
18
18
  @direction = options[:direction] || Direction::INPUT
19
+ @argument_helper.check(:direction, @direction, Direction::VALID_DIRECTIONS)
20
+
19
21
  @value = options[:value] || Value::LOW
22
+ @argument_helper.check(:value, @value, Value::VALID_VALUES)
20
23
 
21
24
  @file_helper = FileHelper.new @gpio_number
22
-
23
25
  @file_helper.write_export
24
-
25
- @argument_helper.check(:direction, @direction, Direction::VALID_DIRECTIONS)
26
26
  @file_helper.write_direction(@direction)
27
-
28
- @argument_helper.check(:value, @value, Value::VALID_VALUES)
29
27
  input? ? @file_helper.read_value : @file_helper.write_value(@value)
30
28
  end
31
29
 
@@ -57,10 +55,14 @@ module PiDriver
57
55
  @value
58
56
  end
59
57
 
58
+ alias_method :off, :clear
59
+
60
60
  def clear?
61
61
  value == Value::LOW
62
62
  end
63
63
 
64
+ alias_method :off?, :clear?
65
+
64
66
  def set
65
67
  return unless output?
66
68
  @value = Value::HIGH
@@ -68,10 +70,14 @@ module PiDriver
68
70
  @value
69
71
  end
70
72
 
73
+ alias_method :on, :set
74
+
71
75
  def set?
72
76
  value == Value::HIGH
73
77
  end
74
78
 
79
+ alias_method :on?, :set?
80
+
75
81
  def value
76
82
  input? ? @file_helper.read_value : @value
77
83
  end
data/lib/pi_driver.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'pi_driver/pin'
2
- require 'pi_driver/i2c_master'
1
+ require_relative 'pi_driver/pin'
2
+ require_relative 'pi_driver/i2c_master'
3
3
 
4
4
  module PiDriver
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pi_driver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Winningham
@@ -14,16 +14,16 @@ dependencies:
14
14
  name: mocha
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.4.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.4.0
27
27
  description: Ruby driver for Raspberry Pi
28
28
  email: lucas.winningham@gmail.com
29
29
  executables: