hybridgroup-firmata 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
data/test/board_test.rb CHANGED
@@ -4,220 +4,224 @@ require 'minitest/pride'
4
4
  require_relative '../lib/firmata'
5
5
  require_relative 'fake_serial_port'
6
6
 
7
- class BoardTest < MiniTest::Unit::TestCase
7
+ module Firmata
8
8
 
9
- def mock_serial_port(*args, &block)
10
- mock_port = MiniTest::Mock.new
11
- mock_port.expect(:is_a?, false, [String])
9
+ class BoardTest < MiniTest::Unit::TestCase
12
10
 
13
- if block_given?
14
- yield mock_port
15
- else
16
- expected = args.map(&:chr).join
17
- mock_port.expect(:write_nonblock, 1, [expected])
18
- end
11
+ def mock_serial_port(*args, &block)
12
+ mock_port = MiniTest::Mock.new
13
+ mock_port.expect(:is_a?, false, [String])
19
14
 
20
- mock_port
21
- end
15
+ if block_given?
16
+ yield mock_port
17
+ else
18
+ expected = args.map(&:chr).join
19
+ mock_port.expect(:write_nonblock, 1, [expected])
20
+ end
22
21
 
23
- def test_writing_report_version
24
- mock_sp = mock_serial_port(Firmata::Board::REPORT_VERSION)
22
+ mock_port
23
+ end
25
24
 
26
- board = Firmata::Board.new(mock_sp)
27
- board.report_version
25
+ def test_writing_report_version
26
+ mock_sp = mock_serial_port(Board::REPORT_VERSION)
28
27
 
29
- mock_sp.verify
30
- end
28
+ board = Board.new(mock_sp)
29
+ board.report_version
31
30
 
32
- def test_processing_report_version
33
- board = Firmata::Board.new(FakeSerialPort.new)
34
- board.report_version
35
- board.read_and_process
31
+ mock_sp.verify
32
+ end
36
33
 
37
- assert_equal '2.3', board.version
38
- end
34
+ def test_processing_report_version
35
+ board = Board.new(FakeSerialPort.new)
36
+ board.report_version
37
+ board.read_and_process
39
38
 
40
- def test_writing_capability_query
41
- mock_sp = mock_serial_port(Firmata::Board::START_SYSEX, Firmata::Board::CAPABILITY_QUERY, Firmata::Board::END_SYSEX)
39
+ assert_equal '2.3', board.version
40
+ end
42
41
 
43
- board = Firmata::Board.new(mock_sp)
44
- board.query_capabilities
42
+ def test_writing_capability_query
43
+ mock_sp = mock_serial_port(Board::START_SYSEX, Board::CAPABILITY_QUERY, Board::END_SYSEX)
45
44
 
46
- mock_sp.verify
47
- end
45
+ board = Board.new(mock_sp)
46
+ board.query_capabilities
48
47
 
49
- def test_processing_capabilities_query
50
- board = Firmata::Board.new(FakeSerialPort.new)
51
- board.query_capabilities
52
- board.read_and_process
48
+ mock_sp.verify
49
+ end
53
50
 
54
- assert_equal 20, board.pins.size
55
- end
51
+ def test_processing_capabilities_query
52
+ board = Board.new(FakeSerialPort.new)
53
+ board.query_capabilities
54
+ board.read_and_process
56
55
 
57
- def test_writing_analog_mapping_query
58
- mock_sp = mock_serial_port(Firmata::Board::START_SYSEX, Firmata::Board::ANALOG_MAPPING_QUERY, Firmata::Board::END_SYSEX)
56
+ assert_equal 20, board.pins.size
57
+ end
59
58
 
60
- board = Firmata::Board.new(mock_sp)
61
- board.query_analog_mapping
59
+ def test_writing_analog_mapping_query
60
+ mock_sp = mock_serial_port(Board::START_SYSEX, Board::ANALOG_MAPPING_QUERY, Board::END_SYSEX)
62
61
 
63
- mock_sp.verify
64
- end
62
+ board = Board.new(mock_sp)
63
+ board.query_analog_mapping
65
64
 
66
- def test_processing_analog_mapping_query
67
- board = Firmata::Board.new(FakeSerialPort.new)
68
- board.query_capabilities
69
- board.read_and_process
65
+ mock_sp.verify
66
+ end
70
67
 
71
- board.query_analog_mapping
72
- board.read_and_process
68
+ def test_processing_analog_mapping_query
69
+ board = Board.new(FakeSerialPort.new)
70
+ board.query_capabilities
71
+ board.read_and_process
73
72
 
74
- assert_equal 6, board.analog_pins.size
75
- end
73
+ board.query_analog_mapping
74
+ board.read_and_process
76
75
 
77
- def test_processing_digital_message
78
- board = Firmata::Board.new(FakeSerialPort.new)
76
+ assert_equal 6, board.analog_pins.size
77
+ end
79
78
 
80
- board.query_capabilities
81
- board.read_and_process
79
+ def test_processing_digital_message
80
+ board = Board.new(FakeSerialPort.new)
82
81
 
83
- board.query_analog_mapping
84
- board.read_and_process
82
+ board.query_capabilities
83
+ board.read_and_process
85
84
 
86
- pin = board.pins[8]
87
- pin.mode = Firmata::Board::INPUT
85
+ board.query_analog_mapping
86
+ board.read_and_process
88
87
 
89
- board.process("\x91\x01\x00")
88
+ pin = board.pins[8]
89
+ pin.mode = Board::INPUT
90
90
 
91
- assert_equal Firmata::Board::HIGH, pin.value
92
- end
91
+
92
+ board.send :process, "\x91\x01\x00"
93
93
 
94
- def test_set_pin_mode
95
- mock_sp = mock_serial_port(Firmata::Board::PIN_MODE, 13, Firmata::Board::OUTPUT)
94
+ assert_equal Board::HIGH, pin.value
95
+ end
96
96
 
97
- board = Firmata::Board.new(mock_sp)
98
- board.pins[13] = Firmata::Board::Pin.new([0, 1, 4], 0, 0, nil)
97
+ def test_set_pin_mode
98
+ mock_sp = mock_serial_port(Board::PIN_MODE, 13, Board::OUTPUT)
99
99
 
100
- board.set_pin_mode(13, Firmata::Board::OUTPUT)
100
+ board = Board.new(mock_sp)
101
+ board.pins[13] = Board::Pin.new([0, 1, 4], 0, 0, nil)
101
102
 
102
- assert_equal Firmata::Board::OUTPUT, board.pins[13].mode
103
- mock_sp.verify
104
- end
103
+ board.set_pin_mode(13, Board::OUTPUT)
105
104
 
106
- def test_write_pin_state_query
107
- mock_sp = mock_serial_port(Firmata::Board::START_SYSEX, Firmata::Board::PIN_STATE_QUERY, 13, Firmata::Board::END_SYSEX)
105
+ assert_equal Board::OUTPUT, board.pins[13].mode
106
+ mock_sp.verify
107
+ end
108
108
 
