firmata 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
- supportedModes = 0
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
- modesArray = []
203
+ modes = []
198
204
  # the pin modes
199
205
  [ INPUT, OUTPUT, ANALOG, PWM, SERVO ].each do |mode|
200
- modesArray.push(mode) unless (supportedModes & (1 << mode)).zero?
206
+ modes.push(mode) unless (supported_modes & (1 << mode)).zero?
201
207
  end
202
208
 
203
- @pins.push(Pin.new(modesArray, OUTPUT, 0))
209
+ @pins.push(Pin.new(modes, OUTPUT, 0))
204
210
 
205
- supportedModes = 0
211
+ supported_modes = 0
206
212
  n = 0
207
213
  next
208
214
  end
209
215
 
210
- supportedModes |= (1 << byte) if n.zero?
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
- # Returns nothing.
390
- def start_pin_reporting
391
- toggle_pin_reporting(1)
392
- end
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 stop_pin_reporting
398
- toggle_pin_reporting(0)
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
@@ -1,3 +1,3 @@
1
1
  module Firmata
2
- VERSION = "0.0.7"
2
+ VERSION = "0.1.0"
3
3
  end
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
- def test_start_pin_reporting
129
+
130
+ def test_toggling_pin_reporting
130
131
  mock_sp = mock_serial_port do |mock|
131
- 16.times do |i|
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.7
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: pry