nmea_plus 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/gem/lib/nmea_plus.rb +63 -0
- data/gem/lib/nmea_plus/ais_message_factory.rb +17 -0
- data/gem/lib/nmea_plus/generated_parser/parser.rb +127 -0
- data/gem/lib/nmea_plus/generated_parser/tokenizer.rb +100 -0
- data/gem/lib/nmea_plus/message/ais/base_ais.rb +20 -0
- data/gem/lib/nmea_plus/message/ais/vdm.rb +100 -0
- data/gem/lib/nmea_plus/message/ais/vdm_payload/vdm_msg.rb +99 -0
- data/gem/lib/nmea_plus/message/ais/vdm_payload/vdm_msg1.rb +65 -0
- data/gem/lib/nmea_plus/message/ais/vdm_payload/vdm_msg5.rb +38 -0
- data/gem/lib/nmea_plus/message/ais/vdm_payload/vdm_msg8.rb +43 -0
- data/gem/lib/nmea_plus/message/base.rb +172 -0
- data/gem/lib/nmea_plus/message/nmea/aam.rb +17 -0
- data/gem/lib/nmea_plus/message/nmea/alm.rb +25 -0
- data/gem/lib/nmea_plus/message/nmea/apa.rb +20 -0
- data/gem/lib/nmea_plus/message/nmea/apb.rb +14 -0
- data/gem/lib/nmea_plus/message/nmea/base_nmea.rb +36 -0
- data/gem/lib/nmea_plus/message/nmea/bod.rb +14 -0
- data/gem/lib/nmea_plus/message/nmea/bwc.rb +12 -0
- data/gem/lib/nmea_plus/message/nmea/bwr.rb +25 -0
- data/gem/lib/nmea_plus/message/nmea/bww.rb +11 -0
- data/gem/lib/nmea_plus/message/nmea/dbk.rb +13 -0
- data/gem/lib/nmea_plus/message/nmea/dbs.rb +11 -0
- data/gem/lib/nmea_plus/message/nmea/dbt.rb +11 -0
- data/gem/lib/nmea_plus/message/nmea/dcn.rb +26 -0
- data/gem/lib/nmea_plus/message/nmea/dpt.rb +12 -0
- data/gem/lib/nmea_plus/message/nmea/dtm.rb +24 -0
- data/gem/lib/nmea_plus/message/nmea/fsi.rb +14 -0
- data/gem/lib/nmea_plus/message/nmea/gbs.rb +18 -0
- data/gem/lib/nmea_plus/message/nmea/gga.rb +32 -0
- data/gem/lib/nmea_plus/message/nmea/glc.rb +23 -0
- data/gem/lib/nmea_plus/message/nmea/gll.rb +21 -0
- data/gem/lib/nmea_plus/message/nmea/gns.rb +28 -0
- data/gem/lib/nmea_plus/message/nmea/grs.rb +24 -0
- data/gem/lib/nmea_plus/message/nmea/gsa.rb +27 -0
- data/gem/lib/nmea_plus/message/nmea/gst.rb +18 -0
- data/gem/lib/nmea_plus/message/nmea/gsv.rb +29 -0
- data/gem/lib/nmea_plus/message/nmea/gtd.rb +15 -0
- data/gem/lib/nmea_plus/message/nmea/gxa.rb +22 -0
- data/gem/lib/nmea_plus/message/nmea/hdg.rb +20 -0
- data/gem/lib/nmea_plus/message/nmea/hdm.rb +11 -0
- data/gem/lib/nmea_plus/message/nmea/hdt.rb +11 -0
- data/gem/lib/nmea_plus/message/nmea/hfb.rb +12 -0
- data/gem/lib/nmea_plus/message/nmea/hsc.rb +12 -0
- data/gem/lib/nmea_plus/message/nmea/its.rb +11 -0
- data/gem/lib/nmea_plus/message/nmea/lcd.rb +23 -0
- data/gem/lib/nmea_plus/message/nmea/msk.rb +15 -0
- data/gem/lib/nmea_plus/message/nmea/mss.rb +15 -0
- data/gem/lib/nmea_plus/message/nmea/mtw.rb +12 -0
- data/gem/lib/nmea_plus/message/nmea/mwv.rb +15 -0
- data/gem/lib/nmea_plus/message/nmea/oln.rb +22 -0
- data/gem/lib/nmea_plus/message/nmea/osd.rb +19 -0
- data/gem/lib/nmea_plus/message/nmea/pashr.rb +21 -0
- data/gem/lib/nmea_plus/message/nmea/r00.rb +11 -0
- data/gem/lib/nmea_plus/message/nmea/rma.rb +30 -0
- data/gem/lib/nmea_plus/message/nmea/rmb.rb +30 -0
- data/gem/lib/nmea_plus/message/nmea/rmc.rb +33 -0
- data/gem/lib/nmea_plus/message/nmea/rot.rb +12 -0
- data/gem/lib/nmea_plus/message/nmea/rpm.rb +15 -0
- data/gem/lib/nmea_plus/message/nmea/rsa.rb +17 -0
- data/gem/lib/nmea_plus/message/nmea/rsd.rb +14 -0
- data/gem/lib/nmea_plus/message/nmea/rte.rb +16 -0
- data/gem/lib/nmea_plus/message/nmea/sfi.rb +18 -0
- data/gem/lib/nmea_plus/message/nmea/stn.rb +11 -0
- data/gem/lib/nmea_plus/message/nmea/tds.rb +11 -0
- data/gem/lib/nmea_plus/message/nmea/tfi.rb +13 -0
- data/gem/lib/nmea_plus/message/nmea/tpc.rb +13 -0
- data/gem/lib/nmea_plus/message/nmea/tpr.rb +13 -0
- data/gem/lib/nmea_plus/message/nmea/tpt.rb +13 -0
- data/gem/lib/nmea_plus/message/nmea/trf.rb +28 -0
- data/gem/lib/nmea_plus/message/nmea/ttm.rb +22 -0
- data/gem/lib/nmea_plus/message/nmea/vbw.rb +16 -0
- data/gem/lib/nmea_plus/message/nmea/vdr.rb +13 -0
- data/gem/lib/nmea_plus/message/nmea/vhw.rb +14 -0
- data/gem/lib/nmea_plus/message/nmea/vlw.rb +12 -0
- data/gem/lib/nmea_plus/message/nmea/vpw.rb +12 -0
- data/gem/lib/nmea_plus/message/nmea/vtg.rb +41 -0
- data/gem/lib/nmea_plus/message/nmea/vwr.rb +15 -0
- data/gem/lib/nmea_plus/message/nmea/wcv.rb +12 -0
- data/gem/lib/nmea_plus/message/nmea/wnc.rb +14 -0
- data/gem/lib/nmea_plus/message/nmea/wpl.rb +19 -0
- data/gem/lib/nmea_plus/message/nmea/xdr.rb +14 -0
- data/gem/lib/nmea_plus/message/nmea/xte.rb +16 -0
- data/gem/lib/nmea_plus/message/nmea/xtr.rb +12 -0
- data/gem/lib/nmea_plus/message/nmea/zda.rb +23 -0
- data/gem/lib/nmea_plus/message/nmea/zfo.rb +13 -0
- data/gem/lib/nmea_plus/message/nmea/ztg.rb +13 -0
- data/gem/lib/nmea_plus/message_factory.rb +68 -0
- data/gem/lib/nmea_plus/nmea_message_factory.rb +110 -0
- data/gem/lib/nmea_plus/version.rb +3 -0
- 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,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,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,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,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
|