109
- board = Firmata::Board.new(mock_sp)
110
- board.query_pin_state(13)
109
+ def test_write_pin_state_query
110
+ mock_sp = mock_serial_port(Board::START_SYSEX, Board::PIN_STATE_QUERY, 13, Board::END_SYSEX)
111
111
 
112
- mock_sp.verify
113
- end
112
+ board = Board.new(mock_sp)
113
+ board.query_pin_state(13)
114
114
 
115
- def test_processing_pin_state_query
116
- board = Firmata::Board.new(FakeSerialPort.new)
117
- board.query_capabilities
118
- board.read_and_process
119
-
120
- board.pins[13].mode = Firmata::Board::INPUT
115
+ mock_sp.verify
116
+ end
121
117
 
122
- board.query_pin_state(13)
123
- board.read_and_process
118
+ def test_processing_pin_state_query
119
+ board = Board.new(FakeSerialPort.new)
120
+ board.query_capabilities
121
+ board.read_and_process
124
122
 
125
- assert_equal Firmata::Board::OUTPUT, board.pins[13].mode
126
- end
123
+ board.pins[13].mode = Board::INPUT
127
124
 
125
+ board.query_pin_state(13)
126
+ board.read_and_process
128
127
 
129
- def test_toggling_pin_reporting
130
- mock_sp = mock_serial_port do |mock|
131
- mock.expect(:write_nonblock, 2, [[Firmata::Board::REPORT_DIGITAL | 13, 1].map(&:chr).join])
128
+ assert_equal Board::OUTPUT, board.pins[13].mode
132
129
  end
133
130
 
134
- board = Firmata::Board.new(mock_sp)
135
131
 
136
- board.toggle_pin_reporting(13)
137
- mock_sp.verify
132
+ def test_toggling_pin_reporting
133
+ mock_sp = mock_serial_port do |mock|
134
+ mock.expect(:write_nonblock, 2, [[Board::REPORT_DIGITAL | 13, 1].map(&:chr).join])
135
+ end
138
136
 
139
- mock_sp.expect(:write_nonblock, 2, [[Firmata::Board::REPORT_DIGITAL | 13, 0].map(&:chr).join])
140
- board.toggle_pin_reporting(13, 0)
141
- mock_sp.verify
137
+ board = Board.new(mock_sp)
142
138
 
143
- end
139
+ board.toggle_pin_reporting(13)
140
+ mock_sp.verify
144
141
 
145
- def test_processing_analog_message
146
- fake_port = FakeSerialPort.new
147
- board = Firmata::Board.new(fake_port)
142
+ mock_sp.expect(:write_nonblock, 2, [[Board::REPORT_DIGITAL | 13, 0].map(&:chr).join])
143
+ board.toggle_pin_reporting(13, 0)
144
+ mock_sp.verify
148
145
 
149
- board.query_capabilities
150
- board.read_and_process
146
+ end
151
147
 
152
- board.query_analog_mapping
153
- board.read_and_process
148
+ def test_processing_analog_message
149
+ fake_port = FakeSerialPort.new
150
+ board = Board.new(fake_port)
154
151
 
