firmata 0.0.2 → 0.0.3
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/examples/blink_led.rb +16 -0
- data/lib/firmata/board.rb +20 -6
- data/lib/firmata/version.rb +1 -1
- data/test/board_test.rb +10 -10
- metadata +3 -3
- data/sample.rb +0 -25
|
@@ -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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
|
132
|
+
# bytes: An Enumerator of bytes
|
|
126
133
|
#
|
|
127
134
|
# Returns nothing.
|
|
128
|
-
def process(bytes
|
|
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.
|
data/lib/firmata/version.rb
CHANGED
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.
|
|
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.
|
|
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.
|
|
70
|
+
board.read_and_process
|
|
71
71
|
|
|
72
72
|
board.query_analog_mapping
|
|
73
|
-
board.
|
|
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.
|
|
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.
|
|
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.
|
|
144
|
+
board.read_and_process
|
|
145
145
|
|
|
146
146
|
board.query_analog_mapping
|
|
147
|
-
board.
|
|
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.
|
|
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.
|
|
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.
|
|
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-
|
|
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
|