dino 0.9.1 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +31 -9
- data/examples/button/button.rb +2 -5
- data/examples/servo.rb +1 -4
- data/examples/telnet.rb +28 -0
- data/lib/dino/components/button.rb +2 -2
- data/lib/dino/tx_rx.rb +6 -63
- data/lib/dino/tx_rx/telnet.rb +53 -0
- data/lib/dino/tx_rx/usb_serial.rb +69 -0
- data/lib/dino/version.rb +1 -1
- data/spec/lib/components/button_spec.rb +54 -18
- data/spec/lib/tx_rx/telnet_spec.rb +66 -0
- data/spec/lib/{tx_rx_spec.rb → tx_rx/usb_serial_spec.rb} +10 -10
- metadata +9 -4
data/README.md
CHANGED
@@ -1,19 +1,41 @@
|
|
1
1
|
# Welcome to Dino
|
2
2
|
[![Build Status](https://secure.travis-ci.org/austinbv/dino.png)](http://travis-ci.org/austinbv/dino)
|
3
3
|
|
4
|
-
## Get
|
4
|
+
## Get Started In No Time
|
5
|
+
|
5
6
|
Dino was designed to help you start working with your Arduino in minutes.
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
#### Install the Gem
|
9
|
+
|
10
|
+
```
|
11
|
+
gem install dino
|
12
|
+
```
|
13
|
+
|
14
|
+
#### Upload the Bootstrapper
|
15
|
+
|
16
|
+
* Open [the normal Arduino IDE](http://arduino.cc/en/Main/Software)
|
17
|
+
* Download the bootstrapper [src/du.ino](https://raw.github.com/austinbv/dino/master/src/du.ino)
|
18
|
+
* Open the file in the Arduino IDE
|
19
|
+
* Plug in your Arduino via USB
|
20
|
+
* Click the upload button (an arrow)
|
21
|
+
|
22
|
+
#### Verify Install
|
23
|
+
|
24
|
+
* Build the sample circuit [examples/led/led.png](https://raw.github.com/austinbv/dino/master/examples/led/led.png)
|
25
|
+
* From your terminal, execute `ruby example/led/led.rb`
|
26
|
+
* Observe your LED blinking continuously
|
12
27
|
|
13
|
-
|
28
|
+
## Examples and Tutorials
|
14
29
|
|
30
|
+
### Circuits and Programs
|
15
31
|
|
16
|
-
Take a look in the example directory for
|
32
|
+
* Take a look in [the example directory](https://github.com/austinbv/dino/tree/master/examples) for small component examples
|
33
|
+
* Try [Getting Started with Arduino and Dino](http://tutorials.jumpstartlab.com/projects/arduino/introducing_arduino.html) from [Jumpstart Lab](http://jumpstartlab.com), building a number-guessing game and a simple nightlight
|
34
|
+
* An example [rails app using Dino and Pusher](https://github.com/austinbv/dino_rails_example)
|
35
|
+
* For a Sinatra example look at the [site used to shoot the cannon at RubyConf2012](https://github.com/austinbv/dino_cannon)
|
17
36
|
|
37
|
+
### Explanatory Talks
|
18
38
|
|
19
|
-
|
39
|
+
* "Arduino the Ruby Way" at RubyConf 2012
|
40
|
+
* [Video by ConFreaks](http://confreaks.com/videos/1294-rubyconf2012-arduino-the-ruby-way)
|
41
|
+
* [Slides on SpeakerDeck](https://speakerdeck.com/austinbv/arduino-the-ruby-way)
|
data/examples/button/button.rb
CHANGED
@@ -9,15 +9,12 @@ require File.expand_path('../../../lib/dino', __FILE__)
|
|
9
9
|
board = Dino::Board.new(Dino::TxRx.new)
|
10
10
|
button = Dino::Components::Button.new(pin: 13, board: board)
|
11
11
|
|
12
|
-
|
12
|
+
button.down do
|
13
13
|
puts "button down"
|
14
14
|
end
|
15
15
|
|
16
|
-
|
16
|
+
button.up do
|
17
17
|
puts "button up"
|
18
18
|
end
|
19
19
|
|
20
|
-
button.down(button_down)
|
21
|
-
button.up(button_up)
|
22
|
-
|
23
20
|
sleep
|
data/examples/servo.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# This is an example of how to use the
|
3
|
-
# You must register helpers and have the main thread
|
4
|
-
# sleep or in someway keep running or your program
|
5
|
-
# will exit before any callbacks can be called
|
2
|
+
# This is an example of how to use the servo class
|
6
3
|
#
|
7
4
|
|
8
5
|
require File.expand_path('../../lib/dino', __FILE__)
|
data/examples/telnet.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#
|
2
|
+
# Example showing how to access an Arduino over a telnet connection.
|
3
|
+
# Running ser2net on the machine that the Arduino is connected to will serve up the serial interface over telnet.
|
4
|
+
# You can then communicate with that Arduino over your local network or the Internet.
|
5
|
+
#
|
6
|
+
# Example ser2net command for an Arduino UNO on Mac:
|
7
|
+
# ser2net -u -C "9000:raw:0:/dev/cu.usbmodem621:115200"
|
8
|
+
#
|
9
|
+
# Replace 9000 with the port number you want to use and /dev/cu.usbmodem621 with your Arduino device.
|
10
|
+
# Arduino UNOs are usually /dev/ACM0 under Linux.
|
11
|
+
#
|
12
|
+
# ser2net is preinstalled on many Linuxes. Install ser2net on Mac with:
|
13
|
+
# brew install ser2net
|
14
|
+
#
|
15
|
+
# http://sourceforge.net/projects/ser2net/ for more info on configuring ser2net.
|
16
|
+
#
|
17
|
+
|
18
|
+
require File.expand_path('../../lib/dino', __FILE__)
|
19
|
+
|
20
|
+
# The host and port for the telnet connection must be passed in as arguments.
|
21
|
+
connection = Dino::TxRx::Telnet.new("localhost", 9000)
|
22
|
+
board = Dino::Board.new(connection)
|
23
|
+
led = Dino::Components::Led.new(pin: 13, board: board)
|
24
|
+
|
25
|
+
[:on, :off].cycle do |switch|
|
26
|
+
led.send(switch)
|
27
|
+
sleep 0.5
|
28
|
+
end
|
data/lib/dino/tx_rx.rb
CHANGED
@@ -1,67 +1,10 @@
|
|
1
|
-
require 'serialport'
|
2
|
-
require 'observer'
|
3
|
-
|
4
1
|
module Dino
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
BAUD = 115200
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
@first_write = true
|
12
|
-
end
|
13
|
-
|
14
|
-
def io
|
15
|
-
raise BoardNotFound unless @io ||= find_arduino
|
16
|
-
@io
|
17
|
-
end
|
18
|
-
|
19
|
-
def io=(device)
|
20
|
-
@io = SerialPort.new(device, BAUD)
|
21
|
-
end
|
22
|
-
|
23
|
-
def read
|
24
|
-
@thread ||= Thread.new do
|
25
|
-
loop do
|
26
|
-
if IO.select([io], nil, nil, 0.005)
|
27
|
-
pin, message = *io.gets.chop.split(/::/)
|
28
|
-
pin && message && changed && notify_observers(pin, message)
|
29
|
-
end
|
30
|
-
sleep 0.004
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def close_read
|
36
|
-
return nil if @thread.nil?
|
37
|
-
Thread.kill(@thread)
|
38
|
-
@thread = nil
|
39
|
-
end
|
40
|
-
|
41
|
-
def write(message)
|
42
|
-
IO.select(nil, [io], nil)
|
43
|
-
io.puts(message)
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
def tty_devices
|
49
|
-
if RUBY_PLATFORM.include?("mswin") || RUBY_PLATFORM.include?("mingw")
|
50
|
-
["COM1", "COM2", "COM3", "COM4"]
|
51
|
-
else
|
52
|
-
`ls /dev`.split("\n").grep(/usb|ACM/).map{|d| "/dev/#{d}"}
|
53
|
-
end
|
54
|
-
end
|
2
|
+
module TxRx
|
3
|
+
require 'dino/tx_rx/usb_serial'
|
4
|
+
require 'dino/tx_rx/telnet'
|
55
5
|
|
56
|
-
def
|
57
|
-
|
58
|
-
next if device.match /^cu/
|
59
|
-
begin
|
60
|
-
SerialPort.new(device, BAUD)
|
61
|
-
rescue
|
62
|
-
nil
|
63
|
-
end
|
64
|
-
end.compact.first
|
6
|
+
def self.new
|
7
|
+
self::USBSerial.new
|
65
8
|
end
|
66
9
|
end
|
67
|
-
end
|
10
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'net/telnet'
|
2
|
+
require 'observer'
|
3
|
+
|
4
|
+
module Dino
|
5
|
+
module TxRx
|
6
|
+
class Telnet
|
7
|
+
include Observable
|
8
|
+
|
9
|
+
def initialize(host, port)
|
10
|
+
@host, @port = host, port
|
11
|
+
@read_buffer = ""
|
12
|
+
end
|
13
|
+
|
14
|
+
def io
|
15
|
+
@io ||= connect
|
16
|
+
end
|
17
|
+
|
18
|
+
def read
|
19
|
+
@thread ||= Thread.new do
|
20
|
+
loop do
|
21
|
+
io.waitfor("\n") do |text|
|
22
|
+
@read_buffer += text
|
23
|
+
while line = @read_buffer.slice!(/^.*\n/) do
|
24
|
+
pin, message = line.chop.split(/::/)
|
25
|
+
pin && message && changed && notify_observers(pin, message)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
sleep 0.004
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def close_read
|
34
|
+
return nil if @thread.nil?
|
35
|
+
Thread.kill(@thread)
|
36
|
+
@read_buffer = ""
|
37
|
+
@thread = nil
|
38
|
+
end
|
39
|
+
|
40
|
+
def write(message)
|
41
|
+
io.puts(message)
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def connect
|
47
|
+
Net::Telnet.new("Host" => @host, "Port" => @port)
|
48
|
+
rescue
|
49
|
+
raise BoardNotFound
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'serialport'
|
2
|
+
require 'observer'
|
3
|
+
|
4
|
+
module Dino
|
5
|
+
module TxRx
|
6
|
+
class USBSerial
|
7
|
+
include Observable
|
8
|
+
|
9
|
+
BAUD = 115200
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@first_write = true
|
13
|
+
end
|
14
|
+
|
15
|
+
def io
|
16
|
+
raise BoardNotFound unless @io ||= find_arduino
|
17
|
+
@io
|
18
|
+
end
|
19
|
+
|
20
|
+
def io=(device)
|
21
|
+
@io = SerialPort.new(device, BAUD)
|
22
|
+
end
|
23
|
+
|
24
|
+
def read
|
25
|
+
@thread ||= Thread.new do
|
26
|
+
loop do
|
27
|
+
if IO.select([io], nil, nil, 0.005)
|
28
|
+
pin, message = *io.gets.chop.split(/::/)
|
29
|
+
pin && message && changed && notify_observers(pin, message)
|
30
|
+
end
|
31
|
+
sleep 0.004
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def close_read
|
37
|
+
return nil if @thread.nil?
|
38
|
+
Thread.kill(@thread)
|
39
|
+
@thread = nil
|
40
|
+
end
|
41
|
+
|
42
|
+
def write(message)
|
43
|
+
IO.select(nil, [io], nil)
|
44
|
+
io.puts(message)
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def tty_devices
|
50
|
+
if RUBY_PLATFORM.include?("mswin") || RUBY_PLATFORM.include?("mingw")
|
51
|
+
["COM1", "COM2", "COM3", "COM4"]
|
52
|
+
else
|
53
|
+
`ls /dev`.split("\n").grep(/usb|ACM/).map{|d| "/dev/#{d}"}
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def find_arduino
|
58
|
+
tty_devices.map do |device|
|
59
|
+
next if device.match /^cu/
|
60
|
+
begin
|
61
|
+
SerialPort.new(device, BAUD)
|
62
|
+
rescue
|
63
|
+
nil
|
64
|
+
end
|
65
|
+
end.compact.first
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/dino/version.rb
CHANGED
@@ -29,52 +29,88 @@ module Dino
|
|
29
29
|
let(:button) {Button.new(board: board, pin: mock)}
|
30
30
|
describe '#down' do
|
31
31
|
it 'should add a callback to the down_callbacks array' do
|
32
|
-
|
33
|
-
button.
|
32
|
+
callback = mock
|
33
|
+
button.down do
|
34
|
+
callback.called
|
35
|
+
end
|
36
|
+
down_callbacks = button.instance_variable_get(:@down_callbacks)
|
37
|
+
down_callbacks.size.should == 1
|
38
|
+
callback.should_receive(:called)
|
39
|
+
down_callbacks.first.call
|
34
40
|
end
|
35
41
|
end
|
36
42
|
|
37
43
|
describe '#up' do
|
38
44
|
it 'should add a callback to the up_callbacks array' do
|
39
|
-
|
40
|
-
button.
|
45
|
+
callback = mock
|
46
|
+
button.up do
|
47
|
+
callback.called
|
48
|
+
end
|
49
|
+
up_callbacks = button.instance_variable_get(:@up_callbacks)
|
50
|
+
up_callbacks.size.should == 1
|
51
|
+
callback.should_receive(:called)
|
52
|
+
up_callbacks.first.call
|
41
53
|
end
|
42
54
|
end
|
43
55
|
|
44
56
|
describe '#update' do
|
45
57
|
it 'should call the down callbacks' do
|
46
|
-
|
47
|
-
button.down
|
48
|
-
|
49
|
-
|
58
|
+
callback_1 = mock
|
59
|
+
button.down do
|
60
|
+
callback_1.called
|
61
|
+
end
|
62
|
+
|
63
|
+
callback_2 = mock
|
64
|
+
button.down do
|
65
|
+
callback_2.called
|
66
|
+
end
|
67
|
+
callback_1.should_receive(:called)
|
68
|
+
callback_2.should_receive(:called)
|
50
69
|
button.update(Button::DOWN)
|
51
70
|
end
|
52
71
|
|
53
72
|
it 'should call the up callbacks' do
|
54
|
-
|
55
|
-
button.up
|
73
|
+
callback_1 = mock
|
74
|
+
button.up do
|
75
|
+
callback_1.called
|
76
|
+
end
|
77
|
+
|
78
|
+
callback_2 = mock
|
79
|
+
button.up do
|
80
|
+
callback_2.called
|
81
|
+
end
|
56
82
|
|
57
83
|
button.instance_variable_set(:@state, Button::DOWN)
|
58
84
|
|
59
|
-
|
60
|
-
|
85
|
+
callback_1.should_receive(:called)
|
86
|
+
callback_2.should_receive(:called)
|
61
87
|
button.update(Button::UP)
|
62
88
|
end
|
63
89
|
|
64
90
|
it 'should not call the callbacks if the state has not changed' do
|
65
|
-
|
91
|
+
callback = mock
|
92
|
+
button.up do
|
93
|
+
callback.called
|
94
|
+
end
|
66
95
|
|
67
|
-
|
96
|
+
callback.should_not_receive(:called)
|
68
97
|
button.update(Button::UP)
|
69
98
|
button.update(Button::UP)
|
70
99
|
end
|
71
100
|
|
72
101
|
it 'should not call the callbacks if the data is not UP or DOWN' do
|
73
|
-
|
74
|
-
button.
|
102
|
+
callback_1 = mock
|
103
|
+
button.up do
|
104
|
+
callback_1.called
|
105
|
+
end
|
75
106
|
|
76
|
-
|
77
|
-
|
107
|
+
callback_2 = mock
|
108
|
+
button.down do
|
109
|
+
callback_2.called
|
110
|
+
end
|
111
|
+
|
112
|
+
callback_1.should_not_receive(:called)
|
113
|
+
callback_2.should_not_receive(:called)
|
78
114
|
button.update('foobarred')
|
79
115
|
end
|
80
116
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Dino
|
4
|
+
describe TxRx::Telnet do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
@mock_telnet = mock
|
8
|
+
Net::Telnet.stub(:new) { @mock_telnet }
|
9
|
+
@instance = TxRx::Telnet.new("127.0.0.1", 3001)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#connect' do
|
13
|
+
it 'should raise a BoardNotFound exception if it cannot connect to the server' do
|
14
|
+
Net::Telnet.stub(:new).and_raise
|
15
|
+
@instance = TxRx::Telnet.new("0.0.0.0", 999999)
|
16
|
+
expect { @instance.io }.to raise_exception BoardNotFound
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#io' do
|
21
|
+
it 'should set io to a new telnet connection with the specified host and port' do
|
22
|
+
Net::Telnet.should_receive(:new).with("Host" => "127.0.0.1", "Port" => 3001)
|
23
|
+
@instance.io
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should use the existing io instance if set' do
|
27
|
+
Net::Telnet.should_receive(:new).exactly(1).times.with("Host" => "127.0.0.1", "Port" => 3001)
|
28
|
+
2.times { @instance.io }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#read' do
|
33
|
+
it 'should create a new thread' do
|
34
|
+
Thread.should_receive :new
|
35
|
+
@instance.read
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should get messages from the device' do
|
39
|
+
Thread.should_receive(:new).and_yield
|
40
|
+
@instance.should_receive(:loop).and_yield
|
41
|
+
@instance.io.should_receive(:waitfor).with("\n").and_yield("foo::bar\n")
|
42
|
+
@instance.should_receive(:changed).and_return(true)
|
43
|
+
@instance.should_receive(:notify_observers).with('foo','bar')
|
44
|
+
|
45
|
+
@instance.read
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#close_read' do
|
50
|
+
it 'should kill the reading thread' do
|
51
|
+
@instance.instance_variable_set(:@thread, mock_thread = mock)
|
52
|
+
Thread.should_receive(:kill).with(mock_thread)
|
53
|
+
@instance.read
|
54
|
+
@instance.close_read
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '#write' do
|
59
|
+
it 'should write to the device' do
|
60
|
+
@mock_telnet.should_receive(:puts).with("foo::bar")
|
61
|
+
@instance.write("foo::bar")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Dino
|
4
|
-
describe TxRx do
|
4
|
+
describe TxRx::USBSerial do
|
5
5
|
it { should be }
|
6
6
|
|
7
7
|
describe '#initialize' do
|
8
8
|
it 'should set first_write to false' do
|
9
|
-
TxRx.new.instance_variable_get(:@first_write).should == true
|
9
|
+
TxRx::USBSerial.new.instance_variable_get(:@first_write).should == true
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -16,10 +16,10 @@ module Dino
|
|
16
16
|
original_platform = RUBY_PLATFORM
|
17
17
|
RUBY_PLATFORM = "mswin"
|
18
18
|
subject.should_receive(:tty_devices).and_return(["COM1", "COM2", "COM3", "COM4"])
|
19
|
-
SerialPort.should_receive(:new).with('COM1', TxRx::BAUD).and_return(mock_serial = mock)
|
20
|
-
SerialPort.should_receive(:new).with('COM2', TxRx::BAUD).and_return(mock)
|
21
|
-
SerialPort.should_receive(:new).with('COM3', TxRx::BAUD).and_return(mock)
|
22
|
-
SerialPort.should_receive(:new).with('COM4', TxRx::BAUD).and_return(mock)
|
19
|
+
SerialPort.should_receive(:new).with('COM1', TxRx::USBSerial::BAUD).and_return(mock_serial = mock)
|
20
|
+
SerialPort.should_receive(:new).with('COM2', TxRx::USBSerial::BAUD).and_return(mock)
|
21
|
+
SerialPort.should_receive(:new).with('COM3', TxRx::USBSerial::BAUD).and_return(mock)
|
22
|
+
SerialPort.should_receive(:new).with('COM4', TxRx::USBSerial::BAUD).and_return(mock)
|
23
23
|
|
24
24
|
subject.io.should == mock_serial
|
25
25
|
RUBY_PLATFORM = original_platform
|
@@ -29,9 +29,9 @@ module Dino
|
|
29
29
|
context "on unix" do
|
30
30
|
it 'should instantiate a new SerialPort for each usb tty device found' do
|
31
31
|
subject.should_receive(:tty_devices).and_return(['/dev/tty1.usb', '/dev/tty1.usb', '/dev/tty.ACM0'])
|
32
|
-
SerialPort.should_receive(:new).with('/dev/tty1.usb', TxRx::BAUD).and_return(mock_serial = mock)
|
33
|
-
SerialPort.should_receive(:new).with('/dev/tty1.usb', TxRx::BAUD).and_return(mock)
|
34
|
-
SerialPort.should_receive(:new).with('/dev/tty.ACM0', TxRx::BAUD).and_return(mock)
|
32
|
+
SerialPort.should_receive(:new).with('/dev/tty1.usb', TxRx::USBSerial::BAUD).and_return(mock_serial = mock)
|
33
|
+
SerialPort.should_receive(:new).with('/dev/tty1.usb', TxRx::USBSerial::BAUD).and_return(mock)
|
34
|
+
SerialPort.should_receive(:new).with('/dev/tty.ACM0', TxRx::USBSerial::BAUD).and_return(mock)
|
35
35
|
|
36
36
|
subject.io.should == mock_serial
|
37
37
|
end
|
@@ -53,7 +53,7 @@ module Dino
|
|
53
53
|
|
54
54
|
describe '#io=' do
|
55
55
|
it 'should set io to a new serial port with the specified device' do
|
56
|
-
SerialPort.should_receive(:new).with('/dev/tty1.usb', TxRx::BAUD).and_return(mock_serial = mock)
|
56
|
+
SerialPort.should_receive(:new).with('/dev/tty1.usb', TxRx::USBSerial::BAUD).and_return(mock_serial = mock)
|
57
57
|
subject.io = '/dev/tty1.usb'
|
58
58
|
subject.instance_variable_get(:@io).should == mock_serial
|
59
59
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dino
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.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:
|
12
|
+
date: 2013-01-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: serialport
|
@@ -54,6 +54,7 @@ files:
|
|
54
54
|
- examples/servo.rb
|
55
55
|
- examples/stepper/stepper.png
|
56
56
|
- examples/stepper/stepper.rb
|
57
|
+
- examples/telnet.rb
|
57
58
|
- lib/dino.rb
|
58
59
|
- lib/dino/board.rb
|
59
60
|
- lib/dino/board_not_found.rb
|
@@ -67,6 +68,8 @@ files:
|
|
67
68
|
- lib/dino/components/servo.rb
|
68
69
|
- lib/dino/components/stepper.rb
|
69
70
|
- lib/dino/tx_rx.rb
|
71
|
+
- lib/dino/tx_rx/telnet.rb
|
72
|
+
- lib/dino/tx_rx/usb_serial.rb
|
70
73
|
- lib/dino/version.rb
|
71
74
|
- spec/lib/board_not_found_spec.rb
|
72
75
|
- spec/lib/board_spec.rb
|
@@ -77,7 +80,8 @@ files:
|
|
77
80
|
- spec/lib/components/sensor_spec.rb
|
78
81
|
- spec/lib/components/servo_spec.rb
|
79
82
|
- spec/lib/components/stepper_spec.rb
|
80
|
-
- spec/lib/
|
83
|
+
- spec/lib/tx_rx/telnet_spec.rb
|
84
|
+
- spec/lib/tx_rx/usb_serial_spec.rb
|
81
85
|
- spec/spec_helper.rb
|
82
86
|
- src/du.ino
|
83
87
|
homepage: https://github.com/austinbv/dino
|
@@ -114,5 +118,6 @@ test_files:
|
|
114
118
|
- spec/lib/components/sensor_spec.rb
|
115
119
|
- spec/lib/components/servo_spec.rb
|
116
120
|
- spec/lib/components/stepper_spec.rb
|
117
|
-
- spec/lib/
|
121
|
+
- spec/lib/tx_rx/telnet_spec.rb
|
122
|
+
- spec/lib/tx_rx/usb_serial_spec.rb
|
118
123
|
- spec/spec_helper.rb
|