nmea_plus 1.0.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 (91) hide show
  1. checksums.yaml +7 -0
  2. data/gem/lib/nmea_plus.rb +63 -0
  3. data/gem/lib/nmea_plus/ais_message_factory.rb +17 -0
  4. data/gem/lib/nmea_plus/generated_parser/parser.rb +127 -0
  5. data/gem/lib/nmea_plus/generated_parser/tokenizer.rb +100 -0
  6. data/gem/lib/nmea_plus/message/ais/base_ais.rb +20 -0
  7. data/gem/lib/nmea_plus/message/ais/vdm.rb +100 -0
  8. data/gem/lib/nmea_plus/message/ais/vdm_payload/vdm_msg.rb +99 -0
  9. data/gem/lib/nmea_plus/message/ais/vdm_payload/vdm_msg1.rb +65 -0
  10. data/gem/lib/nmea_plus/message/ais/vdm_payload/vdm_msg5.rb +38 -0
  11. data/gem/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8.rb +43 -0
  12. data/gem/lib/nmea_plus/message/base.rb +172 -0
  13. data/gem/lib/nmea_plus/message/nmea/aam.rb +17 -0
  14. data/gem/lib/nmea_plus/message/nmea/alm.rb +25 -0
  15. data/gem/lib/nmea_plus/message/nmea/apa.rb +20 -0
  16. data/gem/lib/nmea_plus/message/nmea/apb.rb +14 -0
  17. data/gem/lib/nmea_plus/message/nmea/base_nmea.rb +36 -0
  18. data/gem/lib/nmea_plus/message/nmea/bod.rb +14 -0
  19. data/gem/lib/nmea_plus/message/nmea/bwc.rb +12 -0
  20. data/gem/lib/nmea_plus/message/nmea/bwr.rb +25 -0
  21. data/gem/lib/nmea_plus/message/nmea/bww.rb +11 -0
  22. data/gem/lib/nmea_plus/message/nmea/dbk.rb +13 -0
  23. data/gem/lib/nmea_plus/message/nmea/dbs.rb +11 -0
  24. data/gem/lib/nmea_plus/message/nmea/dbt.rb +11 -0
  25. data/gem/lib/nmea_plus/message/nmea/dcn.rb +26 -0
  26. data/gem/lib/nmea_plus/message/nmea/dpt.rb +12 -0
  27. data/gem/lib/nmea_plus/message/nmea/dtm.rb +24 -0
  28. data/gem/lib/nmea_plus/message/nmea/fsi.rb +14 -0
  29. data/gem/lib/nmea_plus/message/nmea/gbs.rb +18 -0
  30. data/gem/lib/nmea_plus/message/nmea/gga.rb +32 -0
  31. data/gem/lib/nmea_plus/message/nmea/glc.rb +23 -0
  32. data/gem/lib/nmea_plus/message/nmea/gll.rb +21 -0
  33. data/gem/lib/nmea_plus/message/nmea/gns.rb +28 -0
  34. data/gem/lib/nmea_plus/message/nmea/grs.rb +24 -0
  35. data/gem/lib/nmea_plus/message/nmea/gsa.rb +27 -0
  36. data/gem/lib/nmea_plus/message/nmea/gst.rb +18 -0
  37. data/gem/lib/nmea_plus/message/nmea/gsv.rb +29 -0
  38. data/gem/lib/nmea_plus/message/nmea/gtd.rb +15 -0
  39. data/gem/lib/nmea_plus/message/nmea/gxa.rb +22 -0
  40. data/gem/lib/nmea_plus/message/nmea/hdg.rb +20 -0
  41. data/gem/lib/nmea_plus/message/nmea/hdm.rb +11 -0
  42. data/gem/lib/nmea_plus/message/nmea/hdt.rb +11 -0
  43. data/gem/lib/nmea_plus/message/nmea/hfb.rb +12 -0
  44. data/gem/lib/nmea_plus/message/nmea/hsc.rb +12 -0
  45. data/gem/lib/nmea_plus/message/nmea/its.rb +11 -0
  46. data/gem/lib/nmea_plus/message/nmea/lcd.rb +23 -0
  47. data/gem/lib/nmea_plus/message/nmea/msk.rb +15 -0
  48. data/gem/lib/nmea_plus/message/nmea/mss.rb +15 -0
  49. data/gem/lib/nmea_plus/message/nmea/mtw.rb +12 -0
  50. data/gem/lib/nmea_plus/message/nmea/mwv.rb +15 -0
  51. data/gem/lib/nmea_plus/message/nmea/oln.rb +22 -0
  52. data/gem/lib/nmea_plus/message/nmea/osd.rb +19 -0
  53. data/gem/lib/nmea_plus/message/nmea/pashr.rb +21 -0
  54. data/gem/lib/nmea_plus/message/nmea/r00.rb +11 -0
  55. data/gem/lib/nmea_plus/message/nmea/rma.rb +30 -0
  56. data/gem/lib/nmea_plus/message/nmea/rmb.rb +30 -0
  57. data/gem/lib/nmea_plus/message/nmea/rmc.rb +33 -0
  58. data/gem/lib/nmea_plus/message/nmea/rot.rb +12 -0
  59. data/gem/lib/nmea_plus/message/nmea/rpm.rb +15 -0
  60. data/gem/lib/nmea_plus/message/nmea/rsa.rb +17 -0
  61. data/gem/lib/nmea_plus/message/nmea/rsd.rb +14 -0
  62. data/gem/lib/nmea_plus/message/nmea/rte.rb +16 -0
  63. data/gem/lib/nmea_plus/message/nmea/sfi.rb +18 -0
  64. data/gem/lib/nmea_plus/message/nmea/stn.rb +11 -0
  65. data/gem/lib/nmea_plus/message/nmea/tds.rb +11 -0
  66. data/gem/lib/nmea_plus/message/nmea/tfi.rb +13 -0
  67. data/gem/lib/nmea_plus/message/nmea/tpc.rb +13 -0
  68. data/gem/lib/nmea_plus/message/nmea/tpr.rb +13 -0
  69. data/gem/lib/nmea_plus/message/nmea/tpt.rb +13 -0
  70. data/gem/lib/nmea_plus/message/nmea/trf.rb +28 -0
  71. data/gem/lib/nmea_plus/message/nmea/ttm.rb +22 -0
  72. data/gem/lib/nmea_plus/message/nmea/vbw.rb +16 -0
  73. data/gem/lib/nmea_plus/message/nmea/vdr.rb +13 -0
  74. data/gem/lib/nmea_plus/message/nmea/vhw.rb +14 -0
  75. data/gem/lib/nmea_plus/message/nmea/vlw.rb +12 -0
  76. data/gem/lib/nmea_plus/message/nmea/vpw.rb +12 -0
  77. data/gem/lib/nmea_plus/message/nmea/vtg.rb +41 -0
  78. data/gem/lib/nmea_plus/message/nmea/vwr.rb +15 -0
  79. data/gem/lib/nmea_plus/message/nmea/wcv.rb +12 -0
  80. data/gem/lib/nmea_plus/message/nmea/wnc.rb +14 -0
  81. data/gem/lib/nmea_plus/message/nmea/wpl.rb +19 -0
  82. data/gem/lib/nmea_plus/message/nmea/xdr.rb +14 -0
  83. data/gem/lib/nmea_plus/message/nmea/xte.rb +16 -0
  84. data/gem/lib/nmea_plus/message/nmea/xtr.rb +12 -0
  85. data/gem/lib/nmea_plus/message/nmea/zda.rb +23 -0
  86. data/gem/lib/nmea_plus/message/nmea/zfo.rb +13 -0
  87. data/gem/lib/nmea_plus/message/nmea/ztg.rb +13 -0
  88. data/gem/lib/nmea_plus/message_factory.rb +68 -0
  89. data/gem/lib/nmea_plus/nmea_message_factory.rb +110 -0
  90. data/gem/lib/nmea_plus/version.rb +3 -0
  91. metadata +285 -0