155
- fake_port.buffer = "\xE0\e\u0005\xE1N\u0004\xE2A\u0004\xE3C\u0004\xE4o\u0004\xE5f\u0004\xE0w\u0004\xE1]\u0004\xE2N\u0004\xE3I\u0004\xE4x\u0004\xE5m\u0004\xE0m\u0004\xE1`\u0004\xE2T\u0004\xE3L\u0004\xE4s\u0004\xE5l\u0004\xE0i\u0004\xE1`\u0004\xE2V\u0004\xE3N\u0004\xE4m\u0004\xE5j\u0004\xE0f\u0004\xE1^\u0004\xE2U\u0004\xE3O\u0004\xE4h\u0004\xE5g\u0004\xE0d\u0004\xE1\\\u0004\xE2T\u0004\xE3O\u0004\xE4d\u0004\xE5d\u0004\xE0b\u0004\xE1Z\u0004\xE2S\u0004\xE3N\u0004\xE4`\u0004\xE5a\u0004\xE0_\u0004\xE1X\u0004\xE2Q\u0004\xE3L\u0004\xE4\\\u0004\xE5^\u0004\xE0\\\u0004\xE1T\u0004\xE2N\u0004\xE3J\u0004\xE4X\u0004\xE5Z\u0004\xE0X\u0004\xE1Q\u0004\xE2K\u0004\xE3G\u0004\xE4T\u0004\xE5W\u0004\xE0V\u0004\xE1O\u0004\xE2H\u0004\xE3D\u0004\xE4Q\u0004\xE5T\u0004\xE0S\u0004\xE1L\u0004\xE2F\u0004\xE3B\u0004\xE4N\u0004\xE5Q\u0004\xE0P\u0004\xE1J\u0004\xE2C\u0004\xE3@\u0004\xE4K\u0004\xE5N\u0004\xE0N\u0004\xE1G\u0004\xE2A\u0004\xE3>\u0004\xE4I\u0004\xE5L\u0004\xE0L\u0004\xE1D\u0004\xE2?\u0004\xE3<\u0004\xE4F\u0004\xE5I\u0004\xE0I\u0004\xE1B\u0004\xE2=\u0004\xE39\u0004\xE4C\u0004\xE5F\u0004\xE0F\u0004\xE1?\u0004\xE2:\u0004\xE37\u0004\xE4@\u0004\xE5C\u0004\xE0C\u0004\xE1<\u0004\xE28\u0004\xE34\u0004\xE4>\u0004\xE5A\u0004\xE0A\u0004\xE1:\u0004\xE26\u0004\xE32\u0004\xE4<\u0004\xE5?\u0004\xE0?\u0004\xE19\u0004\xE24\u0004\xE31\u0004\xE4:\u0004\xE5=\u0004\xE0>\u0004\xE17\u0004\xE22\u0004\xE3/\u0004\xE49\u0004\xE5;\u0004\xE0<\u0004\xE15\u0004\xE20\u0004\xE3-\u0004\xE46\u0004\xE59\u0004\xE09\u0004\xE12\u0004\xE2.\u0004\xE3+\u0004\xE44\u0004\xE57\u0004\xE07\u0004\xE10\u0004\xE2,\u0004\xE3)\u0004\xE42\u0004\xE55\u0004\xE05\u0004\xE1.\u0004\xE2*\u0004\xE3'\u0004\xE40\u0004\xE52\u0004\xE03\u0004\xE1-\u0004\xE2(\u0004\xE3&\u0004\xE4/\u0004\xE51\u0004\xE02\u0004\xE1+\u0004\xE2&\u0004\xE3$\u0004\xE4-\u0004\xE50\u0004\xE00\u0004\xE1*\u0004\xE2%\u0004\xE3#\u0004\xE4,\u0004\xE5.\u0004\xE0/\u0004\xE1(\u0004\xE2$\u0004\xE3!\u0004\xE4*\u0004\xE5,\u0004\xE0-\u0004\xE1&\u0004\xE2\"\u0004\xE3\u001F\u0004\xE4(\u0004\xE5*\u0004\xE0+\u0004\xE1$\u0004\xE2 \u0004\xE3\u001D\u0004\xE4&\u0004\xE5(\u0004\xE0)\u0004\xE1\"\u0004\xE2\u001F\u0004\xE3\u001C\u0004\xE4%\u0004\xE5'\u0004\xE0(\u0004\xE1!\u0004\xE2\u001D\u0004\xE3\e\u0004\xE4$\u0004\xE5&\u0004\xE0&\u0004\xE1 \u0004\xE2\u001C\u0004\xE3\u001A\u0004\xE4#\u0004\xE5%\u0004\xE0&\u0004\xE1\u001F\u0004\xE2\e\u0004\xE3\u0019\u0004\xE4\"\u0004\xE5$\u0004\xE0$\u0004\xE1\u001E\u0004\xE2\u0019\u0004\xE3\u0018\u0004\xE4 \u0004\xE5\"\u0004\xE0\"\u0004\xE1\u001C\u0004\xE2\u0018\u0004\xE3\u0016\u0004\xE4\u001F\u0004\xE5 \u0004\xE0!\u0004\xE1\u001A\u0004\xE2\u0017\u0004\xE3\u0014\u0004\xE4\u001D\u0004\xE5\u001E\u0004\xE0\u001F\u0004\xE1\u0019\u0004\xE2\u0015\u0004\xE3\u0013\u0004\xE4\u001C\u0004\xE5\u001D\u0004\xE0\u001E\u0004\xE1\u0018\u0004\xE2\u0013\u0004\xE3\u0012\u0004\xE4\e\u0004\xE5\u001C\u0004\xE0\u001D\u0004\xE1\u0017\u0004\xE2\u0014\u0004\xE3\u0012\u0004\xE4\e\u0004\xE5\u001C\u0004\xE0\u001D\u0004\xE1\u0016\u0004\xE2\u0013\u0004\xE3\u0011\u0004\xE4\u001A\u0004\xE5\e\u0004\xE0\u001C\u0004\xE1\u0015\u0004\xE2\u0011\u0004\xE3\u0010\u0004\xE4\u0018\u0004\xE5\u0019\u0004\xE0\u001A\u0004\xE1\u0014\u0004\xE2\u0010\u0004\xE3\u000E\u0004\xE4\u0017\u0004\xE5\u0018\u0004\xE0\u0018\u0004\xE1\u0012\u0004\xE2\u000E\u0004\xE3\r\u0004\xE4\u0015\u0004\xE5\u0016\u0004\xE0\u0017\u0004\xE1\u0011\u0004\xE2\u000E\u0004\xE3\f\u0004\xE4\u0015\u0004\xE5\u0016\u0004\xE0\u0016\u0004\xE1\u0010\u0004\xE2\f\u0004\xE3\v\u0004\xE4\u0014\u0004\xE5\u0015\u0004\xE0\u0016\u0004\xE1\u000F\u0004\xE2\v\u0004\xE3\n\u0004\xE4\u0013\u0004\xE5\u0014\u0004\xE0\u0015\u0004\xE1\u000F\u0004\xE2\v\u0004\xE3\t\u0004\xE4\u0012\u0004\xE5\u0013\u0004\xE0\u0014\u0004\xE1\u000E\u0004\xE2\n\u0004\xE3\t\u0004\xE4\u0012\u0004\xE5\u0012\u0004\xE0\u0013\u0004\xE1\f\u0004\xE2\t\u0004\xE3\a\u0004\xE4\u0010\u0004\xE5\u0011\u0004\xE0\u0011\u0004\xE1\v\u0004\xE2\b\u0004\xE3\u0006\u0004\xE4\u000F\u0004\xE5\u000F\u0004\xE0\u0010\u0004\xE1\n\u0004\xE2\u0006\u0004\xE3\u0005\u0004\xE4\u000E\u0004\xE5\u000F\u0004\xE0\u000F\u0004\xE1\t\u0004\xE2\u0006\u0004\xE3\u0004\u0004\xE4\r\u0004\xE5\u000E\u0004\xE0\u000F\u0004\xE1\t\u0004\xE2\u0006\u0004\xE3\u0004\u0004\xE4\r\u0004\xE5\u000E\u0004\xE0\u000E\u0004\xE1\b\u0004\xE2\u0004\u0004\xE3\u0003\u0004\xE4\f\u0004\xE5\r\u0004\xE0\u000E\u0004\xE1\a\u0004\xE2\u0004\u0004\xE3\u0003\u0004"
156
- board.read_and_process
152
+ board.query_capabilities
153
+ board.read_and_process
157
154
 
158
- board.analog_pins.each do |pin|
159
- refute_nil board.pins[pin].analog_channel, "Analog channel not set for pin #{pin}"
160
- end
161
- end
155
+ board.query_analog_mapping
156
+ board.read_and_process
162
157
 
