wall_e 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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