@@ -0,0 +1,20 @@
1
+ require_relative "base_nmea"
2
+ require_relative "hdm"
3
+
4
+ module NMEAPlus
5
+ module Message
6
+ module NMEA
7
+ class HDG < NMEAPlus::Message::NMEA::HDM
8
+
9
+ def magnetic_deviation_degrees
10
+ _nsew_signed_float(@fields[2], @fields[3])
11
+ end
12
+
13
+ def magnetic_variation_degrees
14
+ _nsew_signed_float(@fields[4], @fields[5])
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class HDM < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :magnetic_heading_degrees, 1, :_float
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class HDT < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :true_heading_degrees, 1, :_float
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class HFB < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :headrope_to_footrope_meters, 1, :_float
8
+ field_reader :headrope_to_bottom_meters, 3, :_float
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class HSC < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :true_heading_degrees, 1, :_float
8
+ field_reader :magnetic_heading_degrees, 3, :_float
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class ITS < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :second_spread_distance_meters, 1, :_float
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class LCD < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :gri_tenth_microseconds, 1, :_integer
8
+ field_reader :master_relative_snr, 2, :_float
9
+ field_reader :master_relative_ecd, 3, :_float
10
+ field_reader :time_difference_1_microseconds, 4, :_float
11
+ field_reader :time_difference_1_signal?, 5, :_av_boolean
12
+ field_reader :time_difference_2_microseconds, 6, :_float
13
+ field_reader :time_difference_2_signal?, 7, :_av_boolean
14
+ field_reader :time_difference_3_microseconds, 8, :_float
15
+ field_reader :time_difference_3_signal?, 9, :_av_boolean
16
+ field_reader :time_difference_4_microseconds, 10, :_float
17
+ field_reader :time_difference_4_signal?, 11, :_av_boolean
18
+ field_reader :time_difference_5_microseconds, 12, :_float
19
+ field_reader :time_difference_5_signal?, 13, :_av_boolean
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class MSK < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :frequency, 1, :_integer
8
+ field_reader :frequency_mode, 2, :_string
9
+ field_reader :bitrate, 3, :_integer
10
+ field_reader :bitrate_mode, 4, :_string
11
+ field_reader :mss_frequency, 5, :_integer
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class MSS < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :signal_strength_dbu, 1, :_float
8
+ field_reader :snr_db, 2, :_float
9
+ field_reader :beacon_frequency_khz, 3, :_float
10
+ field_reader :beacon_data_rate_bps, 4, :_integer
11
+ field_reader :unknown_field, 5, :_integer
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class MTW < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :degrees, 1, :_float
8
+ field_reader :units, 2, :_string
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class MWV < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :wind_angle, 1, :_float
8
+ field_reader :wind_angle_reference, 2, :_string
9
+ field_reader :wind_speed, 3, :_float
10
+ field_reader :wind_speed_units, 4, :_string
11
+ field_reader :valid?, 5, :_av_boolean
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,22 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class OLN < NMEAPlus::Message::NMEA::NMEAMessage
7
+ def omega_pair1
8
+ @fields[1..3].join(",")
9
+ end
10
+
11
+ def omega_pair2
12
+ @fields[4..6].join(",")
13
+ end
14
+
15
+ def omega_pair3
16
+ @fields[7..9].join(",")
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,19 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class OSD < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :heading_degrees_true, 1, :_float
8
+ field_reader :valid?, 2, :_av_boolean
9
+ field_reader :course_degrees_true, 3, :_float
10
+ field_reader :course_reference, 4, :_string
11
+ field_reader :vessel_speed, 5, :_float
12
+ field_reader :speed_reference, 6, :_string
13
+ field_reader :vessel_set_degrees_true, 7, :_float
14
+ field_reader :vessel_drift_speed, 8, :_float
15
+ field_reader :vessel_drift_speed_units, 9, :_string
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class PASHR < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :utc_time, 1, :_utctime_hms
8
+ field_reader :heading_degrees, 2, :_float
9
+ field_reader :heading_type, 3, :_string
10
+ field_reader :roll_degrees, 4, :_float
11
+ field_reader :pitch_degrees, 5, :_float
12
+ field_reader :heave, 6, :_float
13
+ field_reader :roll_stdev, 7, :_float
14
+ field_reader :pitch_stdev, 8, :_float
15
+ field_reader :heading_stdev, 9, :_float
16
+ field_reader :aiding_status, 10, :_integer
17
+ field_reader :imu_status, 11, :_integer
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class R00 < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :waypoint_id, 1, :_string
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,30 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class RMA < NMEAPlus::Message::NMEA::NMEAMessage
7
+
8
+ field_reader :blink_warning, 1, :_av_boolean
9
+
10
+ def latitude
11
+ _degrees_minutes_to_decimal(@fields[2], @fields[3])
12
+ end
13
+
14
+ def longitude
15
+ _degrees_minutes_to_decimal(@fields[4], @fields[5])
16
+ end
17
+
18
+ field_reader :time_difference_a, 6, :_float
19
+ field_reader :time_difference_b, 7, :_float
20
+ field_reader :speed_over_ground_knots, 8, :_float
21
+ field_reader :track_made_good_degrees_true, 9, :_float
22
+
23
+ def magnetic_variation_degrees
24
+ _nsew_signed_float(@fields[10], @fields[11])
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class RMB < NMEAPlus::Message::NMEA::NMEAMessage
7
+
8
+ field_reader :active?, 1, :_av_boolean
9
+ field_reader :cross_track_error_nautical_miles, 2, :_float
10
+ field_reader :direction_to_steer, 3, :_string
11
+ field_reader :waypoint_to, 4, :_integer
12
+ field_reader :waypoint_from, 5, :_integer
13
+
14
+ def waypoint_latitude
15
+ _degrees_minutes_to_decimal(@fields[6], @fields[7])
16
+ end
17
+
18
+ def waypoint_longitude
19
+ _degrees_minutes_to_decimal(@fields[8], @fields[9])
20
+ end
21
+
22
+ field_reader :range_to_destination_nautical_miles, 10, :_float
23
+ field_reader :bearing_to_destination_degrees_true, 11, :_float
24
+ field_reader :destination_closing_velocity_knots, 12, :_float
25
+ field_reader :arrival_circle_entered?, 13, :_av_boolean
26
+ field_reader :faa_mode, 14, :_string
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,33 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class RMC < NMEAPlus::Message::NMEA::NMEAMessage
7
+
8
+ def utc_time
9
+ _utc_date_time(@fields[9], @fields[1])
10
+ end
11
+
12
+ field_reader :active?, 2, :_av_boolean
13
+
14
+ def latitude
15
+ _degrees_minutes_to_decimal(@fields[3], @fields[4])
16
+ end
17
+
18
+ def longitude
19
+ _degrees_minutes_to_decimal(@fields[5], @fields[6])
20
+ end
21
+
22
+ field_reader :speed_over_ground_knots, 7, :_float
23
+ field_reader :track_made_good_degrees_true, 8, :_float
24
+
25
+ def magnetic_variation_degrees
26
+ _nsew_signed_float(@fields[10], @fields[11])
27
+ end
28
+
29
+ field_reader :faa_mode, 12, :_string
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,12 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class ROT < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :rate_of_turn_starboard_degrees_per_minute, 1, :_float
8
+ field_reader :valid?, 2, :_av_boolean
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class RPM < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :source_type, 1, :_string
8
+ field_reader :source_id, 2, :_integer
9
+ field_reader :rpm, 3, :_float
10
+ field_reader :forward_pitch_percentage, 4, :_float
11
+ field_reader :valid?, 5, :_av_boolean
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class RSA < NMEAPlus::Message::NMEA::NMEAMessage
7
+ # single rudder or starboard rudder are the same fields
8
+ field_reader :rudder_angle, 1, :_float
9
+ field_reader :rudder_angle_valid?, 2, :_av_boolean
10
+ field_reader :starboard_rudder_angle, 1, :_float
11
+ field_reader :starboard_rudder_angle_valid?, 2, :_av_boolean
12
+ field_reader :port_rudder_angle, 3, :_float
13
+ field_reader :port_rudder_angle_valid?, 4, :_av_boolean
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class RSD < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :cursor_range_from_ownship, 9, :_float
8
+ field_reader :cursor_bearing_degrees_clockwise, 10, :_float
9
+ field_reader :range_scale, 11, :_string
10
+ field_reader :range_units, 12, :_string
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class RTE < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :total_messages, 1, :_integer
8
+ field_reader :message_number, 2, :_integer
9
+ field_reader :mode, 3, :_string
10
+ def waypoints
11
+ @fields[4..-1].map(&:to_i)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ require_relative "base_nmea"
2
+
3
+ module NMEAPlus
4
+ module Message
5
+ module NMEA
6
+ class SFI < NMEAPlus::Message::NMEA::NMEAMessage
7
+ field_reader :total_messages, 1, :_integer
8
+ field_reader :message_number, 2, :_integer
9
+
10
+ # returns pairs of frequency, mode
11
+ def frequencies
12
+ @fields[3..-1].each_slice(2).to_a.map { |x| [x[0].to_f, x[1]] }
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end