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 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