wall_e 0.0.4 → 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.
@@ -3,7 +3,7 @@ require 'forwardable'
3
3
  module WallE
4
4
  class Pin
5
5
  extend Forwardable
6
- class UnsupportedModeError < StandardError; end
6
+ UnsupportedModeError = Class.new(StandardError)
7
7
 
8
8
  # Internal: Fixnum byte for pin mode input.
9
9
  INPUT = 0x00
@@ -33,6 +33,7 @@ module WallE
33
33
  @number = number
34
34
  @board = board
35
35
  @onboard_pin = @board.pins[@number]
36
+ @reporting = false
36
37
  set_mode(mode)
37
38
  end
38
39
 
@@ -86,8 +87,26 @@ module WallE
86
87
  @onboard_pin.value
87
88
  end
88
89
 
90
+ # Public: Start pin reporting.
91
+ #
92
+ # Returns nothing.
93
+ # Raises UnsupportedModeError if the pin's mode is not INPUT.
89
94
  def start_reporting
90
- @board.start_pin_reporting
95
+ raise UnsupportedModeError unless current_mode == INPUT
96
+ @board.toggle_pin_reporting(@number)
97
+ @reporting = true
98
+ end
99
+
100
+ # Public: Stop pin reporting.
101
+ #
102
+ # Returns nothing.
103
+ def stop_reporting
104
+ @reporting = false
105
+ @board.toggle_pin_reporting(@number, LOW)
106
+ end
107
+
108
+ def reporting?
109
+ @reporting
91
110
  end
92
111
  end
93
112
  end
@@ -1,3 +1,3 @@
1
1
  module WallE
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -12,7 +12,6 @@ DummyBoard = Class.new do
12
12
 
13
13
  def digital_write(*args); args.length; end
14
14
  def set_pin_mode(pin_number, mode); pin_number; end
15
-
16
15
  end
17
16
 
18
17
  class PinTest < MiniTest::Unit::TestCase
@@ -79,4 +78,49 @@ class PinTest < MiniTest::Unit::TestCase
79
78
 
80
79
  board.verify
81
80
  end
81
+
82
+ def test_pin_not_in_input_mode_cannot_report
83
+ board_pins = []
84
+ board_pins.insert(13, OpenStruct.new(mode: WallE::Pin::PWM, supported_modes: Array(0..3)))
85
+
86
+ board = DummyBoard.new(board_pins)
87
+
88
+ pin = WallE::Pin.new(13, board)
89
+
90
+ assert_raises(WallE::Pin::UnsupportedModeError) do
91
+ pin.start_reporting
92
+ end
93
+ end
94
+
95
+ def test_start_pin_reporting
96
+ pin_number = 13
97
+ board_pins = []
98
+ board_pins.insert(pin_number, OpenStruct.new(mode: WallE::Pin::INPUT, supported_modes: Array(0..4)))
99
+
100
+ board = MiniTest::Mock.new
101
+ board.expect(:pins, board_pins)
102
+ board.expect(:toggle_pin_reporting, true, [pin_number])
103
+
104
+ pin = WallE::Pin.new(pin_number, board, WallE::Pin::INPUT)
105
+
106
+ pin.start_reporting
107
+
108
+ board.verify
109
+ end
110
+
111
+ def test_stop_pin_reporting
112
+ pin_number = 13
113
+ board_pins = []
114
+ board_pins.insert(pin_number, OpenStruct.new(mode: WallE::Pin::INPUT, supported_modes: Array(0..4)))
115
+
116
+ board = MiniTest::Mock.new
117
+ board.expect(:pins, board_pins)
118
+ board.expect(:toggle_pin_reporting, true, [pin_number, WallE::Pin::LOW])
119
+
120
+ pin = WallE::Pin.new(pin_number, board, WallE::Pin::INPUT)
121
+
122
+ pin.stop_reporting
123
+
124
+ board.verify
125
+ end
82
126
  end
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
 
18
18
 
19
19
  gem.add_development_dependency("minitest", "~> 3.3.0")
20
- gem.add_runtime_dependency("firmata", "~> 0.0.7")
20
+ gem.add_runtime_dependency("firmata", "~> 0.1.0")
21
21
  gem.add_runtime_dependency("event_spitter", "~> 0.5.0")
22
22
  gem.add_runtime_dependency("pry", "~> 0.9.10")
23
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wall_e
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-20 00:00:00.000000000 Z
12
+ date: 2012-09-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 0.0.7
37
+ version: 0.1.0
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 0.0.7
45
+ version: 0.1.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: event_spitter
48
48
  requirement: !ruby/object:Gem::Requirement