artoo 1.6.1 → 1.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/Gemfile.lock +13 -3
- data/artoo.gemspec +1 -1
- data/bin/artoo +10 -6
- data/lib/artoo/commands/bluetooth.rb +74 -0
- data/lib/artoo/commands/commands.rb +1 -1
- data/lib/artoo/commands/scan.rb +42 -0
- data/lib/artoo/commands/socket.rb +43 -0
- data/lib/artoo/version.rb +1 -1
- metadata +8 -6
- data/lib/artoo/commands/connect.rb +0 -83
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e658b80b5b9aa14f41900900289cbd09888384b
|
4
|
+
data.tar.gz: a2613c23ca45cc5a48d93326d5da716c00df6f86
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3199bf1714b0254bea7bd409c14441b33f077bacc6e05881257603f6a9982dd8acea58e02637f29b582c795e0c65d1b5146271086640f0a6132234274c89a48
|
7
|
+
data.tar.gz: 1825a2500d229156dfdd75cb59674b48e77815b8a053b891e8adcbca64262a059ff76f22d44ccdfb7879a6c0d23a08bd13cb3eae1ffd949884d315b8be235de2
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.1.
|
1
|
+
ruby-2.1.1
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
artoo (1.6.
|
4
|
+
artoo (1.6.2)
|
5
5
|
celluloid (~> 0.15.0)
|
6
6
|
celluloid-io (~> 0.15.0)
|
7
7
|
multi_json (~> 1.6)
|
8
8
|
pry (~> 0.9)
|
9
9
|
rake
|
10
10
|
reel (~> 0.4.0)
|
11
|
-
robeaux (~> 0.0.
|
11
|
+
robeaux (~> 0.0.4)
|
12
12
|
thor (~> 0.18.1)
|
13
13
|
|
14
14
|
GEM
|
@@ -21,6 +21,7 @@ GEM
|
|
21
21
|
nio4r (>= 0.5.0)
|
22
22
|
coderay (1.1.0)
|
23
23
|
dotenv (0.9.0)
|
24
|
+
ffi (1.9.3-java)
|
24
25
|
foreman (0.63.0)
|
25
26
|
dotenv (>= 0.7)
|
26
27
|
thor (>= 0.13.6)
|
@@ -30,6 +31,7 @@ GEM
|
|
30
31
|
http (0.5.0)
|
31
32
|
http_parser.rb
|
32
33
|
http_parser.rb (0.6.0)
|
34
|
+
http_parser.rb (0.6.0-java)
|
33
35
|
json (1.7.7)
|
34
36
|
json (1.7.7-java)
|
35
37
|
kramdown (1.2.0)
|
@@ -42,10 +44,16 @@ GEM
|
|
42
44
|
metaclass (~> 0.0.1)
|
43
45
|
multi_json (1.8.4)
|
44
46
|
nio4r (1.0.0)
|
47
|
+
nio4r (1.0.0-java)
|
45
48
|
pry (0.9.12.4)
|
46
49
|
coderay (~> 1.0)
|
47
50
|
method_source (~> 0.8)
|
48
51
|
slop (~> 3.4)
|
52
|
+
pry (0.9.12.4-java)
|
53
|
+
coderay (~> 1.0)
|
54
|
+
method_source (~> 0.8)
|
55
|
+
slop (~> 3.4)
|
56
|
+
spoon (~> 0.0)
|
49
57
|
rake (10.1.1)
|
50
58
|
reel (0.4.0)
|
51
59
|
celluloid (>= 0.15.1)
|
@@ -54,8 +62,10 @@ GEM
|
|
54
62
|
http_parser.rb (>= 0.6.0.beta.2)
|
55
63
|
websocket_parser (>= 0.1.4)
|
56
64
|
ref (1.0.5)
|
57
|
-
robeaux (0.0.
|
65
|
+
robeaux (0.0.4)
|
58
66
|
slop (3.4.7)
|
67
|
+
spoon (0.0.4)
|
68
|
+
ffi
|
59
69
|
therubyracer (0.12.0)
|
60
70
|
libv8 (~> 3.16.14.0)
|
61
71
|
ref
|
data/artoo.gemspec
CHANGED
data/bin/artoo
CHANGED
@@ -3,10 +3,12 @@ require 'rubygems'
|
|
3
3
|
require 'thor'
|
4
4
|
require 'thor/group'
|
5
5
|
require 'artoo/robot'
|
6
|
-
require 'artoo/commands/commands'
|
7
6
|
require 'artoo/commands/generate'
|
8
|
-
require 'artoo/commands/
|
7
|
+
require 'artoo/commands/commands'
|
9
8
|
require 'artoo/commands/install'
|
9
|
+
require 'artoo/commands/scan'
|
10
|
+
require 'artoo/commands/socket'
|
11
|
+
require 'artoo/commands/bluetooth'
|
10
12
|
|
11
13
|
Celluloid.logger = nil
|
12
14
|
|
@@ -34,15 +36,17 @@ module CLI
|
|
34
36
|
run("ruby #{robot}")
|
35
37
|
end
|
36
38
|
|
37
|
-
desc "generate SUBCOMMAND ...ARGS", "Generates a new robot or adaptor"
|
39
|
+
desc "generate <SUBCOMMAND> ...ARGS", "Generates a new robot or adaptor"
|
38
40
|
subcommand "generate", Artoo::Commands::Generate
|
39
41
|
|
40
|
-
desc "
|
41
|
-
subcommand "
|
42
|
+
desc "bluetooth <SUBCOMMAND> ...ARGS", "Scans, pairs and Connects to a bluetooth device"
|
43
|
+
subcommand "bluetooth", Artoo::Commands::Bluetooth
|
42
44
|
|
43
|
-
desc "install SUBCOMMAND ...ARGS", "Installs utility programs"
|
45
|
+
desc "install <SUBCOMMAND> ...ARGS", "Installs utility programs, like socat"
|
44
46
|
subcommand "install", Artoo::Commands::Install
|
45
47
|
|
48
|
+
desc "scan <type> ...ARGS", "Installs utility programs"
|
49
|
+
subcommand "scan", Artoo::Commands::Scan
|
46
50
|
end
|
47
51
|
end
|
48
52
|
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'thor/group'
|
3
|
+
|
4
|
+
module Artoo
|
5
|
+
module Commands
|
6
|
+
class Bluetooth < Commands
|
7
|
+
package_name "bluetooth"
|
8
|
+
|
9
|
+
desc "scan", "Scan for bluetooth devices"
|
10
|
+
def scan
|
11
|
+
Artoo::Commands::Scan.new().bluetooth()
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "bind [ADDRESS] [NAME]", "Binds a Bluetooth device to a serial port"
|
15
|
+
option :comm, :aliases => "-c", :default => 0, :desc => "Comm number"
|
16
|
+
option :radio, :aliases => "-r", :default => "hci0", :desc => "Bluetooth radio address"
|
17
|
+
def bind(address, name)
|
18
|
+
case os
|
19
|
+
when :linux
|
20
|
+
run("sudo rfcomm -i #{options[:radio]} bind /dev/rfcomm#{options[:comm]} #{address} 1")
|
21
|
+
run("sudo ln -s /dev/rfcomm#{options[:comm]} /dev/#{name}")
|
22
|
+
when :macosx
|
23
|
+
say "OSX binds devices on its own volition."
|
24
|
+
else
|
25
|
+
say "OS not yet supported..."
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "unbind [ADDRESS] [NAME]", "Unbinds a Bluetooth device from a serial port"
|
30
|
+
def unbind(address, name)
|
31
|
+
case os
|
32
|
+
when :linux
|
33
|
+
run("sudo rfcomm unbind #{address}")
|
34
|
+
run("sudo rm /dev/#{name}")
|
35
|
+
when :macosx
|
36
|
+
say "OSX binds devices on its own volition."
|
37
|
+
else
|
38
|
+
say "OS not yet supported..."
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
desc "connect [NAME] [PORT]", "Connect a serial device to a TCP socket using socat"
|
43
|
+
option :retries, :aliases => "-r", :default => 0, :desc => "Number of times to retry connecting on failure"
|
44
|
+
option :baudrate, :aliases => "-b", :default => 57600, :desc => "Baud rate to use to connect to the serial device"
|
45
|
+
def connect(name, port)
|
46
|
+
Artoo::Commands::Socket.new().connect(name, port, options[:retries], options[:baudrate])
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "pair [ADDRESS]", "Pairs a Bluetooth device"
|
50
|
+
def pair(address)
|
51
|
+
case os
|
52
|
+
when :linux
|
53
|
+
run("bluez-simple-agent hci0 #{ address }")
|
54
|
+
when :macosx
|
55
|
+
say "OS X manages Bluetooth pairing itself."
|
56
|
+
else
|
57
|
+
say "OS not yet supported..."
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
desc "unpair [ADDRESS]", "Unpairs a Bluetooth device"
|
62
|
+
def unpair(address)
|
63
|
+
case os
|
64
|
+
when :linux
|
65
|
+
run("bluez-simple-agent hci0 #{ address } remove")
|
66
|
+
when :macosx
|
67
|
+
say "OS X manages Bluetooth unpairing itself."
|
68
|
+
else
|
69
|
+
say "OS not yet supported..."
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'thor/group'
|
3
|
+
|
4
|
+
module Artoo
|
5
|
+
module Commands
|
6
|
+
class Scan < Commands
|
7
|
+
package_name "scan"
|
8
|
+
|
9
|
+
desc "serial", "Scan for connected serial devices"
|
10
|
+
def serial
|
11
|
+
case os
|
12
|
+
when :linux
|
13
|
+
run("ls /dev/tty*")
|
14
|
+
when :macosx
|
15
|
+
run("ls /dev/{tty,cu}.*")
|
16
|
+
else
|
17
|
+
say("OS not yet supported...")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "usb", "Scan for connected usb devices"
|
22
|
+
def usb
|
23
|
+
case os
|
24
|
+
when :linux
|
25
|
+
run("lsusb")
|
26
|
+
else
|
27
|
+
say "OS not yet supported..."
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
desc "bluetooth", "Scan for bluetooth devices"
|
32
|
+
def bluetooth
|
33
|
+
case os
|
34
|
+
when :linux
|
35
|
+
run("hcitool scan")
|
36
|
+
else
|
37
|
+
say "OS not yet supported..."
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Artoo
|
2
|
+
module Commands
|
3
|
+
class Socket < Commands
|
4
|
+
|
5
|
+
desc "connect [NAME] [PORT]", "Connect a serial device to a TCP socket using socat"
|
6
|
+
option :retries, :aliases => "-r", :default => 0, :desc => "Number of times to retry connecting on failure"
|
7
|
+
option :baudrate, :aliases => "-b", :default => 57600, :desc => "Baud rate to use to connect to the serial device"
|
8
|
+
def connect(name, port, retries = nil, baudrate = nil)
|
9
|
+
retries |= (1 + options[:retries].to_i)
|
10
|
+
baudrate |= options[:baudrate].to_i
|
11
|
+
|
12
|
+
# check that Socat is installed
|
13
|
+
system("socat -V &> /dev/null")
|
14
|
+
unless $?.success?
|
15
|
+
say "Socat not installed. Cannot bind serial to TCP."
|
16
|
+
say "Please install with 'artoo install socat' and try again."
|
17
|
+
return
|
18
|
+
end
|
19
|
+
|
20
|
+
case os
|
21
|
+
when :linux
|
22
|
+
run("sudo chmod a+rw /dev/#{name}")
|
23
|
+
|
24
|
+
while(retries > 0) do
|
25
|
+
run("socat -d -d FILE:/dev/#{name},nonblock,raw,b#{ baudrate },echo=0 TCP-LISTEN:#{port},fork")
|
26
|
+
break unless $? == 1
|
27
|
+
retries -= 1
|
28
|
+
end
|
29
|
+
|
30
|
+
when :macosx
|
31
|
+
while(retries > 0) do
|
32
|
+
run("socat -d -d -b#{ baudrate } FILE:/dev/#{name},nonblock,raw,echo=0 TCP-LISTEN:#{port},fork")
|
33
|
+
break unless $? == 1
|
34
|
+
retries -= 1
|
35
|
+
end
|
36
|
+
|
37
|
+
else
|
38
|
+
say "OS not yet supported..."
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/artoo/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: artoo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ron Evans
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2014-
|
15
|
+
date: 2014-04-04 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: celluloid
|
@@ -118,14 +118,14 @@ dependencies:
|
|
118
118
|
requirements:
|
119
119
|
- - "~>"
|
120
120
|
- !ruby/object:Gem::Version
|
121
|
-
version: 0.0.
|
121
|
+
version: 0.0.4
|
122
122
|
type: :runtime
|
123
123
|
prerelease: false
|
124
124
|
version_requirements: !ruby/object:Gem::Requirement
|
125
125
|
requirements:
|
126
126
|
- - "~>"
|
127
127
|
- !ruby/object:Gem::Version
|
128
|
-
version: 0.0.
|
128
|
+
version: 0.0.4
|
129
129
|
description: Ruby-based microframework for robotics
|
130
130
|
email:
|
131
131
|
- artoo@hybridgroup.com
|
@@ -192,10 +192,12 @@ files:
|
|
192
192
|
- lib/artoo/api/device_event_client.rb
|
193
193
|
- lib/artoo/api/route_helpers.rb
|
194
194
|
- lib/artoo/basic.rb
|
195
|
+
- lib/artoo/commands/bluetooth.rb
|
195
196
|
- lib/artoo/commands/commands.rb
|
196
|
-
- lib/artoo/commands/connect.rb
|
197
197
|
- lib/artoo/commands/generate.rb
|
198
198
|
- lib/artoo/commands/install.rb
|
199
|
+
- lib/artoo/commands/scan.rb
|
200
|
+
- lib/artoo/commands/socket.rb
|
199
201
|
- lib/artoo/connection.rb
|
200
202
|
- lib/artoo/delegator.rb
|
201
203
|
- lib/artoo/device.rb
|
@@ -266,7 +268,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
266
268
|
version: '0'
|
267
269
|
requirements: []
|
268
270
|
rubyforge_project: artoo
|
269
|
-
rubygems_version: 2.2.
|
271
|
+
rubygems_version: 2.2.2
|
270
272
|
signing_key:
|
271
273
|
specification_version: 4
|
272
274
|
summary: Ruby-based microframework for robotics
|
@@ -1,83 +0,0 @@
|
|
1
|
-
require 'thor'
|
2
|
-
require 'thor/group'
|
3
|
-
|
4
|
-
module Artoo
|
5
|
-
module Commands
|
6
|
-
class Connect < Commands
|
7
|
-
package_name "connect"
|
8
|
-
|
9
|
-
desc "scan", "Scan for connected devices"
|
10
|
-
option :type, :aliases => "-t", :default => "bluetooth", :desc => "type of scan [bluetooth, serial]"
|
11
|
-
def scan
|
12
|
-
case os
|
13
|
-
when :linux
|
14
|
-
case options[:type]
|
15
|
-
when 'bluetooth'
|
16
|
-
run("hcitool scan")
|
17
|
-
when 'serial'
|
18
|
-
run("ls /dev/tty*")
|
19
|
-
when 'usb'
|
20
|
-
run("lsusb")
|
21
|
-
else
|
22
|
-
say "ERROR: scan type '#{options[:type]}' not supported!"
|
23
|
-
end
|
24
|
-
when :macosx
|
25
|
-
run("ls /dev/tty*")
|
26
|
-
else
|
27
|
-
say "OS not yet supported..."
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
desc "bind [ADDRESS] [NAME]", "Binds a Bluetooth device to some connected hardware"
|
32
|
-
option :comm, :aliases => "-c", :default => 0, :desc => "Comm number"
|
33
|
-
option :radio, :aliases => "-r", :default => "hci0", :desc => "Bluetooth radio address"
|
34
|
-
def bind(address, name)
|
35
|
-
case os
|
36
|
-
when :linux
|
37
|
-
run("sudo rfcomm -i #{options[:radio]} bind /dev/rfcomm#{options[:comm]} #{address} 1")
|
38
|
-
run("sudo ln -s /dev/rfcomm#{options[:comm]} /dev/#{name}")
|
39
|
-
when :macosx
|
40
|
-
say "OSX binds devices on its own volition."
|
41
|
-
else
|
42
|
-
say "OS not yet supported..."
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
desc "serial [NAME] [PORT]", "Connect a serial device to a TCP socket using socat"
|
47
|
-
option :retries, :aliases => "-r", :default => 0, :desc => "Number of times to retry connecting on failure"
|
48
|
-
option :baudrate, :aliases => "-b", :default => 57600, :desc => "Baud rate to use to connect to the serial device"
|
49
|
-
def serial(name, port)
|
50
|
-
attempts = 1 + options[:retries].to_i
|
51
|
-
|
52
|
-
# check that Socat is installed
|
53
|
-
system("socat -V &> /dev/null")
|
54
|
-
unless $?.success?
|
55
|
-
say "Socat not installed. Cannot bind serial to TCP."
|
56
|
-
say "Please install with 'artoo install socat' and try again."
|
57
|
-
return
|
58
|
-
end
|
59
|
-
|
60
|
-
case os
|
61
|
-
when :linux
|
62
|
-
run("sudo chmod a+rw /dev/#{name}")
|
63
|
-
|
64
|
-
while(attempts > 0) do
|
65
|
-
run("socat -d -d FILE:/dev/#{name},nonblock,raw,b#{options[:baudrate]},echo=0 TCP-LISTEN:#{port},fork")
|
66
|
-
break unless $? == 1
|
67
|
-
attempts -= 1
|
68
|
-
end
|
69
|
-
|
70
|
-
when :macosx
|
71
|
-
while(attempts > 0) do
|
72
|
-
run("socat -d -d -b#{options[:baudrate]} FILE:/dev/#{name},nonblock,raw,echo=0 TCP-LISTEN:#{port},fork")
|
73
|
-
break unless $? == 1
|
74
|
-
attempts -= 1
|
75
|
-
end
|
76
|
-
|
77
|
-
else
|
78
|
-
say "OS not yet supported..."
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|