163
- def test_reset
164
- mock_sp = mock_serial_port(Firmata::Board::SYSTEM_RESET)
158
+ fake_port.buffer = "\xE0\e\u0005\xE1N\u0004\xE2A\u0004\xE3C\u0004\xE4o\u0004\xE5f\u0004\xE0w\u0004\xE1]\u0004\xE2N\u0004\xE3I\u0004\xE4x\u0004\xE5m\u0004\xE0m\u0004\xE1`\u0004\xE2T\u0004\xE3L\u0004\xE4s\u0004\xE5l\u0004\xE0i\u0004\xE1`\u0004\xE2V\u0004\xE3N\u0004\xE4m\u0004\xE5j\u0004\xE0f\u0004\xE1^\u0004\xE2U\u0004\xE3O\u0004\xE4h\u0004\xE5g\u0004\xE0d\u0004\xE1\\\u0004\xE2T\u0004\xE3O\u0004\xE4d\u0004\xE5d\u0004\xE0b\u0004\xE1Z\u0004\xE2S\u0004\xE3N\u0004\xE4`\u0004\xE5a\u0004\xE0_\u0004\xE1X\u0004\xE2Q\u0004\xE3L\u0004\xE4\\\u0004\xE5^\u0004\xE0\\\u0004\xE1T\u0004\xE2N\u0004\xE3J\u0004\xE4X\u0004\xE5Z\u0004\xE0X\u0004\xE1Q\u0004\xE2K\u0004\xE3G\u0004\xE4T\u0004\xE5W\u0004\xE0V\u0004\xE1O\u0004\xE2H\u0004\xE3D\u0004\xE4Q\u0004\xE5T\u0004\xE0S\u0004\xE1L\u0004\xE2F\u0004\xE3B\u0004\xE4N\u0004\xE5Q\u0004\xE0P\u0004\xE1J\u0004\xE2C\u0004\xE3@\u0004\xE4K\u0004\xE5N\u0004\xE0N\u0004\xE1G\u0004\xE2A\u0004\xE3>\u0004\xE4I\u0004\xE5L\u0004\xE0L\u0004\xE1D\u0004\xE2?\u0004\xE3<\u0004\xE4F\u0004\xE5I\u0004\xE0I\u0004\xE1B\u0004\xE2=\u0004\xE39\u0004\xE4C\u0004\xE5F\u0004\xE0F\u0004\xE1?\u0004\xE2:\u0004\xE37\u0004\xE4@\u0004\xE5C\u0004\xE0C\u0004\xE1<\u0004\xE28\u0004\xE34\u0004\xE4>\u0004\xE5A\u0004\xE0A\u0004\xE1:\u0004\xE26\u0004\xE32\u0004\xE4<\u0004\xE5?\u0004\xE0?\u0004\xE19\u0004\xE24\u0004\xE31\u0004\xE4:\u0004\xE5=\u0004\xE0>\u0004\xE17\u0004\xE22\u0004\xE3/\u0004\xE49\u0004\xE5;\u0004\xE0<\u0004\xE15\u0004\xE20\u0004\xE3-\u0004\xE46\u0004\xE59\u0004\xE09\u0004\xE12\u0004\xE2.\u0004\xE3+\u0004\xE44\u0004\xE57\u0004\xE07\u0004\xE10\u0004\xE2,\u0004\xE3)\u0004\xE42\u0004\xE55\u0004\xE05\u0004\xE1.\u0004\xE2*\u0004\xE3'\u0004\xE40\u0004\xE52\u0004\xE03\u0004\xE1-\u0004\xE2(\u0004\xE3&\u0004\xE4/\u0004\xE51\u0004\xE02\u0004\xE1+\u0004\xE2&\u0004\xE3$\u0004\xE4-\u0004\xE50\u0004\xE00\u0004\xE1*\u0004\xE2%\u0004\xE3#\u0004\xE4,\u0004\xE5.\u0004\xE0/\u0004\xE1(\u0004\xE2$\u0004\xE3!\u0004\xE4*\u0004\xE5,\u0004\xE0-\u0004\xE1&\u0004\xE2\"\u0004\xE3\u001F\u0004\xE4(\u0004\xE5*\u0004\xE0+\u0004\xE1$\u0004\xE2 \u0004\xE3\u001D\u0004\xE4&\u0004\xE5(\u0004\xE0)\u0004\xE1\"\u0004\xE2\u001F\u0004\xE3\u001C\u0004\xE4%\u0004\xE5'\u0004\xE0(\u0004\xE1!\u0004\xE2\u001D\u0004\xE3\e\u0004\xE4$\u0004\xE5&\u0004\xE0&\u0004\xE1 \u0004\xE2\u001C\u0004\xE3\u001A\u0004\xE4#\u0004\xE5%\u0004\xE0&\u0004\xE1\u001F\u0004\xE2\e\u0004\xE3\u0019\u0004\xE4\"\u0004\xE5$\u0004\xE0$\u0004\xE1\u001E\u0004\xE2\u0019\u0004\xE3\u0018\u0004\xE4 \u0004\xE5\"\u0004\xE0\"\u0004\xE1\u001C\u0004\xE2\u0018\u0004\xE3\u0016\u0004\xE4\u001F\u0004\xE5 \u0004\xE0!\u0004\xE1\u001A\u0004\xE2\u0017\u0004\xE3\u0014\u0004\xE4\u001D\u0004\xE5\u001E\u0004\xE0\u001F\u0004\xE1\u0019\u0004\xE2\u0015\u0004\xE3\u0013\u0004\xE4\u001C\u0004\xE5\u001D\u0004\xE0\u001E\u0004\xE1\u0018\u0004\xE2\u0013\u0004\xE3\u0012\u0004\xE4\e\u0004\xE5\u001C\u0004\xE0\u001D\u0004\xE1\u0017\u0004\xE2\u0014\u0004\xE3\u0012\u0004\xE4\e\u0004\xE5\u001C\u0004\xE0\u001D\u0004\xE1\u0016\u0004\xE2\u0013\u0004\xE3\u0011\u0004\xE4\u001A\u0004\xE5\e\u0004\xE0\u001C\u0004\xE1\u0015\u0004\xE2\u0011\u0004\xE3\u0010\u0004\xE4\u0018\u0004\xE5\u0019\u0004\xE0\u001A\u0004\xE1\u0014\u0004\xE2\u0010\u0004\xE3\u000E\u0004\xE4\u0017\u0004\xE5\u0018\u0004\xE0\u0018\u0004\xE1\u0012\u0004\xE2\u000E\u0004\xE3\r\u0004\xE4\u0015\u0004\xE5\u0016\u0004\xE0\u0017\u0004\xE1\u0011\u0004\xE2\u000E\u0004\xE3\f\u0004\xE4\u0015\u0004\xE5\u0016\u0004\xE0\u0016\u0004\xE1\u0010\u0004\xE2\f\u0004\xE3\v\u0004\xE4\u0014\u0004\xE5\u0015\u0004\xE0\u0016\u0004\xE1\u000F\u0004\xE2\v\u0004\xE3\n\u0004\xE4\u0013\u0004\xE5\u0014\u0004\xE0\u0015\u0004\xE1\u000F\u0004\xE2\v\u0004\xE3\t\u0004\xE4\u0012\u0004\xE5\u0013\u0004\xE0\u0014\u0004\xE1\u000E\u0004\xE2\n\u0004\xE3\t\u0004\xE4\u0012\u0004\xE5\u0012\u0004\xE0\u0013\u0004\xE1\f\u0004\xE2\t\u0004\xE3\a\u0004\xE4\u0010\u0004\xE5\u0011\u0004\xE0\u0011\u0004\xE1\v\u0004\xE2\b\u0004\xE3\u0006\u0004\xE4\u000F\u0004\xE5\u000F\u0004\xE0\u0010\u0004\xE1\n\u0004\xE2\u0006\u0004\xE3\u0005\u0004\xE4\u000E\u0004\xE5\u000F\u0004\xE0\u000F\u0004\xE1\t\u0004\xE2\u0006\u0004\xE3\u0004\u0004\xE4\r\u0004\xE5\u000E\u0004\xE0\u000F\u0004\xE1\t\u0004\xE2\u0006\u0004\xE3\u0004\u0004\xE4\r\u0004\xE5\u000E\u0004\xE0\u000E\u0004\xE1\b\u0004\xE2\u0004\u0004\xE3\u0003\u0004\xE4\f\u0004\xE5\r\u0004\xE0\u000E\u0004\xE1\a\u0004\xE2\u0004\u0004\xE3\u0003\u0004"
159
+ board.read_and_process
165
160
 
