firmata 0.0.7 → 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/firmata/board.rb +20 -29
- data/lib/firmata/version.rb +1 -1
- data/test/board_test.rb +7 -18
- metadata +2 -2
data/lib/firmata/board.rb
CHANGED
@@ -98,6 +98,9 @@ module Firmata
|
|
98
98
|
once('firmware_query', ->() do
|
99
99
|
once('capability_query', ->() do
|
100
100
|
once('analog_mapping_query', ->() do
|
101
|
+
|
102
|
+
2.times { |i| toggle_pin_reporting(i) }
|
103
|
+
|
101
104
|
@connected = true
|
102
105
|
emit('ready')
|
103
106
|
end)
|
@@ -161,6 +164,9 @@ module Firmata
|
|
161
164
|
|
162
165
|
if analog_pin = analog_pins[pin]
|
163
166
|
pins[analog_pin].value = value
|
167
|
+
|
168
|
+
emit('analog-read', pin, value)
|
169
|
+
emit("analog-read-#{pin}", value)
|
164
170
|
end
|
165
171
|
|
166
172
|
when DIGITAL_MESSAGE_RANGE
|
@@ -189,25 +195,25 @@ module Firmata
|
|
189
195
|
|
190
196
|
case command
|
191
197
|
when CAPABILITY_RESPONSE
|
192
|
-
|
198
|
+
supported_modes = 0
|
193
199
|
n = 0
|
194
200
|
|
195
201
|
current_buffer.slice(2, current_buffer.length - 3).each do |byte|
|
196
202
|
if byte == 127
|
197
|
-
|
203
|
+
modes = []
|
198
204
|
# the pin modes
|
199
205
|
[ INPUT, OUTPUT, ANALOG, PWM, SERVO ].each do |mode|
|
200
|
-
|
206
|
+
modes.push(mode) unless (supported_modes & (1 << mode)).zero?
|
201
207
|
end
|
202
208
|
|
203
|
-
@pins.push(Pin.new(
|
209
|
+
@pins.push(Pin.new(modes, OUTPUT, 0))
|
204
210
|
|
205
|
-
|
211
|
+
supported_modes = 0
|
206
212
|
n = 0
|
207
213
|
next
|
208
214
|
end
|
209
215
|
|
210
|
-
|
216
|
+
supported_modes |= (1 << byte) if n.zero?
|
211
217
|
|
212
218
|
n ^= 1
|
213
219
|
end
|
@@ -371,33 +377,18 @@ module Firmata
|
|
371
377
|
write(START_SYSEX, ANALOG_MAPPING_QUERY, END_SYSEX)
|
372
378
|
end
|
373
379
|
|
374
|
-
|
375
|
-
# Internal: Toggle the pin analog and digtal reporting off and on.
|
376
|
-
#
|
377
|
-
# state - The Integer to turn the pin on (1) or off (0).
|
378
|
-
#
|
379
|
-
# Returns nothing.
|
380
|
-
def toggle_pin_reporting(state)
|
381
|
-
16.times do |i|
|
382
|
-
write(REPORT_DIGITAL | i, state)
|
383
|
-
write(REPORT_ANALOG | i, state)
|
384
|
-
end
|
385
|
-
end
|
386
|
-
|
387
|
-
# Public: Turn pin analog and digital reporting on.
|
380
|
+
# Public: Toggle pin reporting on or off.
|
388
381
|
#
|
389
|
-
#
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
# Public: Turn pin analog and digital reporting off.
|
382
|
+
# pin - The Integer pin to toggle.
|
383
|
+
# mode - The Integer mode the pin will report. The valid values are
|
384
|
+
# REPORT_DIGITAL or REPORT_ANALOG (default: REPORT_DIGITAL).
|
385
|
+
# state - The Integer state to toggle the pin. The valid value are
|
386
|
+
# HIGH or LOW (default: HIGH)
|
395
387
|
#
|
396
388
|
# Returns nothing.
|
397
|
-
def
|
398
|
-
|
389
|
+
def toggle_pin_reporting(pin, state = HIGH, mode = REPORT_DIGITAL)
|
390
|
+
write(mode | pin, state)
|
399
391
|
end
|
400
392
|
|
401
|
-
|
402
393
|
end
|
403
394
|
end
|
data/lib/firmata/version.rb
CHANGED
data/test/board_test.rb
CHANGED
@@ -126,32 +126,21 @@ class BoardTest < MiniTest::Unit::TestCase
|
|
126
126
|
assert_equal Firmata::Board::OUTPUT, board.pins[13].mode
|
127
127
|
end
|
128
128
|
|
129
|
-
|
129
|
+
|
130
|
+
def test_toggling_pin_reporting
|
130
131
|
mock_sp = mock_serial_port do |mock|
|
131
|
-
|
132
|
-
mock.expect(:write_nonblock, 2, [[Firmata::Board::REPORT_DIGITAL | i, 1].map(&:chr).join])
|
133
|
-
mock.expect(:write_nonblock, 2, [[(Firmata::Board::REPORT_ANALOG | i), 1].map(&:chr).join])
|
134
|
-
end
|
132
|
+
mock.expect(:write_nonblock, 2, [[Firmata::Board::REPORT_DIGITAL | 13, 1].map(&:chr).join])
|
135
133
|
end
|
136
134
|
|
137
135
|
board = Firmata::Board.new(mock_sp)
|
138
|
-
board.start_pin_reporting
|
139
136
|
|
137
|
+
board.toggle_pin_reporting(13)
|
140
138
|
mock_sp.verify
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_stop_pin_reporting
|
144
|
-
mock_sp = mock_serial_port do |mock|
|
145
|
-
16.times do |i|
|
146
|
-
mock.expect(:write_nonblock, 2, [[Firmata::Board::REPORT_DIGITAL | i, 0].map(&:chr).join])
|
147
|
-
mock.expect(:write_nonblock, 2, [[(Firmata::Board::REPORT_ANALOG | i), 0].map(&:chr).join])
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
board = Firmata::Board.new(mock_sp)
|
152
|
-
board.stop_pin_reporting
|
153
139
|
|
140
|
+
mock_sp.expect(:write_nonblock, 2, [[Firmata::Board::REPORT_DIGITAL | 13, 0].map(&:chr).join])
|
141
|
+
board.toggle_pin_reporting(13, 0)
|
154
142
|
mock_sp.verify
|
143
|
+
|
155
144
|
end
|
156
145
|
|
157
146
|
def test_processing_analog_message
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: firmata
|
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: pry
|