sphero 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
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