166
- board = Firmata::Board.new(mock_sp)
167
- board.reset
161
+ board.analog_pins.each do |pin|
162
+ refute_nil board.pins[pin].analog_channel, "Analog channel not set for pin #{pin}"
163
+ end
164
+ end
168
165
 
169
- mock_sp.verify
170
- end
166
+ def test_reset
167
+ mock_sp = mock_serial_port(Board::SYSTEM_RESET)
171
168
 
172
- def test_write_firmware_query
173
- mock_sp = mock_serial_port(Firmata::Board::FIRMWARE_QUERY)
169
+ board = Board.new(mock_sp)
170
+ board.reset
174
171
 
175
- board = Firmata::Board.new(mock_sp)
176
- board.query_firmware
172
+ mock_sp.verify
173
+ end
177
174
 
178
- mock_sp.verify
179
- end
175
+ def test_write_firmware_query
176
+ mock_sp = mock_serial_port(Board::START_SYSEX, Board::FIRMWARE_QUERY, Board::END_SYSEX)
180
177
 
181
- def test_process_firmware_query
182
- fake_port = FakeSerialPort.new
183
- fake_port.buffer = "\xF0y\u0002\u0003S\u0000t\u0000a\u0000n\u0000d\u0000a\u0000r\u0000d\u0000F\u0000i\u0000r\u0000m\u0000a\u0000t\u0000a\u0000\xF7"
184
- board = Firmata::Board.new(fake_port)
178
+ board = Board.new(mock_sp)
179
+ board.query_firmware
185
180
 
186
- board.read_and_process
181
+ mock_sp.verify
182
+ end
187
183
 
188
- assert_equal 'StandardFirmata', board.firmware_name, 'Firmware Name is incorrect'
189
- end
184
+ def test_process_firmware_query
185
+ fake_port = FakeSerialPort.new
186
+ fake_port.buffer = "\xF0y\u0002\u0003S\u0000t\u0000a\u0000n\u0000d\u0000a\u0000r\u0000d\u0000F\u0000i\u0000r\u0000m\u0000a\u0000t\u0000a\u0000\xF7"
187
+ board = Board.new(fake_port)
190
188
 
191
- def test_digital_write
192
- mock_sp = mock_serial_port(145, 127, 1)
193
- board = Firmata::Board.new(mock_sp)
189
+ board.read_and_process
194
190
 
195
- 8.times do |x|
196
- board.pins[x + 8] = Firmata::Board::Pin.new([], 0, 250 + x, nil)
191
+ assert_equal 'StandardFirmata', board.firmware_name, 'Firmware Name is incorrect'
197
192
  end
198
193
 
199
- board.digital_write(13, 1)
194
+ def test_digital_write
195
+ mock_sp = mock_serial_port(145, 127, 1)
196
+ board = Board.new(mock_sp)
200
197
 
201
- assert_equal 1, board.pins[13].value, "Pin value not set"
202
- mock_sp.verify
203
- end
198
+ 8.times do |x|
199
+ board.pins[x + 8] = Board::Pin.new([], 0, 250 + x, nil)
200
+ end
204
201
 
205
- def test_analog_write
206
- mock_sp = mock_serial_port(233, 127, 1)
207
- board = Firmata::Board.new(mock_sp)
202
+ board.digital_write(13, 1)
208
203
 
209
- 8.times do |x|
210
- board.pins[x + 8] = Firmata::Board::Pin.new([], 0, 250 + x, nil)
204
+ assert_equal 1, board.pins[13].value, "Pin value not set"
205
+ mock_sp.verify
211
206
  end
212
207
 
213
- board.analog_write(9, 255)
208
+ def test_analog_write
209
+ mock_sp = mock_serial_port(233, 127, 1)
210
+ board = Board.new(mock_sp)
214
211
 
215
- assert_equal 255, board.pins[9].value
216
- mock_sp.verify
217
- end
212
+ 8.times do |x|
213
+ board.pins[x + 8] = Board::Pin.new([], 0, 250 + x, nil)
214
+ end
218
215
 
219
- def test_servo_write
220
- board = Firmata::Board.new(FakeSerialPort.new)
221
- assert board.respond_to? :servo_write
216
+ board.analog_write(9, 255)
217
+
218
+ assert_equal 255, board.pins[9].value
219
+ mock_sp.verify
220
+ end
221
+
222
+ def test_servo_write
223
+ board = Board.new(FakeSerialPort.new)
224
+ assert board.respond_to? :servo_write
225
+ end
222
226
  end
223
- end
227
+ end
@@ -1,55 +1,56 @@
1
1
  require 'stringio'
2
2
 
