nmea_gps 0.0.4 → 0.0.5

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 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