nmea_plus 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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