3
- class FakeSerialPort
4
- Board = Firmata::Board
5
-
6
- attr_accessor :buffer
7
- attr_accessor :read_timeout
8
-
9
- def initialize
10
- @buffer = ""
11
- @read_timeout = 0
12
- end
13
-
14
- def write(command)
15
- val = case command.getbyte(0)
16
- when Board::SYSTEM_RESET
17
- ""
18
- when Board::REPORT_VERSION
19
- "\xF9\u0002\u0003"
20
-
21
- when Board::REPORT_DIGITAL, Board::REPORT_ANALOG
22
- "\xE0\e\u0005\xE1N\u0004\xE2A\u0004\xE3C\u0004\xE4o\u0004\xE5f\u0004\xE0w\u0004\xE1]\u0004\xE2N\u0004\xE3I\u0004\xE4x\u0004\xE5m\u0004\xE0m\u0004\xE1`\u0004\xE2T\u0004\xE3L\u0004\xE4s\u0004\xE5l\u0004\xE0i\u0004\xE1`\u0004\xE2V\u0004\xE3N\u0004\xE4m\u0004\xE5j\u0004\xE0f\u0004\xE1^\u0004\xE2U\u0004\xE3O\u0004\xE4h\u0004\xE5g\u0004\xE0d\u0004\xE1\\\u0004\xE2T\u0004\xE3O\u0004\xE4d\u0004\xE5d\u0004\xE0b\u0004\xE1Z\u0004\xE2S\u0004\xE3N\u0004\xE4`\u0004\xE5a\u0004\xE0_\u0004\xE1X\u0004\xE2Q\u0004\xE3L\u0004\xE4\\\u0004\xE5^\u0004\xE0\\\u0004\xE1T\u0004\xE2N\u0004\xE3J\u0004\xE4X\u0004\xE5Z\u0004\xE0X\u0004\xE1Q\u0004\xE2K\u0004\xE3G\u0004\xE4T\u0004\xE5W\u0004\xE0V\u0004\xE1O\u0004\xE2H\u0004\xE3D\u0004\xE4Q\u0004\xE5T\u0004\xE0S\u0004\xE1L\u0004\xE2F\u0004\xE3B\u0004\xE4N\u0004\xE5Q\u0004\xE0P\u0004\xE1J\u0004\xE2C\u0004\xE3@\u0004\xE4K\u0004\xE5N\u0004\xE0N\u0004\xE1G\u0004\xE2A\u0004\xE3>\u0004\xE4I\u0004\xE5L\u0004\xE0L\u0004\xE1D\u0004\xE2?\u0004\xE3<\u0004\xE4F\u0004\xE5I\u0004\xE0I\u0004\xE1B\u0004\xE2=\u0004\xE39\u0004\xE4C\u0004\xE5F\u0004\xE0F\u0004\xE1?\u0004\xE2:\u0004\xE37\u0004\xE4@\u0004\xE5C\u0004\xE0C\u0004\xE1<\u0004\xE28\u0004\xE34\u0004\xE4>\u0004\xE5A\u0004\xE0A\u0004\xE1:\u0004\xE26\u0004\xE32\u0004\xE4<\u0004\xE5?\u0004\xE0?\u0004\xE19\u0004\xE24\u0004\xE31\u0004\xE4:\u0004\xE5=\u0004\xE0>\u0004\xE17\u0004\xE22\u0004\xE3/\u0004\xE49\u0004\xE5;\u0004\xE0<\u0004\xE15\u0004\xE20\u0004\xE3-\u0004\xE46\u0004\xE59\u0004\xE09\u0004\xE12\u0004\xE2.\u0004\xE3+\u0004\xE44\u0004\xE57\u0004\xE07\u0004\xE10\u0004\xE2,\u0004\xE3)\u0004\xE42\u0004\xE55\u0004\xE05\u0004\xE1.\u0004\xE2*\u0004\xE3'\u0004\xE40\u0004\xE52\u0004\xE03\u0004\xE1-\u0004\xE2(\u0004\xE3&\u0004\xE4/\u0004\xE51\u0004\xE02\u0004\xE1+\u0004\xE2&\u0004\xE3$\u0004\xE4-\u0004\xE50\u0004\xE00\u0004\xE1*\u0004\xE2%\u0004\xE3#\u0004\xE4,\u0004\xE5.\u0004\xE0/\u0004\xE1(\u0004\xE2$\u0004\xE3!\u0004\xE4*\u0004\xE5,\u0004\xE0-\u0004\xE1&\u0004\xE2\"\u0004\xE3\u001F\u0004\xE4(\u0004\xE5*\u0004\xE0+\u0004\xE1$\u0004\xE2 \u0004\xE3\u001D\u0004\xE4&\u0004\xE5(\u0004\xE0)\u0004\xE1\"\u0004\xE2\u001F\u0004\xE3\u001C\u0004\xE4%\u0004\xE5'\u0004\xE0(\u0004\xE1!\u0004\xE2\u001D\u0004\xE3\e\u0004\xE4$\u0004\xE5&\u0004\xE0&\u0004\xE1 \u0004\xE2\u001C\u0004\xE3\u001A\u0004\xE4#\u0004\xE5%\u0004\xE0&\u0004\xE1\u001F\u0004\xE2\e\u0004\xE3\u0019\u0004\xE4\"\u0004\xE5$\u0004\xE0$\u0004\xE1\u001E\u0004\xE2\u0019\u0004\xE3\u0018\u0004\xE4 \u0004\xE5\"\u0004\xE0\"\u0004\xE1\u001C\u0004\xE2\u0018\u0004\xE3\u0016\u0004\xE4\u001F\u0004\xE5 \u0004\xE0!\u0004\xE1\u001A\u0004\xE2\u0017\u0004\xE3\u0014\u0004\xE4\u001D\u0004\xE5\u001E\u0004\xE0\u001F\u0004\xE1\u0019\u0004\xE2\u0015\u0004\xE3\u0013\u0004\xE4\u001C\u0004\xE5\u001D\u0004\xE0\u001E\u0004\xE1\u0018\u0004\xE2\u0013\u0004\xE3\u0012\u0004\xE4\e\u0004\xE5\u001C\u0004\xE0\u001D\u0004\xE1\u0017\u0004\xE2\u0014\u0004\xE3\u0012\u0004\xE4\e\u0004\xE5\u001C\u0004\xE0\u001D\u0004\xE1\u0016\u0004\xE2\u0013\u0004\xE3\u0011\u0004\xE4\u001A\u0004\xE5\e\u0004\xE0\u001C\u0004\xE1\u0015\u0004\xE2\u0011\u0004\xE3\u0010\u0004\xE4\u0018\u0004\xE5\u0019\u0004\xE0\u001A\u0004\xE1\u0014\u0004\xE2\u0010\u0004\xE3\u000E\u0004\xE4\u0017\u0004\xE5\u0018\u0004\xE0\u0018\u0004\xE1\u0012\u0004\xE2\u000E\u0004\xE3\r\u0004\xE4\u0015\u0004\xE5\u0016\u0004\xE0\u0017\u0004\xE1\u0011\u0004\xE2\u000E\u0004\xE3\f\u0004\xE4\u0015\u0004\xE5\u0016\u0004\xE0\u0016\u0004\xE1\u0010\u0004\xE2\f\u0004\xE3\v\u0004\xE4\u0014\u0004\xE5\u0015\u0004\xE0\u0016\u0004\xE1\u000F\u0004\xE2\v\u0004\xE3\n\u0004\xE4\u0013\u0004\xE5\u0014\u0004\xE0\u0015\u0004\xE1\u000F\u0004\xE2\v\u0004\xE3\t\u0004\xE4\u0012\u0004\xE5\u0013\u0004\xE0\u0014\u0004\xE1\u000E\u0004\xE2\n\u0004\xE3\t\u0004\xE4\u0012\u0004\xE5\u0012\u0004\xE0\u0013\u0004\xE1\f\u0004\xE2\t\u0004\xE3\a\u0004\xE4\u0010\u0004\xE5\u0011\u0004\xE0\u0011\u0004\xE1\v\u0004\xE2\b\u0004\xE3\u0006\u0004\xE4\u000F\u0004\xE5\u000F\u0004\xE0\u0010\u0004\xE1\n\u0004\xE2\u0006\u0004\xE3\u0005\u0004\xE4\u000E\u0004\xE5\u000F\u0004\xE0\u000F\u0004\xE1\t\u0004\xE2\u0006\u0004\xE3\u0004\u0004\xE4\r\u0004\xE5\u000E\u0004\xE0\u000F\u0004\xE1\t\u0004\xE2\u0006\u0004\xE3\u0004\u0004\xE4\r\u0004\xE5\u000E\u0004\xE0\u000E\u0004\xE1\b\u0004\xE2\u0004\u0004\xE3\u0003\u0004\xE4\f\u0004\xE5\r\u0004\xE0\u000E\u0004\xE1\a\u0004\xE2\u0004\u0004\xE3\u0003\u0004"
23
-
24
- when Board::FIRMWARE_QUERY
25
- "\xF0y\u0002\u0003S\u0000t\u0000a\u0000n\u0000d\u0000a\u0000r\u0000d\u0000F\u0000i\u0000r\u0000m\u0000a\u0000t\u0000a\u0000\xF7"
26
-
27
- when Board::START_SYSEX
28
- case command.getbyte(1)
29
- when Board::ANALOG_MAPPING_QUERY
30
- "\xF0j\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u0000\u0001\u0002\u0003\u0004\u0005\xF7"
31
-
32
- when Board::CAPABILITY_QUERY
33
- "\xF0l\u007F\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0002\n\u007F\u0000\u0001\u0001\u0001\u0002\n\u007F\u0000\u0001\u0001\u0001\u0002\n\u007F\u0000\u0001\u0001\u0001\u0002\n\u007F\u0000\u0001\u0001\u0001\u0002\n\u0006\u0001\u007F\u0000\u0001\u0001\u0001\u0002\n\u0006\u0001\u007F\xF7"
34
-
35
- when Board::PIN_STATE_QUERY
36
- "\xF0n\r\u0001\u0000\xF7"
3
+ module Firmata
4
+ class FakeSerialPort
5
+ attr_accessor :buffer
6
+ attr_accessor :read_timeout
7
+
8
+ def initialize
9
+ @buffer = ""
10
+ @read_timeout = 0
11
+ end
12
+
13
+ def write(command)
14
+ val = case command.getbyte(0)
15
+ when Board::SYSTEM_RESET
16
+ ""
17
+ when Board::REPORT_VERSION
18
+ "\xF9\u0002\u0003"
19
+
20
+ when Board::REPORT_DIGITAL, Board::REPORT_ANALOG
21
+ "\xE0\e\u0005\xE1N\u0004\xE2A\u0004\xE3C\u0004\xE4o\u0004\xE5f\u0004\xE0w\u0004\xE1]\u0004\xE2N\u0004\xE3I\u0004\xE4x\u0004\xE5m\u0004\xE0m\u0004\xE1`\u0004\xE2T\u0004\xE3L\u0004\xE4s\u0004\xE5l\u0004\xE0i\u0004\xE1`\u0004\xE2V\u0004\xE3N\u0004\xE4m\u0004\xE5j\u0004\xE0f\u0004\xE1^\u0004\xE2U\u0004\xE3O\u0004\xE4h\u0004\xE5g\u0004\xE0d\u0004\xE1\\\u0004\xE2T\u0004\xE3O\u0004\xE4d\u0004\xE5d\u0004\xE0b\u0004\xE1Z\u0004\xE2S\u0004\xE3N\u0004\xE4`\u0004\xE5a\u0004\xE0_\u0004\xE1X\u0004\xE2Q\u0004\xE3L\u0004\xE4\\\u0004\xE5^\u0004\xE0\\\u0004\xE1T\u0004\xE2N\u0004\xE3J\u0004\xE4X\u0004\xE5Z\u0004\xE0X\u0004\xE1Q\u0004\xE2K\u0004\xE3G\u0004\xE4T\u0004\xE5W\u0004\xE0V\u0004\xE1O\u0004\xE2H\u0004\xE3D\u0004\xE4Q\u0004\xE5T\u0004\xE0S\u0004\xE1L\u0004\xE2F\u0004\xE3B\u0004\xE4N\u0004\xE5Q\u0004\xE0P\u0004\xE1J\u0004\xE2C\u0004\xE3@\u0004\xE4K\u0004\xE5N\u0004\xE0N\u0004\xE1G\u0004\xE2A\u0004\xE3>\u0004\xE4I\u0004\xE5L\u0004\xE0L\u0004\xE1D\u0004\xE2?\u0004\xE3<\u0004\xE4F\u0004\xE5I\u0004\xE0I\u0004\xE1B\u0004\xE2=\u0004\xE39\u0004\xE4C\u0004\xE5F\u0004\xE0F\u0004\xE1?\u0004\xE2:\u0004\xE37\u0004\xE4@\u0004\xE5C\u0004\xE0C\u0004\xE1<\u0004\xE28\u0004\xE34\u0004\xE4>\u0004\xE5A\u0004\xE0A\u0004\xE1:\u0004\xE26\u0004\xE32\u0004\xE4<\u0004\xE5?\u0004\xE0?\u0004\xE19\u0004\xE24\u0004\xE31\u0004\xE4:\u0004\xE5=\u0004\xE0>\u0004\xE17\u0004\xE22\u0004\xE3/\u0004\xE49\u0004\xE5;\u0004\xE0<\u0004\xE15\u0004\xE20\u0004\xE3-\u0004\xE46\u0004\xE59\u0004\xE09\u0004\xE12\u0004\xE2.\u0004\xE3+\u0004\xE44\u0004\xE57\u0004\xE07\u0004\xE10\u0004\xE2,\u0004\xE3)\u0004\xE42\u0004\xE55\u0004\xE05\u0004\xE1.\u0004\xE2*\u0004\xE3'\u0004\xE40\u0004\xE52\u0004\xE03\u0004\xE1-\u0004\xE2(\u0004\xE3&\u0004\xE4/\u0004\xE51\u0004\xE02\u0004\xE1+\u0004\xE2&\u0004\xE3$\u0004\xE4-\u0004\xE50\u0004\xE00\u0004\xE1*\u0004\xE2%\u0004\xE3#\u0004\xE4,\u0004\xE5.\u0004\xE0/\u0004\xE1(\u0004\xE2$\u0004\xE3!\u0004\xE4*\u0004\xE5,\u0004\xE0-\u0004\xE1&\u0004\xE2\"\u0004\xE3\u001F\u0004\xE4(\u0004\xE5*\u0004\xE0+\u0004\xE1$\u0004\xE2 \u0004\xE3\u001D\u0004\xE4&\u0004\xE5(\u0004\xE0)\u0004\xE1\"\u0004\xE2\u001F\u0004\xE3\u001C\u0004\xE4%\u0004\xE5'\u0004\xE0(\u0004\xE1!\u0004\xE2\u001D\u0004\xE3\e\u0004\xE4$\u0004\xE5&\u0004\xE0&\u0004\xE1 \u0004\xE2\u001C\u0004\xE3\u001A\u0004\xE4#\u0004\xE5%\u0004\xE0&\u0004\xE1\u001F\u0004\xE2\e\u0004\xE3\u0019\u0004\xE4\"\u0004\xE5$\u0004\xE0$\u0004\xE1\u001E\u0004\xE2\u0019\u0004\xE3\u0018\u0004\xE4 \u0004\xE5\"\u0004\xE0\"\u0004\xE1\u001C\u0004\xE2\u0018\u0004\xE3\u0016\u0004\xE4\u001F\u0004\xE5 \u0004\xE0!\u0004\xE1\u001A\u0004\xE2\u0017\u0004\xE3\u0014\u0004\xE4\u001D\u0004\xE5\u001E\u0004\xE0\u001F\u0004\xE1\u0019\u0004\xE2\u0015\u0004\xE3\u0013\u0004\xE4\u001C\u0004\xE5\u001D\u0004\xE0\u001E\u0004\xE1\u0018\u0004\xE2\u0013\u0004\xE3\u0012\u0004\xE4\e\u0004\xE5\u001C\u0004\xE0\u001D\u0004\xE1\u0017\u0004\xE2\u0014\u0004\xE3\u0012\u0004\xE4\e\u0004\xE5\u001C\u0004\xE0\u001D\u0004\xE1\u0016\u0004\xE2\u0013\u0004\xE3\u0011\u0004\xE4\u001A\u0004\xE5\e\u0004\xE0\u001C\u0004\xE1\u0015\u0004\xE2\u0011\u0004\xE3\u0010\u0004\xE4\u0018\u0004\xE5\u0019\u0004\xE0\u001A\u0004\xE1\u0014\u0004\xE2\u0010\u0004\xE3\u000E\u0004\xE4\u0017\u0004\xE5\u0018\u0004\xE0\u0018\u0004\xE1\u0012\u0004\xE2\u000E\u0004\xE3\r\u0004\xE4\u0015\u0004\xE5\u0016\u0004\xE0\u0017\u0004\xE1\u0011\u0004\xE2\u000E\u0004\xE3\f\u0004\xE4\u0015\u0004\xE5\u0016\u0004\xE0\u0016\u0004\xE1\u0010\u0004\xE2\f\u0004\xE3\v\u0004\xE4\u0014\u0004\xE5\u0015\u0004\xE0\u0016\u0004\xE1\u000F\u0004\xE2\v\u0004\xE3\n\u0004\xE4\u0013\u0004\xE5\u0014\u0004\xE0\u0015\u0004\xE1\u000F\u0004\xE2\v\u0004\xE3\t\u0004\xE4\u0012\u0004\xE5\u0013\u0004\xE0\u0014\u0004\xE1\u000E\u0004\xE2\n\u0004\xE3\t\u0004\xE4\u0012\u0004\xE5\u0012\u0004\xE0\u0013\u0004\xE1\f\u0004\xE2\t\u0004\xE3\a\u0004\xE4\u0010\u0004\xE5\u0011\u0004\xE0\u0011\u0004\xE1\v\u0004\xE2\b\u0004\xE3\u0006\u0004\xE4\u000F\u0004\xE5\u000F\u0004\xE0\u0010\u0004\xE1\n\u0004\xE2\u0006\u0004\xE3\u0005\u0004\xE4\u000E\u0004\xE5\u000F\u0004\xE0\u000F\u0004\xE1\t\u0004\xE2\u0006\u0004\xE3\u0004\u0004\xE4\r\u0004\xE5\u000E\u0004\xE0\u000F\u0004\xE1\t\u0004\xE2\u0006\u0004\xE3\u0004\u0004\xE4\r\u0004\xE5\u000E\u0004\xE0\u000E\u0004\xE1\b\u0004\xE2\u0004\u0004\xE3\u0003\u0004\xE4\f\u0004\xE5\r\u0004\xE0\u000E\u0004\xE1\a\u0004\xE2\u0004\u0004\xE3\u0003\u0004"
22
+
23
+ when Board::FIRMWARE_QUERY
24
+ "\xF0y\u0002\u0003S\u0000t\u0000a\u0000n\u0000d\u0000a\u0000r\u0000d\u0000F\u0000i\u0000r\u0000m\u0000a\u0000t\u0000a\u0000\xF7"
25
+
26
+ when Board::START_SYSEX
27
+ case command.getbyte(1)
28
+ when Board::ANALOG_MAPPING_QUERY
29
+ "\xF0j\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u007F\u0000\u0001\u0002\u0003\u0004\u0005\xF7"
30
+
31
+ when Board::CAPABILITY_QUERY
32
+ "\xF0l\u007F\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0003\b\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0004\u000E\u007F\u0000\u0001\u0001\u0001\u0002\n\u007F\u0000\u0001\u0001\u0001\u0002\n\u007F\u0000\u0001\u0001\u0001\u0002\n\u007F\u0000\u0001\u0001\u0001\u0002\n\u007F\u0000\u0001\u0001\u0001\u0002\n\u0006\u0001\u007F\u0000\u0001\u0001\u0001\u0002\n\u0006\u0001\u007F\xF7"
33
+
34
+ when Board::PIN_STATE_QUERY
35
+ "\xF0n\r\u0001\u0000\xF7"
36
+ end
37
37
  end
