nmea_gps 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 186f2e292efec893a3cfb3790f00b763261cba01
4
- data.tar.gz: a37fea6191d105c65f2087b5dac5ec4feaa3b585
3
+ metadata.gz: 4df1dee6294776770219eee54cd40aeca8ba088b
4
+ data.tar.gz: 403864804c73563ee2d4d11a85423e936363ba4b
5
5
  SHA512:
6
- metadata.gz: 380861b8c6f53ae3fa3ab3a10e56d24bc915af6e0b55ce3fb7f0114330b105832c34a2b8c8347d5fc688ee19acfd6f5d44def03f8e166227f032e72a75723a24
7
- data.tar.gz: 7b4e698131dc1a5b609dfa1be074e0a83c743f7f79e5a236c00265046a9196de30b025b1a2b755c21406ddd43f504f9b7d4e2c007e3334fa1410b831ed36faf4
6
+ metadata.gz: ae489ceffb529402fce9b521d97a04e10607608528399f235a057f6c04f36953141edbc03e270dc96ac211c0252b76f9d2f5950da2b3d4ad439de77da03bf9fc
7
+ data.tar.gz: cf890910ebf9a09a01f966312c7a1c39a1746e1ded177fa15c99e4465f0ff5de6f79770a5805c83024be5bf2da91938bb965704014cb18ba4ccb2d59be261f23
data/.gitconfig ADDED
@@ -0,0 +1,3 @@
1
+ [user]
2
+ name = github0013
3
+ email = github0013@gmail.com
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ ![](https://raw.githubusercontent.com/github0013/nmea_gps/master/lib/images/top.jpg)
2
+
1
3
  ## Why another NMEA gem?
2
4
  I was looking for a NMEA gem, but none of them I could find were written in the ruby-way.
3
5
  I wanted to get GPS data pushed when it gets updated, so I created one.
Binary file
data/lib/nmea_gps/gps.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  module Nmea
2
2
 
3
3
  class Gps
4
- TALKER_ID = "GP"
4
+ TALKER_ID = "GP".freeze
5
+ SENTENCE_NAMES = Dir[Pathname(__FILE__).join("../sentences/*.rb")].collect do |path|
6
+ Pathname(path).basename(".rb").to_s
7
+ end.freeze
5
8
 
6
9
  def initialize(serial_port, hz: 1)
7
10
  self.callbacks = {}
@@ -9,9 +12,7 @@ module Nmea
9
12
  self.update_hz = 1.second.to_f / (hz.to_i.zero? ? 1 : hz.to_i)
10
13
  end
11
14
 
12
- Dir[Pathname(__FILE__).join("../sentences/*.rb")].collect do |path|
13
- Pathname(path).basename(".rb").to_s
14
- end.tap{|array| array << "error" << "all" }.each do |sentence|
15
+ (SENTENCE_NAMES + %w[error all]).each do |sentence|
15
16
  define_method(sentence) do |&block|
16
17
  self.callbacks[__callee__] = block
17
18
  end
@@ -22,6 +23,8 @@ module Nmea
22
23
  end
23
24
 
24
25
  def track!
26
+ return if self.track_thread
27
+
25
28
  self.track_thread = Thread.new do
26
29
  loop do
27
30
  callback!
@@ -31,7 +34,10 @@ module Nmea
31
34
  end
32
35
 
33
36
  def stop!
34
- self.track_thread.kill if self.track_thread.respond_to? :kill
37
+ return unless self.track_thread.respond_to? :kill
38
+
39
+ self.track_thread.kill
40
+ self.track_thread = nil
35
41
  end
36
42
 
37
43
  protected
@@ -55,12 +61,15 @@ module Nmea
55
61
  end
56
62
  end
57
63
 
64
+ def sentence_name_reg
65
+ @sentence_name_reg ||= /\A\$#{TALKER_ID}([#{SENTENCE_NAMES.join.chars.uniq.sort.join.upcase}]{3})/
66
+ end
67
+
58
68
  def ensure_sentence
59
69
  yield *@buffer if @buffer
60
70
 
61
71
  raw_sentence_line = self.gps_serial_port.gets("\r\n").strip
62
- # %w[ GLL RMC VTG GGA GSA GSV ZDA].join.chars.uniq.sort.join
63
- return unless match = raw_sentence_line.match(/\A\$#{TALKER_ID}([ACDGLMRSTVZ]{3})/)
72
+ return unless match = raw_sentence_line.match(sentence_name_reg)
64
73
 
65
74
  sentence = match[1].downcase.to_sym
66
75
  if sentence == self.initial_sentence
@@ -1,3 +1,3 @@
1
1
  module NmeaGps
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/nmea_gps.gemspec CHANGED
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.6"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rspec"
24
- spec.add_development_dependency "factory_girl"
25
24
  spec.add_development_dependency "guard-rspec"
26
25
  spec.add_development_dependency "timecop"
27
26
  spec.add_dependency "serialport"
@@ -88,6 +88,18 @@ describe Nmea::Gps do
88
88
 
89
89
  end
90
90
 
91
+ describe "callbacks" do
92
+ it{ expect(gps).to respond_to "gga" }
93
+ it{ expect(gps).to respond_to "gll" }
94
+ it{ expect(gps).to respond_to "gsa" }
95
+ it{ expect(gps).to respond_to "gsv" }
96
+ it{ expect(gps).to respond_to "rmc" }
97
+ it{ expect(gps).to respond_to "vtg" }
98
+ it{ expect(gps).to respond_to "zda" }
99
+ it{ expect(gps).to respond_to "error" }
100
+ it{ expect(gps).to respond_to "all" }
101
+ end
102
+
91
103
  describe "callback!" do
92
104
  before do
93
105
  allow(gps).to receive(:sentences_in_a_cycle).and_return(
data/spec/spec_helper.rb CHANGED
@@ -1,11 +1,9 @@
1
1
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
- require 'factory_girl'
3
2
  require 'timecop'
4
3
  require 'nmea_gps'
5
4
 
6
5
  TIMECOP_2014_01_01__0_00_00 = 1388534400
7
6
 
8
7
  RSpec.configure do |config|
9
- config.include FactoryGirl::Syntax::Methods
10
8
  # config.filter_run :focus
11
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nmea_gps
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - ore
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: factory_girl
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: guard-rspec
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -130,6 +116,7 @@ executables: []
130
116
  extensions: []
131
117
  extra_rdoc_files: []
132
118
  files:
119
+ - ".gitconfig"
133
120
  - ".gitignore"
134
121
  - ".travis.yml"
135
122
  - Gemfile
@@ -137,6 +124,7 @@ files:
137
124
  - LICENSE.txt
138
125
  - README.md
139
126
  - Rakefile
127
+ - lib/images/top.jpg
140
128
  - lib/nmea_gps.rb
141
129
  - lib/nmea_gps/config.rb
142
130
  - lib/nmea_gps/gps.rb