dino 0.9.1 → 0.10.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/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
|
[](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
|