nmea_plus 1.0.25 → 1.1.0
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 +5 -5
- data/README.md +2 -2
- data/lib/nmea_plus/ais_message_factory.rb +3 -4
- data/lib/nmea_plus/generated_parser/parser.rb +7 -5
- data/lib/nmea_plus/generated_parser/tokenizer.rb +76 -75
- data/lib/nmea_plus/message/ais/base_ais.rb +1 -2
- data/lib/nmea_plus/message/ais/vdm.rb +30 -27
- data/lib/nmea_plus/message/ais/vdm_payload/mmsi_info.rb +9 -3
- data/lib/nmea_plus/message/ais/vdm_payload/payload.rb +8 -2
- data/lib/nmea_plus/message/ais/vdm_payload/sub_area.rb +2 -3
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg.rb +3 -2
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg1.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg10.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg11.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg12.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg13.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg14.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg15.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg16.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg17.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg18.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg19.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg2.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg20.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg21.rb +3 -3
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg24.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg27.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg3.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg4.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg5.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6.rb +8 -8
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6_dynamic_payload.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1022f61.rb +7 -2
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1f0.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1f2.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1f3.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1f4.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1f5.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d235f10.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg7.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8.rb +6 -6
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8_dynamic_payload.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8d1f0.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8d1f22.rb +5 -2
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8d1f31.rb +7 -3
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8d200f10.rb +2 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8d366f56.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg9.rb +3 -3
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg_binary_acknowledgement.rb +1 -1
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg_class_b_cs_position.rb +3 -3
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg_cnb.rb +5 -4
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg_station_report.rb +4 -4
- data/lib/nmea_plus/message/ais/vdo.rb +1 -1
- data/lib/nmea_plus/message/base.rb +14 -6
- data/lib/nmea_plus/message/nmea/aam.rb +1 -2
- data/lib/nmea_plus/message/nmea/alm.rb +1 -1
- data/lib/nmea_plus/message/nmea/apa.rb +1 -1
- data/lib/nmea_plus/message/nmea/apb.rb +1 -1
- data/lib/nmea_plus/message/nmea/base_nmea.rb +5 -6
- data/lib/nmea_plus/message/nmea/bec.rb +1 -1
- data/lib/nmea_plus/message/nmea/ber.rb +1 -1
- data/lib/nmea_plus/message/nmea/bod.rb +1 -1
- data/lib/nmea_plus/message/nmea/bpi.rb +1 -1
- data/lib/nmea_plus/message/nmea/bwc.rb +2 -2
- data/lib/nmea_plus/message/nmea/bwr.rb +1 -1
- data/lib/nmea_plus/message/nmea/bww.rb +2 -2
- data/lib/nmea_plus/message/nmea/dbk.rb +1 -1
- data/lib/nmea_plus/message/nmea/dbs.rb +2 -2
- data/lib/nmea_plus/message/nmea/dbt.rb +2 -2
- data/lib/nmea_plus/message/nmea/dcn.rb +1 -1
- data/lib/nmea_plus/message/nmea/dpt.rb +1 -1
- data/lib/nmea_plus/message/nmea/dru.rb +1 -1
- data/lib/nmea_plus/message/nmea/dtm.rb +1 -1
- data/lib/nmea_plus/message/nmea/fsi.rb +1 -1
- data/lib/nmea_plus/message/nmea/gbs.rb +1 -1
- data/lib/nmea_plus/message/nmea/gda.rb +1 -1
- data/lib/nmea_plus/message/nmea/gdf.rb +1 -1
- data/lib/nmea_plus/message/nmea/gdp.rb +1 -1
- data/lib/nmea_plus/message/nmea/gga.rb +1 -2
- data/lib/nmea_plus/message/nmea/gla.rb +1 -1
- data/lib/nmea_plus/message/nmea/glc.rb +1 -1
- data/lib/nmea_plus/message/nmea/glf.rb +1 -1
- data/lib/nmea_plus/message/nmea/gll.rb +1 -1
- data/lib/nmea_plus/message/nmea/glp.rb +1 -1
- data/lib/nmea_plus/message/nmea/gns.rb +1 -2
- data/lib/nmea_plus/message/nmea/goa.rb +1 -1
- data/lib/nmea_plus/message/nmea/gof.rb +1 -1
- data/lib/nmea_plus/message/nmea/gop.rb +1 -1
- data/lib/nmea_plus/message/nmea/grs.rb +4 -1
- data/lib/nmea_plus/message/nmea/gsa.rb +1 -1
- data/lib/nmea_plus/message/nmea/gst.rb +1 -1
- data/lib/nmea_plus/message/nmea/gsv.rb +1 -1
- data/lib/nmea_plus/message/nmea/gtd.rb +1 -1
- data/lib/nmea_plus/message/nmea/gxa.rb +1 -1
- data/lib/nmea_plus/message/nmea/gxf.rb +1 -1
- data/lib/nmea_plus/message/nmea/gxp.rb +1 -1
- data/lib/nmea_plus/message/nmea/hcc.rb +1 -1
- data/lib/nmea_plus/message/nmea/hcd.rb +1 -1
- data/lib/nmea_plus/message/nmea/hdg.rb +1 -1
- data/lib/nmea_plus/message/nmea/hdm.rb +1 -1
- data/lib/nmea_plus/message/nmea/hdt.rb +1 -1
- data/lib/nmea_plus/message/nmea/hfb.rb +1 -1
- data/lib/nmea_plus/message/nmea/hsc.rb +1 -1
- data/lib/nmea_plus/message/nmea/htc.rb +1 -1
- data/lib/nmea_plus/message/nmea/hvd.rb +1 -1
- data/lib/nmea_plus/message/nmea/hvm.rb +1 -1
- data/lib/nmea_plus/message/nmea/ima.rb +1 -1
- data/lib/nmea_plus/message/nmea/its.rb +1 -1
- data/lib/nmea_plus/message/nmea/lcd.rb +1 -1
- data/lib/nmea_plus/message/nmea/mda.rb +1 -1
- data/lib/nmea_plus/message/nmea/mhu.rb +1 -1
- data/lib/nmea_plus/message/nmea/mmb.rb +1 -1
- data/lib/nmea_plus/message/nmea/msk.rb +1 -1
- data/lib/nmea_plus/message/nmea/mss.rb +1 -1
- data/lib/nmea_plus/message/nmea/mta.rb +1 -1
- data/lib/nmea_plus/message/nmea/mtw.rb +1 -1
- data/lib/nmea_plus/message/nmea/mwh.rb +1 -1
- data/lib/nmea_plus/message/nmea/mws.rb +1 -1
- data/lib/nmea_plus/message/nmea/mwv.rb +1 -1
- data/lib/nmea_plus/message/nmea/oln.rb +1 -1
- data/lib/nmea_plus/message/nmea/olw.rb +1 -1
- data/lib/nmea_plus/message/nmea/omp.rb +1 -1
- data/lib/nmea_plus/message/nmea/onz.rb +1 -1
- data/lib/nmea_plus/message/nmea/osd.rb +1 -1
- data/lib/nmea_plus/message/nmea/proprietary/pashr.rb +1 -1
- data/lib/nmea_plus/message/nmea/r00.rb +1 -1
- data/lib/nmea_plus/message/nmea/rma.rb +1 -1
- data/lib/nmea_plus/message/nmea/rmb.rb +1 -1
- data/lib/nmea_plus/message/nmea/rmc.rb +1 -1
- data/lib/nmea_plus/message/nmea/rnn.rb +1 -1
- data/lib/nmea_plus/message/nmea/rot.rb +1 -1
- data/lib/nmea_plus/message/nmea/rpm.rb +1 -1
- data/lib/nmea_plus/message/nmea/rsa.rb +1 -1
- data/lib/nmea_plus/message/nmea/rsd.rb +1 -1
- data/lib/nmea_plus/message/nmea/rte.rb +1 -1
- data/lib/nmea_plus/message/nmea/sbk.rb +1 -1
- data/lib/nmea_plus/message/nmea/scd.rb +2 -2
- data/lib/nmea_plus/message/nmea/scy.rb +1 -1
- data/lib/nmea_plus/message/nmea/sdb.rb +1 -1
- data/lib/nmea_plus/message/nmea/sfi.rb +1 -1
- data/lib/nmea_plus/message/nmea/sgd.rb +1 -1
- data/lib/nmea_plus/message/nmea/sgr.rb +2 -1
- data/lib/nmea_plus/message/nmea/siu.rb +1 -1
- data/lib/nmea_plus/message/nmea/slc.rb +2 -2
- data/lib/nmea_plus/message/nmea/snc.rb +3 -3
- data/lib/nmea_plus/message/nmea/snu.rb +1 -1
- data/lib/nmea_plus/message/nmea/sps.rb +1 -1
- data/lib/nmea_plus/message/nmea/ssf.rb +1 -1
- data/lib/nmea_plus/message/nmea/stc.rb +1 -1
- data/lib/nmea_plus/message/nmea/stn.rb +1 -1
- data/lib/nmea_plus/message/nmea/str.rb +1 -1
- data/lib/nmea_plus/message/nmea/sys.rb +6 -6
- data/lib/nmea_plus/message/nmea/tds.rb +1 -1
- data/lib/nmea_plus/message/nmea/tec.rb +1 -1
- data/lib/nmea_plus/message/nmea/tep.rb +1 -1
- data/lib/nmea_plus/message/nmea/tfi.rb +1 -1
- data/lib/nmea_plus/message/nmea/tga.rb +1 -1
- data/lib/nmea_plus/message/nmea/tif.rb +14 -11
- data/lib/nmea_plus/message/nmea/tpc.rb +1 -1
- data/lib/nmea_plus/message/nmea/tpr.rb +1 -1
- data/lib/nmea_plus/message/nmea/tpt.rb +1 -1
- data/lib/nmea_plus/message/nmea/trf.rb +1 -1
- data/lib/nmea_plus/message/nmea/trp.rb +1 -1
- data/lib/nmea_plus/message/nmea/trs.rb +20 -17
- data/lib/nmea_plus/message/nmea/ttm.rb +1 -1
- data/lib/nmea_plus/message/nmea/vbw.rb +1 -1
- data/lib/nmea_plus/message/nmea/vcd.rb +1 -1
- data/lib/nmea_plus/message/nmea/vdr.rb +1 -1
- data/lib/nmea_plus/message/nmea/vhw.rb +1 -1
- data/lib/nmea_plus/message/nmea/vlw.rb +1 -1
- data/lib/nmea_plus/message/nmea/vpe.rb +1 -1
- data/lib/nmea_plus/message/nmea/vpw.rb +1 -1
- data/lib/nmea_plus/message/nmea/vta.rb +1 -1
- data/lib/nmea_plus/message/nmea/vtg.rb +6 -2
- data/lib/nmea_plus/message/nmea/vti.rb +1 -1
- data/lib/nmea_plus/message/nmea/vwe.rb +1 -1
- data/lib/nmea_plus/message/nmea/vwr.rb +1 -1
- data/lib/nmea_plus/message/nmea/vwt.rb +1 -1
- data/lib/nmea_plus/message/nmea/wcv.rb +1 -1
- data/lib/nmea_plus/message/nmea/wdc.rb +1 -1
- data/lib/nmea_plus/message/nmea/wdr.rb +1 -1
- data/lib/nmea_plus/message/nmea/wfm.rb +1 -1
- data/lib/nmea_plus/message/nmea/wnc.rb +1 -1
- data/lib/nmea_plus/message/nmea/wnr.rb +1 -1
- data/lib/nmea_plus/message/nmea/wpl.rb +1 -1
- data/lib/nmea_plus/message/nmea/xdr.rb +1 -1
- data/lib/nmea_plus/message/nmea/xte.rb +1 -1
- data/lib/nmea_plus/message/nmea/xtr.rb +1 -1
- data/lib/nmea_plus/message/nmea/ywp.rb +1 -1
- data/lib/nmea_plus/message/nmea/yws.rb +1 -1
- data/lib/nmea_plus/message/nmea/zaa.rb +1 -1
- data/lib/nmea_plus/message/nmea/zcd.rb +8 -6
- data/lib/nmea_plus/message/nmea/zda.rb +5 -3
- data/lib/nmea_plus/message/nmea/zev.rb +8 -6
- data/lib/nmea_plus/message/nmea/zfi.rb +1 -1
- data/lib/nmea_plus/message/nmea/zfo.rb +1 -1
- data/lib/nmea_plus/message/nmea/zlz.rb +1 -1
- data/lib/nmea_plus/message/nmea/zpi.rb +1 -1
- data/lib/nmea_plus/message/nmea/zta.rb +1 -1
- data/lib/nmea_plus/message/nmea/zte.rb +1 -1
- data/lib/nmea_plus/message/nmea/ztg.rb +1 -1
- data/lib/nmea_plus/message/nmea/zti.rb +1 -1
- data/lib/nmea_plus/message/nmea/zwp.rb +1 -1
- data/lib/nmea_plus/message/nmea/zzu.rb +1 -1
- data/lib/nmea_plus/message_factory.rb +4 -4
- data/lib/nmea_plus/nmea_message_factory.rb +152 -153
- data/lib/nmea_plus/version.rb +1 -1
- data/lib/nmea_plus.rb +6 -4
- metadata +13 -167
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "nmea_plus/message/nmea/base_nmea"
|
2
2
|
|
3
3
|
module NMEAPlus
|
4
4
|
module Message
|
@@ -12,11 +12,11 @@ module NMEAPlus
|
|
12
12
|
# @return [Array<Symbol>]
|
13
13
|
def systems
|
14
14
|
abbr = {
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
"L" => :loran_c,
|
16
|
+
"O" => :omega,
|
17
|
+
"T" => :transit,
|
18
|
+
"G" => :gps,
|
19
|
+
"D" => :decca
|
20
20
|
}
|
21
21
|
|
22
22
|
# drop blank fields and convert to symbol
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "nmea_plus/message/nmea/base_nmea"
|
2
2
|
|
3
3
|
module NMEAPlus
|
4
4
|
module Message
|
@@ -6,27 +6,30 @@ module NMEAPlus
|
|
6
6
|
# TIF - TRANSIT Satellite Initial Flag
|
7
7
|
# TRANSIT system is not operational, no recommended replacement
|
8
8
|
class TIF < NMEAPlus::Message::NMEA::NMEAMessage
|
9
|
+
INITIAL_FLAGS = {
|
10
|
+
"A" => :normal_operation,
|
11
|
+
"V" => :set_initialization_data,
|
12
|
+
"J" => :initialization_data_complete
|
13
|
+
}.freeze
|
14
|
+
|
15
|
+
INITIAL_FLAG_DESCRIPTIONS = {
|
16
|
+
normal_operation: "Normal operation",
|
17
|
+
set_initialization_data: "Set initialization data",
|
18
|
+
initialization_data_complete: "Initialization data complete"
|
19
|
+
}.freeze
|
9
20
|
|
10
21
|
# Satellite Initial Flag
|
11
22
|
# @!parse attr_reader :initial_flag
|
12
23
|
# @return [Symbol]
|
13
24
|
def initial_flag
|
14
|
-
|
15
|
-
when 'A' then :normal_operation
|
16
|
-
when 'V' then :set_initialization_data
|
17
|
-
when 'J' then :initialization_data_complete
|
18
|
-
end
|
25
|
+
INITIAL_FLAGS[@fields[1]]
|
19
26
|
end
|
20
27
|
|
21
28
|
# Description of initial flag
|
22
29
|
# @!parse attr_reader :initial_flag_description
|
23
30
|
# @return [String]
|
24
31
|
def initial_flag_description
|
25
|
-
|
26
|
-
when :normal_operation then 'Normal operation'
|
27
|
-
when :set_initialization_data then 'Set initialization data'
|
28
|
-
when :initialization_data_complete then 'Initialization data complete'
|
29
|
-
end
|
32
|
+
INITIAL_FLAG_DESCRIPTIONS[initial_flag]
|
30
33
|
end
|
31
34
|
|
32
35
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "nmea_plus/message/nmea/base_nmea"
|
2
2
|
|
3
3
|
module NMEAPlus
|
4
4
|
module Message
|
@@ -6,33 +6,36 @@ module NMEAPlus
|
|
6
6
|
# TRS - TRANSIT Satellite Operating Status
|
7
7
|
# TRANSIT system is not operational, no recommended replacement.
|
8
8
|
class TRS < NMEAPlus::Message::NMEA::NMEAMessage
|
9
|
+
STATUS_FLAGS = {
|
10
|
+
"A" => :acquiring,
|
11
|
+
"c" => :calculating,
|
12
|
+
"e" => :error,
|
13
|
+
"m" => :message,
|
14
|
+
"T" => :test,
|
15
|
+
"U" => :dead_reckoning
|
16
|
+
}.freeze
|
17
|
+
|
18
|
+
STATUS_DESCRIPTIONS = {
|
19
|
+
acquiring: "Acquiring",
|
20
|
+
calculating: "Calculating",
|
21
|
+
error: "Error",
|
22
|
+
message: "Message",
|
23
|
+
test: "Test",
|
24
|
+
dead_reckoning: "Dead reckoning"
|
25
|
+
}.freeze
|
9
26
|
|
10
27
|
# TRANSIT system operating status
|
11
28
|
# @!parse attr_reader :status
|
12
29
|
# @return [Symbol]
|
13
30
|
def status
|
14
|
-
|
15
|
-
when 'A' then :acquiring
|
16
|
-
when 'c' then :calculating
|
17
|
-
when 'e' then :error
|
18
|
-
when 'm' then :message
|
19
|
-
when 'T' then :test
|
20
|
-
when 'U' then :dead_reckoning
|
21
|
-
end
|
31
|
+
STATUS_FLAGS[@fields[1]]
|
22
32
|
end
|
23
33
|
|
24
34
|
# Description of status
|
25
35
|
# @!parse attr_reader :status_description
|
26
36
|
# @return [String]
|
27
37
|
def status_description
|
28
|
-
|
29
|
-
when :acquiring then 'Acquiring'
|
30
|
-
when :calculating then 'Calculating'
|
31
|
-
when :error then 'Error'
|
32
|
-
when :message then 'Message'
|
33
|
-
when :test then 'Test'
|
34
|
-
when :dead_reckoning then 'Dead reckoning'
|
35
|
-
end
|
38
|
+
STATUS_DESCRIPTIONS[status]
|
36
39
|
end
|
37
40
|
|
38
41
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "nmea_plus/message/nmea/base_nmea"
|
2
2
|
|
3
3
|
module NMEAPlus
|
4
4
|
module Message
|
@@ -8,7 +8,7 @@ module NMEAPlus
|
|
8
8
|
# whether this is the new format. docs say check field #2 for value "2"
|
9
9
|
# @return [bool]
|
10
10
|
def new_format?
|
11
|
-
|
11
|
+
"T" == @fields[2]
|
12
12
|
end
|
13
13
|
|
14
14
|
field_reader :track_degrees_true, 1, :_float
|
@@ -19,6 +19,7 @@ module NMEAPlus
|
|
19
19
|
def track_degrees_magnetic
|
20
20
|
f = new_format? ? 3 : 2
|
21
21
|
return nil if @fields[f].nil? || @fields[f].empty?
|
22
|
+
|
22
23
|
@fields[f].to_f
|
23
24
|
end
|
24
25
|
|
@@ -28,6 +29,7 @@ module NMEAPlus
|
|
28
29
|
def speed_knots
|
29
30
|
f = new_format? ? 5 : 3
|
30
31
|
return nil if @fields[f].nil? || @fields[f].empty?
|
32
|
+
|
31
33
|
@fields[f].to_f
|
32
34
|
end
|
33
35
|
|
@@ -37,6 +39,7 @@ module NMEAPlus
|
|
37
39
|
def speed_kmh
|
38
40
|
f = new_format? ? 7 : 4
|
39
41
|
return nil if @fields[f].nil? || @fields[f].empty?
|
42
|
+
|
40
43
|
@fields[f].to_f
|
41
44
|
end
|
42
45
|
|
@@ -46,6 +49,7 @@ module NMEAPlus
|
|
46
49
|
def faa_mode
|
47
50
|
f = new_format? ? 9 : 100
|
48
51
|
return nil if @fields[f].nil? || @fields[f].empty?
|
52
|
+
|
49
53
|
@fields[f]
|
50
54
|
end
|
51
55
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "nmea_plus/message/nmea/base_nmea"
|
2
2
|
|
3
3
|
module NMEAPlus
|
4
4
|
module Message
|
@@ -6,6 +6,12 @@ module NMEAPlus
|
|
6
6
|
# ZCD - Timer
|
7
7
|
# Limited utility, no recommended replacement.
|
8
8
|
class ZCD < NMEAPlus::Message::NMEA::NMEAMessage
|
9
|
+
CONTROL_FLAGS = {
|
10
|
+
"+" => :up,
|
11
|
+
"-" => :down,
|
12
|
+
"V" => :stop
|
13
|
+
}.freeze
|
14
|
+
|
9
15
|
# Timer initial value, seconds
|
10
16
|
field_reader :initial_time_seconds, 1, :_integer
|
11
17
|
|
@@ -13,11 +19,7 @@ module NMEAPlus
|
|
13
19
|
# @!parse attr_reader :control
|
14
20
|
# @return [Symbol]
|
15
21
|
def control
|
16
|
-
|
17
|
-
when '+' then :up
|
18
|
-
when '-' then :down
|
19
|
-
when 'V' then :stop
|
20
|
-
end
|
22
|
+
CONTROL_FLAGS[@fields[2]]
|
21
23
|
end
|
22
24
|
end
|
23
25
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "nmea_plus/message/nmea/base_nmea"
|
2
2
|
|
3
3
|
module NMEAPlus
|
4
4
|
module Message
|
@@ -14,10 +14,12 @@ module NMEAPlus
|
|
14
14
|
hms = re_format.match(@fields[1])
|
15
15
|
begin
|
16
16
|
tz_h = @fields[5].to_i
|
17
|
-
tz = "
|
17
|
+
tz = format("%<sign>s%02<hour>d:%02<minute>d", sign: tz_h >= 0 ? "+" : "-", hour: tz_h.abs, minute: @fields[6].to_i)
|
18
18
|
Time.new(@fields[4].to_i, @fields[3].to_i, @fields[2].to_i,
|
19
19
|
hms[1].to_i, hms[2].to_i, hms[3].to_f, tz)
|
20
|
-
rescue
|
20
|
+
rescue ArgumentError
|
21
|
+
# Assume invalid fields.
|
22
|
+
# TODO: handle this better, last time I got tripped up with %02d and minus sign chars
|
21
23
|
nil
|
22
24
|
end
|
23
25
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "nmea_plus/message/nmea/zzu"
|
2
2
|
|
3
3
|
module NMEAPlus
|
4
4
|
module Message
|
@@ -6,6 +6,12 @@ module NMEAPlus
|
|
6
6
|
# ZEV - Event Timer
|
7
7
|
# Limited utility, no recommended replacement.
|
8
8
|
class ZEV < NMEAPlus::Message::NMEA::ZZU
|
9
|
+
CONTROL_FLAGS = {
|
10
|
+
"+" => :up,
|
11
|
+
"-" => :down,
|
12
|
+
"V" => :stop
|
13
|
+
}.freeze
|
14
|
+
|
9
15
|
# Timer initial value
|
10
16
|
field_reader :initial_time, 2, :_interval_hms
|
11
17
|
|
@@ -13,11 +19,7 @@ module NMEAPlus
|
|
13
19
|
# @!parse attr_reader :control
|
14
20
|
# @return [Symbol]
|
15
21
|
def control
|
16
|
-
|
17
|
-
when '+' then :up
|
18
|
-
when '-' then :down
|
19
|
-
when 'V' then :stop
|
20
|
-
end
|
22
|
+
CONTROL_FLAGS[@fields[3]]
|
21
23
|
end
|
22
24
|
end
|
23
25
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
module NMEAPlus
|
3
2
|
|
4
3
|
# The base class for MessageFactory objects, which are instantiated in the Parser. MessageFactory objects
|
@@ -31,9 +30,9 @@ module NMEAPlus
|
|
31
30
|
# @return [bool]
|
32
31
|
def self.message_class_exists?(class_identifier)
|
33
32
|
Object::const_get(class_identifier)
|
34
|
-
|
33
|
+
true
|
35
34
|
rescue ::NameError
|
36
|
-
|
35
|
+
false
|
37
36
|
end
|
38
37
|
|
39
38
|
# Shortcut for the full name to a message class built from this factory.
|
@@ -49,6 +48,7 @@ module NMEAPlus
|
|
49
48
|
# @return [String] The fully qualified message class name
|
50
49
|
def self.best_match_for_data_type(data_type)
|
51
50
|
return data_type if self.message_class_exists?(self.message_class_name(data_type))
|
51
|
+
|
52
52
|
self.alternate_data_type(data_type).each do |alternate_type|
|
53
53
|
return alternate_type if self.message_class_exists?(self.message_class_name(alternate_type))
|
54
54
|
end
|
@@ -72,7 +72,7 @@ module NMEAPlus
|
|
72
72
|
# @return [NMEAPlus::Message] A message object
|
73
73
|
def self.create(message_prefix, fields, checksum)
|
74
74
|
# get the data type and adjust it if necessary (e.g. support for NMEA standard sentences like __AAM)
|
75
|
-
data_type = fields.split(
|
75
|
+
data_type = fields.split(",", 2)[0].upcase # assumed to be 'GPGGA', etc
|
76
76
|
interpreted_type = self.best_match_for_data_type(data_type)
|
77
77
|
class_name = self.message_class_name(interpreted_type)
|
78
78
|
|