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 +4 -4
- data/.gitconfig +3 -0
- data/README.md +2 -0
- data/lib/images/top.jpg +0 -0
- data/lib/nmea_gps/gps.rb +16 -7
- data/lib/nmea_gps/version.rb +1 -1
- data/nmea_gps.gemspec +0 -1
- data/spec/lib/nmea_gps/gps_spec.rb +12 -0
- data/spec/spec_helper.rb +0 -2
- metadata +3 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4df1dee6294776770219eee54cd40aeca8ba088b
|
4
|
+
data.tar.gz: 403864804c73563ee2d4d11a85423e936363ba4b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae489ceffb529402fce9b521d97a04e10607608528399f235a057f6c04f36953141edbc03e270dc96ac211c0252b76f9d2f5950da2b3d4ad439de77da03bf9fc
|
7
|
+
data.tar.gz: cf890910ebf9a09a01f966312c7a1c39a1746e1ded177fa15c99e4465f0ff5de6f79770a5805c83024be5bf2da91938bb965704014cb18ba4ccb2d59be261f23
|
data/.gitconfig
ADDED
data/README.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+

|
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.
|
data/lib/images/top.jpg
ADDED
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
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/nmea_gps/version.rb
CHANGED
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
|
+
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
|