firmata 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,16 @@
1
+ require 'bundler/setup'
2
+ require 'firmata'
3
+
4
+ board = Firmata::Board.new('/dev/tty.usbmodemfa131')
5
+
6
+ board.connect
7
+
8
+ 10.times do
9
+ board.digital_write 13, Firmata::Board::HIGH
10
+ puts '+'
11
+ board.delay 0.5
12
+
13
+ board.digital_write 13, Firmata::Board::LOW
14
+ puts '-'
15
+ board.delay 0.5
16
+ end
data/lib/firmata/board.rb CHANGED
@@ -85,10 +85,10 @@ module Firmata
85
85
 
86
86
  def connect
87
87
  unless @connected
88
- self.once('report_version', ->() do
89
- self.once('firmware_query', ->() do
90
- self.once('capability_query', ->() do
91
- self.once('analog_mapping_query', ->() do
88
+ once('report_version', ->() do
89
+ once('firmware_query', ->() do
90
+ once('capability_query', ->() do
91
+ once('analog_mapping_query', ->() do
92
92
  @connected = true
93
93
  emit('ready')
94
94
  end)
@@ -97,7 +97,14 @@ module Firmata
97
97
  query_capabilities
98
98
  end)
99
99
  end)
100
+
101
+ until connected?
102
+ read_and_process
103
+ delay(0.5)
104
+ end
100
105
  end
106
+
107
+ self
101
108
  end
102
109
 
103
110
  # Internal: Write data to the underlying serial port.
@@ -122,10 +129,10 @@ module Firmata
122
129
 
123
130
  # Internal: Process a series of bytes.
124
131
  #
125
- # bytes: An Enumerator of bytes (default: read())
132
+ # bytes: An Enumerator of bytes
126
133
  #
127
134
  # Returns nothing.
128
- def process(bytes = read)
135
+ def process(bytes)
129
136
  bytes.each do |byte|
130
137
  case byte
131
138
  when REPORT_VERSION
@@ -216,6 +223,13 @@ module Firmata
216
223
  # do nadda
217
224
  end
218
225
 
226
+ # Public: Read the serial port and process the results
227
+ #
228
+ # Returns nothing.
229
+ def read_and_process
230
+ process(read)
231
+ end
232
+
219
233
  # Public: Send a SYSTEM_RESET to the Arduino
220
234
  #
221
235
  # Returns nothing.
@@ -1,3 +1,3 @@
1
1
  module Firmata
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/test/board_test.rb CHANGED
@@ -33,7 +33,7 @@ class BoardTest < MiniTest::Unit::TestCase
33
33
  def test_processing_report_version
34
34
  board = Firmata::Board.new(FakeSerialPort.new)
35
35
  board.report_version
36
- board.process
36
+ board.read_and_process
37
37
 
38
38
  assert_equal '2.3', board.version
39
39
  end
@@ -50,7 +50,7 @@ class BoardTest < MiniTest::Unit::TestCase
50
50
  def test_processing_capabilities_query
51
51
  board = Firmata::Board.new(FakeSerialPort.new)
52
52
  board.query_capabilities
53
- board.process
53
+ board.read_and_process
54
54
 
55
55
  assert_equal 20, board.pins.size
56
56
  end
@@ -67,10 +67,10 @@ class BoardTest < MiniTest::Unit::TestCase
67
67
  def test_processing_analog_mapping_query
68
68
  board = Firmata::Board.new(FakeSerialPort.new)
69
69
  board.query_capabilities
70
- board.process
70
+ board.read_and_process
71
71
 
72
72
  board.query_analog_mapping
73
- board.process
73
+ board.read_and_process
74
74
 
75
75
  assert_equal 6, board.analog_pins.size
76
76
  end
@@ -98,12 +98,12 @@ class BoardTest < MiniTest::Unit::TestCase
98
98
  def test_processing_pin_state_query
99
99
  board = Firmata::Board.new(FakeSerialPort.new)
100
100
  board.query_capabilities
101
- board.process
101
+ board.read_and_process
102
102
 
103
103
  board.pins[13].mode = Firmata::Board::INPUT
104
104
 
105
105
  board.query_pin_state(13)
106
- board.process
106
+ board.read_and_process
107
107
 
108
108
  assert_equal Firmata::Board::OUTPUT, board.pins[13].mode
109
109
  end
@@ -141,13 +141,13 @@ class BoardTest < MiniTest::Unit::TestCase
141
141
  board = Firmata::Board.new(fake_port)
142
142
 
143
143
  board.query_capabilities
144
- board.process
144
+ board.read_and_process
145
145
 
146
146
  board.query_analog_mapping
147
- board.process
147
+ board.read_and_process
148
148
 
149
149
  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"
150
- board.process
150
+ board.read_and_process
151
151
 
152
152
  board.analog_pins.each do |pin|
153
153
  refute_nil board.pins[pin].analog_channel, "Analog channel not set for pin #{pin}"
@@ -177,7 +177,7 @@ class BoardTest < MiniTest::Unit::TestCase
177
177
  fake_port.buffer = "\xF0y\u0002\u0003S\u0000t\u0000a\u0000n\u0000d\u0000a\u0000r\u0000d\u0000F\u0000i\u0000r\u0000m\u0000a\u0000t\u0000a\u0000\xF7"
178
178
  board = Firmata::Board.new(fake_port)
179
179
 
180
- board.process
180
+ board.read_and_process
181
181
 
182
182
  assert_equal 'StandardFirmata', board.firmware_name, 'Firmware Name is incorrect'
183
183
  end
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.2
4
+ version: 0.0.3
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-08-17 00:00:00.000000000 Z
12
+ date: 2012-08-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: serialport
@@ -55,11 +55,11 @@ files:
55
55
  - LICENSE
56
56
  - README.md
57
57
  - Rakefile
58
+ - examples/blink_led.rb
58
59
  - firmata.gemspec
59
60
  - lib/firmata.rb
60
61
  - lib/firmata/board.rb
61
62
  - lib/firmata/version.rb
62
- - sample.rb
63
63
  - test/board_test.rb
64
64
  - test/fake_serial_port.rb
65
65
  homepage: ''
data/sample.rb DELETED
@@ -1,25 +0,0 @@
1
- require 'bundler/setup'
2
- require 'firmata'
3
-
4
- board = Firmata::Board.new('/dev/tty.usbmodemfa131')
5
-
6
- board.on('ready', ->() do
7
-
8
- 10.times do
9
- board.digital_write 13, Firmata::Board::HIGH
10
- board.delay 1
11
-
12
- board.digital_write 13, Firmata::Board::LOW
13
- board.delay 1
14
- end
15
-
16
- end)
17
-
18
- board.connect
19
-
20
- Thread.new do
21
- loop do
22
- board.read
23
- sleep 1
24
- end
25
- end