38
- end
39
38
 
40
- @buffer << val
41
- val.length
39
+ @buffer << val
40
+ val.length
41
+ end
42
+ alias_method :write_nonblock, :write
43
+
44
+ def bytes
45
+ bytes = StringIO.new(@buffer).bytes
46
+ @buffer = ""
47
+ bytes
48
+ end
49
+
50
+ def read(size)
51
+ @buffer
52
+ end
53
+ alias_method :read_nonblock, :read
42
54
  end
43
- alias_method :write_nonblock, :write
44
55
 
45
- def bytes
46
- bytes = StringIO.new(@buffer).bytes
47
- @buffer = ""
48
- bytes
49
- end
50
-
51
- def read(size)
52
- @buffer
53
- end
54
- alias_method :read_nonblock, :read
55
56
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hybridgroup-firmata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
- - '''Mike Breen'', ''Adrian Zankich'', ''Ron Evans'', ''Isaac A. Murchie'''
7
+ - '''Mike Breen'', ''Adrian Zankich'', ''Ron Evans'', ''Isaac A. Murchie'', ''Rafael
8
+ Magaña'''
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-08-15 00:00:00.000000000 Z
12
+ date: 2013-08-19 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rake
@@ -53,7 +54,7 @@ dependencies:
53
54
  - !ruby/object:Gem::Version
54
55
  version: '0'
55
56
  - !ruby/object:Gem::Dependency
56
- name: event_spitter
57
+ name: event_emitter
57
58
  requirement: !ruby/object:Gem::Requirement
58
59
  requirements:
59
60
  - - '>='
@@ -85,9 +86,11 @@ files:
85
86
  - examples/digital_read.rb
86
87
  - examples/digital_read_socket.rb
87
88
  - examples/wiichuck_read.rb
89
+ - examples/wiichuck_read_socket.rb
88
90
  - firmata.gemspec
89
91
  - lib/firmata.rb
90
92
  - lib/firmata/board.rb
93
+ - lib/firmata/constants.rb
91
94
  - lib/firmata/event.rb
92
95
  - lib/firmata/version.rb
93
96
  - test/board_test.rb