nmea_plus 1.0.24 → 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.
Files changed (209) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +2 -2
  3. data/lib/nmea_plus/ais_message_factory.rb +3 -4
  4. data/lib/nmea_plus/generated_parser/parser.rb +7 -5
  5. data/lib/nmea_plus/generated_parser/tokenizer.rb +76 -75
  6. data/lib/nmea_plus/message/ais/base_ais.rb +1 -2
  7. data/lib/nmea_plus/message/ais/vdm.rb +30 -27
  8. data/lib/nmea_plus/message/ais/vdm_payload/mmsi_info.rb +9 -3
  9. data/lib/nmea_plus/message/ais/vdm_payload/payload.rb +8 -2
  10. data/lib/nmea_plus/message/ais/vdm_payload/sub_area.rb +2 -3
  11. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg.rb +3 -2
  12. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg1.rb +1 -1
  13. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg10.rb +1 -1
  14. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg11.rb +1 -1
  15. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg12.rb +1 -1
  16. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg13.rb +1 -1
  17. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg14.rb +1 -1
  18. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg15.rb +1 -1
  19. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg16.rb +1 -1
  20. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg17.rb +1 -1
  21. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg18.rb +1 -1
  22. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg19.rb +1 -1
  23. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg2.rb +1 -1
  24. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg20.rb +1 -1
  25. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg21.rb +3 -3
  26. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg24.rb +1 -1
  27. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg27.rb +1 -1
  28. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg3.rb +1 -1
  29. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg4.rb +1 -1
  30. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg5.rb +1 -1
  31. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6.rb +8 -8
  32. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6_dynamic_payload.rb +1 -1
  33. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1022f61.rb +7 -2
  34. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1f0.rb +1 -1
  35. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1f2.rb +1 -1
  36. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1f3.rb +1 -1
  37. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1f4.rb +1 -1
  38. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d1f5.rb +1 -1
  39. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg6d235f10.rb +1 -1
  40. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg7.rb +1 -1
  41. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8.rb +6 -6
  42. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8_dynamic_payload.rb +1 -1
  43. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8d1f0.rb +1 -1
  44. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8d1f22.rb +5 -2
  45. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8d1f31.rb +7 -3
  46. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8d200f10.rb +2 -1
  47. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8d366f56.rb +1 -1
  48. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg9.rb +3 -3
  49. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg_binary_acknowledgement.rb +1 -1
  50. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg_class_b_cs_position.rb +3 -3
  51. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg_cnb.rb +5 -4
  52. data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg_station_report.rb +4 -4
  53. data/lib/nmea_plus/message/ais/vdo.rb +1 -1
  54. data/lib/nmea_plus/message/base.rb +14 -6
  55. data/lib/nmea_plus/message/nmea/aam.rb +1 -2
  56. data/lib/nmea_plus/message/nmea/alm.rb +1 -1
  57. data/lib/nmea_plus/message/nmea/apa.rb +1 -1
  58. data/lib/nmea_plus/message/nmea/apb.rb +1 -1
  59. data/lib/nmea_plus/message/nmea/base_nmea.rb +5 -6
  60. data/lib/nmea_plus/message/nmea/bec.rb +1 -1
  61. data/lib/nmea_plus/message/nmea/ber.rb +1 -1
  62. data/lib/nmea_plus/message/nmea/bod.rb +1 -1
  63. data/lib/nmea_plus/message/nmea/bpi.rb +1 -1
  64. data/lib/nmea_plus/message/nmea/bwc.rb +2 -2
  65. data/lib/nmea_plus/message/nmea/bwr.rb +1 -1
  66. data/lib/nmea_plus/message/nmea/bww.rb +2 -2
  67. data/lib/nmea_plus/message/nmea/dbk.rb +1 -1
  68. data/lib/nmea_plus/message/nmea/dbs.rb +2 -2
  69. data/lib/nmea_plus/message/nmea/dbt.rb +2 -2
  70. data/lib/nmea_plus/message/nmea/dcn.rb +1 -1
  71. data/lib/nmea_plus/message/nmea/dpt.rb +1 -1
  72. data/lib/nmea_plus/message/nmea/dru.rb +1 -1
  73. data/lib/nmea_plus/message/nmea/dtm.rb +1 -1
  74. data/lib/nmea_plus/message/nmea/fsi.rb +1 -1
  75. data/lib/nmea_plus/message/nmea/gbs.rb +1 -1
  76. data/lib/nmea_plus/message/nmea/gda.rb +1 -1
  77. data/lib/nmea_plus/message/nmea/gdf.rb +1 -1
  78. data/lib/nmea_plus/message/nmea/gdp.rb +1 -1
  79. data/lib/nmea_plus/message/nmea/gga.rb +1 -2
  80. data/lib/nmea_plus/message/nmea/gla.rb +1 -1
  81. data/lib/nmea_plus/message/nmea/glc.rb +1 -1
  82. data/lib/nmea_plus/message/nmea/glf.rb +1 -1
  83. data/lib/nmea_plus/message/nmea/gll.rb +1 -1
  84. data/lib/nmea_plus/message/nmea/glp.rb +1 -1
  85. data/lib/nmea_plus/message/nmea/gns.rb +1 -2
  86. data/lib/nmea_plus/message/nmea/goa.rb +1 -1
  87. data/lib/nmea_plus/message/nmea/gof.rb +1 -1
  88. data/lib/nmea_plus/message/nmea/gop.rb +1 -1
  89. data/lib/nmea_plus/message/nmea/grs.rb +4 -1
  90. data/lib/nmea_plus/message/nmea/gsa.rb +1 -1
  91. data/lib/nmea_plus/message/nmea/gst.rb +1 -1
  92. data/lib/nmea_plus/message/nmea/gsv.rb +1 -1
  93. data/lib/nmea_plus/message/nmea/gtd.rb +1 -1
  94. data/lib/nmea_plus/message/nmea/gxa.rb +1 -1
  95. data/lib/nmea_plus/message/nmea/gxf.rb +1 -1
  96. data/lib/nmea_plus/message/nmea/gxp.rb +1 -1
  97. data/lib/nmea_plus/message/nmea/hcc.rb +1 -1
  98. data/lib/nmea_plus/message/nmea/hcd.rb +1 -1
  99. data/lib/nmea_plus/message/nmea/hdg.rb +1 -1
  100. data/lib/nmea_plus/message/nmea/hdm.rb +1 -1
  101. data/lib/nmea_plus/message/nmea/hdt.rb +1 -1
  102. data/lib/nmea_plus/message/nmea/hfb.rb +1 -1
  103. data/lib/nmea_plus/message/nmea/hsc.rb +1 -1
  104. data/lib/nmea_plus/message/nmea/htc.rb +1 -1
  105. data/lib/nmea_plus/message/nmea/hvd.rb +1 -1
  106. data/lib/nmea_plus/message/nmea/hvm.rb +1 -1
  107. data/lib/nmea_plus/message/nmea/ima.rb +1 -1
  108. data/lib/nmea_plus/message/nmea/its.rb +1 -1
  109. data/lib/nmea_plus/message/nmea/lcd.rb +1 -1
  110. data/lib/nmea_plus/message/nmea/mda.rb +1 -1
  111. data/lib/nmea_plus/message/nmea/mhu.rb +1 -1
  112. data/lib/nmea_plus/message/nmea/mmb.rb +1 -1
  113. data/lib/nmea_plus/message/nmea/msk.rb +1 -1
  114. data/lib/nmea_plus/message/nmea/mss.rb +1 -1
  115. data/lib/nmea_plus/message/nmea/mta.rb +1 -1
  116. data/lib/nmea_plus/message/nmea/mtw.rb +1 -1
  117. data/lib/nmea_plus/message/nmea/mwh.rb +1 -1
  118. data/lib/nmea_plus/message/nmea/mws.rb +1 -1
  119. data/lib/nmea_plus/message/nmea/mwv.rb +1 -1
  120. data/lib/nmea_plus/message/nmea/oln.rb +1 -1
  121. data/lib/nmea_plus/message/nmea/olw.rb +1 -1
  122. data/lib/nmea_plus/message/nmea/omp.rb +1 -1
  123. data/lib/nmea_plus/message/nmea/onz.rb +1 -1
  124. data/lib/nmea_plus/message/nmea/osd.rb +1 -1
  125. data/lib/nmea_plus/message/nmea/proprietary/pashr.rb +1 -1
  126. data/lib/nmea_plus/message/nmea/r00.rb +1 -1
  127. data/lib/nmea_plus/message/nmea/rma.rb +1 -1
  128. data/lib/nmea_plus/message/nmea/rmb.rb +1 -1
  129. data/lib/nmea_plus/message/nmea/rmc.rb +1 -1
  130. data/lib/nmea_plus/message/nmea/rnn.rb +1 -1
  131. data/lib/nmea_plus/message/nmea/rot.rb +1 -1
  132. data/lib/nmea_plus/message/nmea/rpm.rb +1 -1
  133. data/lib/nmea_plus/message/nmea/rsa.rb +1 -1
  134. data/lib/nmea_plus/message/nmea/rsd.rb +1 -1
  135. data/lib/nmea_plus/message/nmea/rte.rb +1 -1
  136. data/lib/nmea_plus/message/nmea/sbk.rb +1 -1
  137. data/lib/nmea_plus/message/nmea/scd.rb +2 -2
  138. data/lib/nmea_plus/message/nmea/scy.rb +1 -1
  139. data/lib/nmea_plus/message/nmea/sdb.rb +1 -1
  140. data/lib/nmea_plus/message/nmea/sfi.rb +1 -1
  141. data/lib/nmea_plus/message/nmea/sgd.rb +1 -1
  142. data/lib/nmea_plus/message/nmea/sgr.rb +2 -1
  143. data/lib/nmea_plus/message/nmea/siu.rb +1 -1
  144. data/lib/nmea_plus/message/nmea/slc.rb +2 -2
  145. data/lib/nmea_plus/message/nmea/snc.rb +3 -3
  146. data/lib/nmea_plus/message/nmea/snu.rb +1 -1
  147. data/lib/nmea_plus/message/nmea/sps.rb +1 -1
  148. data/lib/nmea_plus/message/nmea/ssf.rb +1 -1
  149. data/lib/nmea_plus/message/nmea/stc.rb +1 -1
  150. data/lib/nmea_plus/message/nmea/stn.rb +1 -1
  151. data/lib/nmea_plus/message/nmea/str.rb +1 -1
  152. data/lib/nmea_plus/message/nmea/sys.rb +6 -6
  153. data/lib/nmea_plus/message/nmea/tds.rb +1 -1
  154. data/lib/nmea_plus/message/nmea/tec.rb +1 -1
  155. data/lib/nmea_plus/message/nmea/tep.rb +1 -1
  156. data/lib/nmea_plus/message/nmea/tfi.rb +1 -1
  157. data/lib/nmea_plus/message/nmea/tga.rb +1 -1
  158. data/lib/nmea_plus/message/nmea/tif.rb +14 -11
  159. data/lib/nmea_plus/message/nmea/tpc.rb +1 -1
  160. data/lib/nmea_plus/message/nmea/tpr.rb +1 -1
  161. data/lib/nmea_plus/message/nmea/tpt.rb +1 -1
  162. data/lib/nmea_plus/message/nmea/trf.rb +1 -1
  163. data/lib/nmea_plus/message/nmea/trp.rb +1 -1
  164. data/lib/nmea_plus/message/nmea/trs.rb +20 -17
  165. data/lib/nmea_plus/message/nmea/ttm.rb +1 -1
  166. data/lib/nmea_plus/message/nmea/vbw.rb +1 -1
  167. data/lib/nmea_plus/message/nmea/vcd.rb +1 -1
  168. data/lib/nmea_plus/message/nmea/vdr.rb +1 -1
  169. data/lib/nmea_plus/message/nmea/vhw.rb +1 -1
  170. data/lib/nmea_plus/message/nmea/vlw.rb +1 -1
  171. data/lib/nmea_plus/message/nmea/vpe.rb +1 -1
  172. data/lib/nmea_plus/message/nmea/vpw.rb +1 -1
  173. data/lib/nmea_plus/message/nmea/vta.rb +1 -1
  174. data/lib/nmea_plus/message/nmea/vtg.rb +6 -2
  175. data/lib/nmea_plus/message/nmea/vti.rb +1 -1
  176. data/lib/nmea_plus/message/nmea/vwe.rb +1 -1
  177. data/lib/nmea_plus/message/nmea/vwr.rb +1 -1
  178. data/lib/nmea_plus/message/nmea/vwt.rb +1 -1
  179. data/lib/nmea_plus/message/nmea/wcv.rb +1 -1
  180. data/lib/nmea_plus/message/nmea/wdc.rb +1 -1
  181. data/lib/nmea_plus/message/nmea/wdr.rb +1 -1
  182. data/lib/nmea_plus/message/nmea/wfm.rb +1 -1
  183. data/lib/nmea_plus/message/nmea/wnc.rb +1 -1
  184. data/lib/nmea_plus/message/nmea/wnr.rb +1 -1
  185. data/lib/nmea_plus/message/nmea/wpl.rb +1 -1
  186. data/lib/nmea_plus/message/nmea/xdr.rb +1 -1
  187. data/lib/nmea_plus/message/nmea/xte.rb +1 -1
  188. data/lib/nmea_plus/message/nmea/xtr.rb +1 -1
  189. data/lib/nmea_plus/message/nmea/ywp.rb +1 -1
  190. data/lib/nmea_plus/message/nmea/yws.rb +1 -1
  191. data/lib/nmea_plus/message/nmea/zaa.rb +1 -1
  192. data/lib/nmea_plus/message/nmea/zcd.rb +8 -6
  193. data/lib/nmea_plus/message/nmea/zda.rb +5 -3
  194. data/lib/nmea_plus/message/nmea/zev.rb +8 -6
  195. data/lib/nmea_plus/message/nmea/zfi.rb +1 -1
  196. data/lib/nmea_plus/message/nmea/zfo.rb +1 -1
  197. data/lib/nmea_plus/message/nmea/zlz.rb +1 -1
  198. data/lib/nmea_plus/message/nmea/zpi.rb +1 -1
  199. data/lib/nmea_plus/message/nmea/zta.rb +1 -1
  200. data/lib/nmea_plus/message/nmea/zte.rb +1 -1
  201. data/lib/nmea_plus/message/nmea/ztg.rb +1 -1
  202. data/lib/nmea_plus/message/nmea/zti.rb +1 -1
  203. data/lib/nmea_plus/message/nmea/zwp.rb +1 -1
  204. data/lib/nmea_plus/message/nmea/zzu.rb +1 -1
  205. data/lib/nmea_plus/message_factory.rb +4 -4
  206. data/lib/nmea_plus/nmea_message_factory.rb +152 -153
  207. data/lib/nmea_plus/version.rb +1 -1
  208. data/lib/nmea_plus.rb +6 -4
  209. metadata +13 -167
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
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
- 'L' => :loran_c,
16
- 'O' => :omega,
17
- 'T' => :transit,
18
- 'G' => :gps,
19
- 'D' => :decca
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 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
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
- case @fields[1]
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
- case initial_flag
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 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
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
- case @fields[1]
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
- case status
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 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
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
- 'T' == @fields[2]
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 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/wdc'
1
+ require "nmea_plus/message/nmea/wdc"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/wnc'
1
+ require "nmea_plus/message/nmea/wnc"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/zzu'
1
+ require "nmea_plus/message/nmea/zzu"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
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
- case @fields[2]
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 'nmea_plus/message/nmea/base_nmea'
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 = "%s%0.02d:%0.02d" % [tz_h >= 0 ? '+' : '', tz_h, @fields[6].to_i]
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 'nmea_plus/message/nmea/zzu'
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
- case @fields[3]
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,4 @@
1
- require 'nmea_plus/message/nmea/zaa'
1
+ require "nmea_plus/message/nmea/zaa"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/zzu'
1
+ require "nmea_plus/message/nmea/zzu"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/zaa'
1
+ require "nmea_plus/message/nmea/zaa"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/zaa'
1
+ require "nmea_plus/message/nmea/zaa"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/zaa'
1
+ require "nmea_plus/message/nmea/zaa"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/zte'
1
+ require "nmea_plus/message/nmea/zte"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/zpi'
1
+ require "nmea_plus/message/nmea/zpi"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -1,4 +1,4 @@
1
- require 'nmea_plus/message/nmea/base_nmea'
1
+ require "nmea_plus/message/nmea/base_nmea"
2
2
 
3
3
  module NMEAPlus
4
4
  module Message
@@ -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
- return true
33
+ true
35
34
  rescue ::NameError
36
- return false
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(',', 2)[0].upcase # assumed to be 'GPGGA', etc
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