nmea_gps 0.0.1 → 0.0.2

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: fa3fef3d96dff44cb620276abc67d7e7eab832f0
4
- data.tar.gz: c5ed23427e8805430ce9392035a149f8d1c74f3e
3
+ metadata.gz: 057dc086fbc62478f210459a628ca8837798717e
4
+ data.tar.gz: 4b4bdd5adf65ae06517a9c78db1ec70d1e8bd432
5
5
  SHA512:
6
- metadata.gz: 40adfabfbbfcf6167565709b84634dfb3c8d0cffcd82bbe9f9a00b3b557df3016aed4064639259deef1864dafd206a3ad6208d8cbee616fbff9c2ab52e9272df
7
- data.tar.gz: 29ddd56de23382fd20364a607b234efa347ae430ab1e6b515411ec00cdffb869965d5ed6811110f7e308287197426c0333bc48d546b42772fb4b2780f24fd708
6
+ metadata.gz: a8d32f4bdce6f704592d7be01c7ff2a2e00d1b342813649b65a16946de5daf3b540bfc8d922a2663230a304235d60ac68726e2f082f8ccf7710f968db36cadf3
7
+ data.tar.gz: 6d108b7a93ceed09b3050e36d75a92a0f1353293f20260769828759eb219f989c2741c64c6cc37da142bbe340586fac0e4323b748acac4a48f5a35390ea6b159
data/README.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## Why another NMEA gem?
2
+ I was looking for a NMEA gem, but none of them I could find were written in the ruby-way.
3
+ I wanted to get GPS data pushed when it gets updated, so I created one.
4
+
1
5
  ## Installation
2
6
 
3
7
  Add this line to your application's Gemfile:
@@ -16,6 +20,10 @@ Or install it yourself as:
16
20
 
17
21
  ```ruby
18
22
 
23
+ # set your zone if you want to get time in you local time zone.
24
+ # otherwise it will be UTC
25
+ Nmea::Config.time_zone = "Tokyo"
26
+
19
27
  # create a serialport to your GPS receiver
20
28
  # you should know how to open a connection between your GPS device
21
29
  # mine runs on `9600 baudrate`, `8bit`, `1stop bit`, `none parity`
data/lib/nmea_gps/gps.rb CHANGED
@@ -48,7 +48,7 @@ module Nmea
48
48
  loop do
49
49
  line = self.gps_serial_port.gets("\r\n").strip
50
50
  # %w[ GLL RMC VTG GGA GSA GSV ZDA].join.chars.uniq.sort.join
51
- return unless match = line.match(/\A\$#{TALKER_ID}([ACDGLMRSTVZ]{3})/)
51
+ next unless match = line.match(/\A\$#{TALKER_ID}([ACDGLMRSTVZ]{3})/)
52
52
 
53
53
  sentence = match[1].downcase.to_sym
54
54
  set[sentence] << line
@@ -60,20 +60,26 @@ module Nmea
60
60
  def callback!
61
61
  this_set = line_set
62
62
  this_set.keys.each do |sentence|
63
- this_callback = self.callbacks[sentence]
64
- next unless this_callback
65
-
66
- target_class = "Nmea::Gps::#{sentence.to_s.camelcase}".constantize
67
-
68
- object = if sentence == :gsv
69
- this_set[sentence].sort.collect do |line|
70
- target_class.new line
63
+ # TODO: error handling
64
+ begin
65
+ this_callback = self.callbacks[sentence]
66
+ next unless this_callback
67
+
68
+ target_class = "Nmea::Gps::#{sentence.to_s.camelcase}".constantize
69
+
70
+ object = if sentence == :gsv
71
+ this_set[sentence].sort.collect do |line|
72
+ target_class.new line
73
+ end
74
+ else
75
+ target_class.new(this_set[sentence].first)
71
76
  end
72
- else
73
- target_class.new(this_set[sentence].first)
74
- end
75
77
 
76
- this_callback.call object
78
+ this_callback.call object
79
+ rescue => ex
80
+ puts "#{ex.message} sentence:#{sentence} / #{this_set[sentence]}"
81
+ puts ex.backtrace.join "\n"
82
+ end
77
83
  end
78
84
  end
79
85
 
@@ -1,3 +1,3 @@
1
1
  module NmeaGps
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/nmea_gps.rb CHANGED
@@ -4,21 +4,18 @@ require "ostruct"
4
4
 
5
5
  require 'active_support'
6
6
  require 'active_support/core_ext'
7
- Time.zone = "UTC"
8
7
 
9
8
  require "nmea_gps/version"
10
9
  require "nmea_gps/config"
11
10
  require "nmea_gps/gps"
12
11
 
13
- require "nmea_gps/sentence_base"
14
- Dir[Pathname(__FILE__).join("../sentences/*.rb")].each {|file| require file }
15
-
16
12
  module Nmea
17
13
 
18
14
  module UtcTimeable
19
15
  protected
20
16
  def hhmmss_to_local_time(text)
21
17
  hh, mm, ss = text.chars.each_slice(2).collect{|chars| chars.join }
18
+ Time.zone = "UTC"
22
19
  utc_today = Time.zone.today
23
20
  Time.zone.local(utc_today.year, utc_today.month, utc_today.day, hh, mm, ss).
24
21
  in_time_zone(Nmea::Config.time_zone)
@@ -38,3 +35,5 @@ module Nmea
38
35
 
39
36
  end
40
37
 
38
+ require "nmea_gps/sentence_base"
39
+ Dir[Pathname(__FILE__).join("../nmea_gps/sentences/*.rb")].each {|file| require file }
data/nmea_gps.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["orenoimac@gmail.com"]
11
11
  spec.summary = %q{NMEA GPS logs to trigger a callback on each NMEA 0183 sentence.}
12
12
  spec.description = %q{add your serialport object, and you'll get callbacks every time the serialport gets logs.}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/github0013/nmea_gps"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
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.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ore
@@ -164,7 +164,7 @@ files:
164
164
  - spec/nmea_gps_spec.rb
165
165
  - spec/spec_helper.rb
166
166
  - spec/utc_timeable_spec.rb
167
- homepage: ''
167
+ homepage: https://github.com/github0013/nmea_gps
168
168
  licenses:
169
169
  - MIT
170
170
  metadata: {}