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.
Files changed (9) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/.travis.yml +10 -0
  4. data/Gemfile +4 -0
  5. data/Rakefile +9 -21
  6. data/lib/sphero.rb +38 -50
  7. data/sphero.gemspec +21 -0
  8. metadata +45 -33
  9. data/.gemtest +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5499fdac118804bb652308ee12b8660d8e08d4bf
4
- data.tar.gz: 1fd2ef026bcefc25ca15de2b712b4a78a595e2db
3
+ metadata.gz: 3f2540435af315c51080f81df94c0578cc1982f2
4
+ data.tar.gz: 5806d20195af543acd529a1f219e870c49686e1e
5
5
  SHA512:
6
- metadata.gz: e148d39135d1c173e20eca97869e8342e02731a07d3ef4f9b0b928797ec1b675a9b6517e3cf11e90a75fe5ce942879eacaf0b3dbd4e928346694a7e174301e23
7
- data.tar.gz: 6f24b58cbd89d6c0b3465486ba4051cd7a3917e6ad58cba38377795fedf53379f1db91e1bf83d6d07e9925fafa3c271b4db768394cfaa44586802cb34e925947
6
+ metadata.gz: 2ea5e1bed3a946fdb37b8b3a6293b29059a80dfe5b126e2890589c7aa5add4aa5ad2b7926f6a1526bf2073de8c22fb7a17e52f4b501175ea10dc2eba93e59f3f
7
+ data.tar.gz: 2d4aae14991cda4b4b06b56b27c744005f38947bc8028d42f8c8980c5951654df0f56ae7a3cdc1f92716bedac92903f2d504c3bf4a6f68ddbcf7bcffc529641b
@@ -0,0 +1,4 @@
1
+ pkg
2
+ .rvmrc
3
+ .rbx
4
+ Gemfile.lock
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 2.1.0
5
+ - 1.9.3
6
+ - jruby
7
+ - rbx-2.2.10
8
+ script:
9
+ - bundle install
10
+ - bundle exec rake test
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ # A sample Gemfile
2
+ source "https://rubygems.org"
3
+
4
+ gemspec
data/Rakefile CHANGED
@@ -1,23 +1,11 @@
1
- # -*- ruby -*-
2
-
3
- require 'rubygems'
4
- require 'hoe'
5
-
6
- Hoe.plugins.delete :rubyforge
7
- Hoe.plugins.delete :flog
8
- Hoe.plugin :minitest
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
- # vim: syntax=ruby
11
+ task :default => [:test]
@@ -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
- sphero.instance_eval(&block)
23
+ sphero.instance_eval(&block)
25
24
  ensure
26
- sphero.close
25
+ sphero.close
27
26
  end
28
27
  return nil
29
28
  end
30
- return sphero
31
- rescue Errno::EBUSY
32
- puts retries_left
33
- retries_left = retries_left - 1
34
- retry unless retries_left < 0
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
- limit4(mask), limit1(pcnt), limit4(mask2) )
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
- limit1(x_t), limit1(y_t),
180
- limit1(x_spd), limit1(y_spd),
181
- limit1(dead) )
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
- when true
235
- 0x01
236
- when false
237
- 0x00
238
- else
239
- value
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
- require 'serialport'
254
- @sp = SerialPort.new dev, 115200, 8, 1, SerialPort::NONE
255
- if is_windows?
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
- IO.select([], [@sp], [], 1)
272
- @lock.synchronize do
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
- raise "Unable to write to Sphero!"
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 Errno::EBUSY
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 Errno::EBUSY
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
- @lock.synchronize do
338
- if blocking || is_windows?
339
- data = @sp.read(len)
340
- else
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 Errno::EBUSY
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
@@ -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.0
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-02-06 00:00:00.000000000 Z
11
+ date: 2014-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: minitest
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
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: '5.0'
26
+ version: 10.0.4
27
27
  - !ruby/object:Gem::Dependency
28
- name: rdoc
28
+ name: mocha
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '4.0'
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: '4.0'
40
+ version: 0.13.3
41
41
  - !ruby/object:Gem::Dependency
42
- name: hoe
42
+ name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.6'
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: '3.6'
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
- - .gemtest
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: 1.9.2
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: sphero
101
- rubygems_version: 2.2.1
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