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.
- data/lib/wall_e/pin.rb +21 -2
- data/lib/wall_e/version.rb +1 -1
- data/test/pin_test.rb +45 -1
- data/wall_e.gemspec +1 -1
- metadata +4 -4
data/lib/wall_e/pin.rb
CHANGED
@@ -3,7 +3,7 @@ require 'forwardable'
|
|
3
3
|
module WallE
|
4
4
|
class Pin
|
5
5
|
extend Forwardable
|
6
|
-
|
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
|
-
|
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
|
data/lib/wall_e/version.rb
CHANGED
data/test/pin_test.rb
CHANGED
@@ -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
|
data/wall_e.gemspec
CHANGED
@@ -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
|
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
|
+
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-
|
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
|
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
|
45
|
+
version: 0.1.0
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: event_spitter
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|