sphero 1.5.0 → 1.5.1
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.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/.travis.yml +10 -0
- data/Gemfile +4 -0
- data/Rakefile +9 -21
- data/lib/sphero.rb +38 -50
- data/sphero.gemspec +21 -0
- metadata +45 -33
- data/.gemtest +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f2540435af315c51080f81df94c0578cc1982f2
|
4
|
+
data.tar.gz: 5806d20195af543acd529a1f219e870c49686e1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ea5e1bed3a946fdb37b8b3a6293b29059a80dfe5b126e2890589c7aa5add4aa5ad2b7926f6a1526bf2073de8c22fb7a17e52f4b501175ea10dc2eba93e59f3f
|
7
|
+
data.tar.gz: 2d4aae14991cda4b4b06b56b27c744005f38947bc8028d42f8c8980c5951654df0f56ae7a3cdc1f92716bedac92903f2d504c3bf4a6f68ddbcf7bcffc529641b
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Rakefile
CHANGED
@@ -1,23 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require '
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
Hoe.plugin :gemspec # `gem install hoe-gemspec`
|
10
|
-
Hoe.plugin :git # `gem install hoe-git`
|
11
|
-
|
12
|
-
Hoe.spec 'sphero' do
|
13
|
-
developer('Hybrid Group', 'sphero@hybridgroup.com')
|
14
|
-
self.readme_file = 'README.markdown'
|
15
|
-
self.history_file = 'CHANGELOG.rdoc'
|
16
|
-
self.extra_rdoc_files = FileList['*.{rdoc,markdown}']
|
17
|
-
|
18
|
-
self.spec_extras = {
|
19
|
-
:required_ruby_version => '>= 1.9.2'
|
20
|
-
}
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
require 'rake/testtask'
|
4
|
+
|
5
|
+
Rake::TestTask.new do |t|
|
6
|
+
t.libs.push "lib"
|
7
|
+
t.test_files = FileList['test/*.rb']
|
8
|
+
t.verbose = true
|
21
9
|
end
|
22
10
|
|
23
|
-
|
11
|
+
task :default => [:test]
|
data/lib/sphero.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'sphero/request'
|
2
2
|
require 'sphero/response'
|
3
3
|
require 'thread'
|
4
|
+
require 'rubyserial'
|
4
5
|
|
5
6
|
class Sphero
|
6
|
-
VERSION = '1.5.0'
|
7
|
-
|
8
7
|
FORWARD = 0
|
9
8
|
RIGHT = 90
|
10
9
|
BACKWARD = 180
|
@@ -21,17 +20,19 @@ class Sphero
|
|
21
20
|
sphero = self.new dev
|
22
21
|
if (block_given?)
|
23
22
|
begin
|
24
|
-
|
23
|
+
sphero.instance_eval(&block)
|
25
24
|
ensure
|
26
|
-
|
25
|
+
sphero.close
|
27
26
|
end
|
28
27
|
return nil
|
29
28
|
end
|
30
|
-
return sphero
|
31
|
-
rescue
|
32
|
-
|
33
|
-
|
34
|
-
|
29
|
+
return sphero
|
30
|
+
rescue RubySerial::Exception => e
|
31
|
+
if e.message == 'EBUSY'
|
32
|
+
puts retries_left
|
33
|
+
retries_left = retries_left - 1
|
34
|
+
retry unless retries_left < 0
|
35
|
+
end
|
35
36
|
end
|
36
37
|
end
|
37
38
|
end
|
@@ -61,7 +62,7 @@ class Sphero
|
|
61
62
|
end
|
62
63
|
}
|
63
64
|
end
|
64
|
-
|
65
|
+
|
65
66
|
def close
|
66
67
|
return if @sp.nil? || @sp.closed?
|
67
68
|
begin
|
@@ -170,15 +171,15 @@ class Sphero
|
|
170
171
|
# configure data streaming notification messages
|
171
172
|
def set_data_streaming n, m, mask, pcnt, mask2
|
172
173
|
queue_packet Request::SetDataStreaming.new(@seq, limit2(n), limit2(m),
|
173
|
-
|
174
|
+
limit4(mask), limit1(pcnt), limit4(mask2) )
|
174
175
|
end
|
175
176
|
|
176
177
|
# configure collision detection messages
|
177
178
|
def configure_collision_detection meth, x_t, y_t, x_spd, y_spd, dead
|
178
179
|
queue_packet Request::ConfigureCollisionDetection.new(@seq, limit1(meth),
|
179
|
-
|
180
|
-
|
181
|
-
|
180
|
+
limit1(x_t), limit1(y_t),
|
181
|
+
limit1(x_spd), limit1(y_spd),
|
182
|
+
limit1(dead) )
|
182
183
|
end
|
183
184
|
|
184
185
|
private
|
@@ -231,12 +232,12 @@ class Sphero
|
|
231
232
|
|
232
233
|
def flag(value)
|
233
234
|
case value
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
235
|
+
when true
|
236
|
+
0x01
|
237
|
+
when false
|
238
|
+
0x00
|
239
|
+
else
|
240
|
+
value
|
240
241
|
end
|
241
242
|
end
|
242
243
|
|
@@ -250,15 +251,9 @@ class Sphero
|
|
250
251
|
end
|
251
252
|
|
252
253
|
def initialize_serialport dev
|
253
|
-
|
254
|
-
|
255
|
-
if
|
256
|
-
@sp.read_timeout=1000
|
257
|
-
@sp.write_timeout=0
|
258
|
-
@sp.initial_byte_offset=5
|
259
|
-
end
|
260
|
-
rescue LoadError
|
261
|
-
puts "Please 'gem install hybridgroup-serialport' for serial port support."
|
254
|
+
@sp = Serial.new dev, 115200
|
255
|
+
rescue RubySerial::Exception => e
|
256
|
+
retry if e.message == 'EBUSY'
|
262
257
|
end
|
263
258
|
|
264
259
|
def queue_packet packet
|
@@ -268,19 +263,14 @@ class Sphero
|
|
268
263
|
def write packet
|
269
264
|
header, body = nil
|
270
265
|
|
271
|
-
|
272
|
-
@
|
273
|
-
@sp.write packet.to_str
|
274
|
-
@seq += 1
|
275
|
-
end
|
276
|
-
IO.select([@sp], [], [], 1)
|
266
|
+
@sp.write packet.to_str
|
267
|
+
@seq += 1
|
277
268
|
header = read_header(true)
|
278
269
|
body = read_body(header.last, true) if header
|
279
270
|
# pick off asynch packets and store, till we get to the message response
|
280
271
|
while header && Response.async?(header)
|
281
272
|
messages << Response::AsyncResponse.response(header, body)
|
282
273
|
|
283
|
-
IO.select([@sp], [], [], 1)
|
284
274
|
header = read_header(true)
|
285
275
|
if header
|
286
276
|
body = read_body(header.last, true)
|
@@ -294,7 +284,7 @@ class Sphero
|
|
294
284
|
if response.success?
|
295
285
|
@response_queue << response
|
296
286
|
else
|
297
|
-
|
287
|
+
puts "Unable to write to Sphero!"
|
298
288
|
end
|
299
289
|
end
|
300
290
|
|
@@ -302,10 +292,10 @@ class Sphero
|
|
302
292
|
header = nil
|
303
293
|
begin
|
304
294
|
data = read_next_chunk(5, blocking)
|
305
|
-
return nil unless data
|
295
|
+
return nil unless data && data.length == 5
|
306
296
|
header = data.unpack 'C5'
|
307
|
-
rescue
|
308
|
-
retry
|
297
|
+
rescue RubySerial::Exception => e
|
298
|
+
retry if e.message == 'EBUSY'
|
309
299
|
rescue Exception => e
|
310
300
|
puts e.message
|
311
301
|
puts e.backtrace.inspect
|
@@ -320,8 +310,8 @@ class Sphero
|
|
320
310
|
begin
|
321
311
|
data = read_next_chunk(len, blocking)
|
322
312
|
return nil unless data && data.length == len
|
323
|
-
rescue
|
324
|
-
retry
|
313
|
+
rescue RubySerial::Exception => e
|
314
|
+
retry if e.message == 'EBUSY'
|
325
315
|
rescue Exception => e
|
326
316
|
puts e.message
|
327
317
|
puts e.backtrace.inspect
|
@@ -334,15 +324,13 @@ class Sphero
|
|
334
324
|
def read_next_chunk(len, blocking=false)
|
335
325
|
data = nil
|
336
326
|
begin
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
data = @sp.read_nonblock(len)
|
342
|
-
end
|
327
|
+
if blocking || is_windows?
|
328
|
+
data = @sp.read(len)
|
329
|
+
else
|
330
|
+
data = @sp.read_nonblock(len)
|
343
331
|
end
|
344
|
-
rescue
|
345
|
-
retry
|
332
|
+
rescue RubySerial::Exception => e
|
333
|
+
retry if e.message == 'EBUSY'
|
346
334
|
rescue Exception => e
|
347
335
|
puts e.message
|
348
336
|
puts e.backtrace.inspect
|
data/sphero.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
Gem::Specification.new do |gem|
|
3
|
+
gem.authors = ["The Hybrid Group"]
|
4
|
+
gem.email = ["sphero@hybridgroup.com"]
|
5
|
+
gem.description = "A ruby gem for controlling your Sphero ball. Sends commands over the TTY\nprovided by the bluetooth connection."
|
6
|
+
gem.summary = "A ruby gem for controlling your Sphero ball"
|
7
|
+
gem.homepage = "http://github.com/hybridgroup/sphero"
|
8
|
+
|
9
|
+
gem.files = `git ls-files`.split($\)
|
10
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
11
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
12
|
+
gem.name = "sphero"
|
13
|
+
gem.require_paths = ["lib"]
|
14
|
+
gem.version = "1.5.1"
|
15
|
+
|
16
|
+
gem.add_development_dependency "rake", "~>10.0.4"
|
17
|
+
gem.add_development_dependency "mocha", "~>0.13.3"
|
18
|
+
gem.add_development_dependency "minitest", "~>5.0.8"
|
19
|
+
|
20
|
+
gem.add_runtime_dependency "rubyserial", "~>0.1.1"
|
21
|
+
end
|
metadata
CHANGED
@@ -1,57 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sphero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Hybrid Group
|
7
|
+
- The Hybrid Group
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 10.0.4
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 10.0.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: mocha
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.13.3
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.13.3
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 5.0.8
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 5.0.8
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubyserial
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.1.1
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.1.1
|
55
69
|
description: |-
|
56
70
|
A ruby gem for controlling your Sphero ball. Sends commands over the TTY
|
57
71
|
provided by the bluetooth connection.
|
@@ -60,14 +74,13 @@ email:
|
|
60
74
|
executables:
|
61
75
|
- sphero
|
62
76
|
extensions: []
|
63
|
-
extra_rdoc_files:
|
64
|
-
- CHANGELOG.rdoc
|
65
|
-
- Manifest.txt
|
66
|
-
- README.markdown
|
77
|
+
extra_rdoc_files: []
|
67
78
|
files:
|
68
|
-
- .autotest
|
69
|
-
- .
|
79
|
+
- ".autotest"
|
80
|
+
- ".gitignore"
|
81
|
+
- ".travis.yml"
|
70
82
|
- CHANGELOG.rdoc
|
83
|
+
- Gemfile
|
71
84
|
- Manifest.txt
|
72
85
|
- README.markdown
|
73
86
|
- Rakefile
|
@@ -75,33 +88,32 @@ files:
|
|
75
88
|
- lib/sphero.rb
|
76
89
|
- lib/sphero/request.rb
|
77
90
|
- lib/sphero/response.rb
|
91
|
+
- sphero.gemspec
|
78
92
|
- test/test_sphero.rb
|
79
93
|
- test/test_sphero_request.rb
|
80
94
|
homepage: http://github.com/hybridgroup/sphero
|
81
95
|
licenses: []
|
82
96
|
metadata: {}
|
83
97
|
post_install_message:
|
84
|
-
rdoc_options:
|
85
|
-
- --main
|
86
|
-
- README.markdown
|
98
|
+
rdoc_options: []
|
87
99
|
require_paths:
|
88
100
|
- lib
|
89
101
|
required_ruby_version: !ruby/object:Gem::Requirement
|
90
102
|
requirements:
|
91
|
-
- -
|
103
|
+
- - ">="
|
92
104
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
105
|
+
version: '0'
|
94
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
107
|
requirements:
|
96
|
-
- -
|
108
|
+
- - ">="
|
97
109
|
- !ruby/object:Gem::Version
|
98
110
|
version: '0'
|
99
111
|
requirements: []
|
100
|
-
rubyforge_project:
|
101
|
-
rubygems_version: 2.2.
|
112
|
+
rubyforge_project:
|
113
|
+
rubygems_version: 2.2.2
|
102
114
|
signing_key:
|
103
115
|
specification_version: 4
|
104
116
|
summary: A ruby gem for controlling your Sphero ball
|
105
117
|
test_files:
|
106
|
-
- test/test_sphero_request.rb
|
107
118
|
- test/test_sphero.rb
|
119
|
+
- test/test_sphero_request.rb
|
data/.gemtest
DELETED
File without changes
|