nmea_plus 1.0.6 → 1.0.7
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 +4 -4
- data/README.md +3 -3
- data/lib/nmea_plus/message/ais/vdm.rb +2 -0
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg.rb +8 -2
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg20.rb +29 -0
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg21.rb +2 -0
- data/lib/nmea_plus/message/ais/vdm_payload/vdm_msg24.rb +50 -0
- data/lib/nmea_plus/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0eca727afdb573f7ffede6594fc3d7acda16a48
|
4
|
+
data.tar.gz: 6ad4878023b3743d36954b020c8f08d97ea2ec62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ab5c817f001fb525e698b1e3588690bfbcf7952fd85faebe27df6e1c214cceecb5502ec0aedc39e74f33a0e1255524fe172059f1d9b870f1fec9eb245b526b1
|
7
|
+
data.tar.gz: 9338e0e75eae30e96717ffa45053ae7fbd03383f49b22793a0b4b87ddfcfb17d508ae6197490093a6aab7e859a67426d329731907949b992a334ecee765a71b7
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://rubygems.org/gems/nmea_plus)
|
4
4
|
[](https://travis-ci.org/ifreecarve/nmea_plus)
|
5
|
-
[](http://www.rubydoc.info/gems/nmea_plus/1.0.
|
5
|
+
[](http://www.rubydoc.info/gems/nmea_plus/1.0.7)
|
6
6
|
|
7
7
|
[NMEA Plus](https://github.com/ifreecarve/nmea_plus) is a Ruby gem for parsing and decoding "GPS" messages: NMEA, AIS, and any other similar formats of short messaging typically used by marine equipment. It provides convenient access (by name) to the fields of each message type, and a stream reader designed for use with Ruby Blocks.
|
8
8
|
|
@@ -97,7 +97,7 @@ Because the message types are standard, if no override is found for a particular
|
|
97
97
|
Additionally, AIS message type definitions were implemented from the unofficial spec found here:
|
98
98
|
http://catb.org/gpsd/AIVDM.html
|
99
99
|
|
100
|
-
> Currently AIVDM messages types 1, 2, 3, 4, 5, 8, 9, 12, 14, 18, 19,
|
100
|
+
> Currently AIVDM messages types 1, 2, 3, 4, 5, 8, 9, 12, 14, 18, 19, 20, 21, and 24 are implemented.
|
101
101
|
|
102
102
|
Support for proprietary messages is also possible. PASHR is included as proof-of-concept.
|
103
103
|
|
@@ -114,4 +114,4 @@ This gem was written by Ian Katz (ifreecarve@gmail.com) in 2015. It's released
|
|
114
114
|
|
115
115
|
## See Also
|
116
116
|
|
117
|
-
* [Contributing](CONTRIBUTING.md)
|
117
|
+
* [Contributing](CONTRIBUTING.md)
|
@@ -25,7 +25,9 @@ require_relative "vdm_payload/vdm_msg9"
|
|
25
25
|
require_relative "vdm_payload/vdm_msg12"
|
26
26
|
require_relative "vdm_payload/vdm_msg14"
|
27
27
|
require_relative "vdm_payload/vdm_msg18" # also includes 19
|
28
|
+
require_relative "vdm_payload/vdm_msg20"
|
28
29
|
require_relative "vdm_payload/vdm_msg21"
|
30
|
+
require_relative "vdm_payload/vdm_msg24"
|
29
31
|
|
30
32
|
module NMEAPlus
|
31
33
|
module Message
|
@@ -1,5 +1,3 @@
|
|
1
|
-
class Class
|
2
|
-
end
|
3
1
|
|
4
2
|
module NMEAPlus
|
5
3
|
module Message
|
@@ -8,6 +6,9 @@ module NMEAPlus
|
|
8
6
|
module VDMPayload
|
9
7
|
# The base class for the AIS payload (of {NMEAPlus::Message::AIS::VDM}), which uses its own encoding for its own subtypes
|
10
8
|
class VDMMsg
|
9
|
+
|
10
|
+
def initialize; end
|
11
|
+
|
11
12
|
# @return [String] The raw "armored payload" in the original message
|
12
13
|
attr_accessor :payload_bitstring
|
13
14
|
|
@@ -225,6 +226,11 @@ module NMEAPlus
|
|
225
226
|
end
|
226
227
|
end
|
227
228
|
|
229
|
+
# An MMSI is associated with an auxiliary craft when it is of the form 98XXXYYYY
|
230
|
+
def auxiliary_craft?
|
231
|
+
980_000_000 < source_mmsi && source_mmsi < 990_000_000
|
232
|
+
end
|
233
|
+
|
228
234
|
end
|
229
235
|
|
230
236
|
# We haven't defined all the AIS payload types, so this is a catch-all
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative 'vdm_msg'
|
2
|
+
|
3
|
+
module NMEAPlus
|
4
|
+
module Message
|
5
|
+
module AIS
|
6
|
+
module VDMPayload
|
7
|
+
# Type 20 Data Link Management Message
|
8
|
+
class VDMMsg20 < NMEAPlus::Message::AIS::VDMPayload::VDMMsg
|
9
|
+
payload_reader :offset1, 40, 12, :_u
|
10
|
+
payload_reader :reserved_slots1, 52, 4, :_u
|
11
|
+
payload_reader :timeout1, 56, 3, :_u
|
12
|
+
payload_reader :increment1, 59, 11, :_u
|
13
|
+
payload_reader :offset2, 70, 12, :_u
|
14
|
+
payload_reader :reserved_slots2, 82, 4, :_u
|
15
|
+
payload_reader :timeout2, 86, 3, :_u
|
16
|
+
payload_reader :increment2, 89, 11, :_u
|
17
|
+
payload_reader :offset3, 100, 12, :_u
|
18
|
+
payload_reader :reserved_slots3, 112, 4, :_u
|
19
|
+
payload_reader :timeout3, 116, 3, :_u
|
20
|
+
payload_reader :increment3, 119, 11, :_u
|
21
|
+
payload_reader :offset4, 130, 12, :_u
|
22
|
+
payload_reader :reserved_slots4, 142, 4, :_u
|
23
|
+
payload_reader :timeout4, 146, 3, :_u
|
24
|
+
payload_reader :increment4, 149, 11, :_u
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -7,6 +7,7 @@ module NMEAPlus
|
|
7
7
|
# Type 21: Aid-to-Navigation Report
|
8
8
|
class VDMMsg21 < NMEAPlus::Message::AIS::VDMPayload::VDMMsg
|
9
9
|
|
10
|
+
# TODO: Navaid type descriptions (there are 32 of them)
|
10
11
|
payload_reader :aid_type, 38, 5, :_e
|
11
12
|
payload_reader :name, 43, 120, :_t
|
12
13
|
|
@@ -38,6 +39,7 @@ module NMEAPlus
|
|
38
39
|
|
39
40
|
payload_reader :name_extension, 272, 88, :_t
|
40
41
|
|
42
|
+
# TODO: full name property?
|
41
43
|
end
|
42
44
|
end
|
43
45
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require_relative 'vdm_msg'
|
2
|
+
|
3
|
+
module NMEAPlus
|
4
|
+
module Message
|
5
|
+
module AIS
|
6
|
+
module VDMPayload
|
7
|
+
# Type 24: Static Data Report
|
8
|
+
class VDMMsg24 < NMEAPlus::Message::AIS::VDMPayload::VDMMsg
|
9
|
+
|
10
|
+
payload_reader :part_number, 38, 2, :_u
|
11
|
+
|
12
|
+
# Override default bitstring setting to dynamically calculate what fields belong in this message
|
13
|
+
# which can be either part A or part B dpeending on the {#part_number} field
|
14
|
+
def payload_bitstring=(val)
|
15
|
+
super
|
16
|
+
|
17
|
+
case part_number
|
18
|
+
when 0
|
19
|
+
self.class.payload_reader :name, 40, 120, :_t
|
20
|
+
when 1
|
21
|
+
self.class.payload_reader :ship_cargo_type, 40, 8, :_e
|
22
|
+
self.class.payload_reader :vendor_id, 48, 18, :_t
|
23
|
+
self.class.payload_reader :model_code, 66, 4, :_u
|
24
|
+
self.class.payload_reader :serial_number, 70, 20, :_u
|
25
|
+
self.class.payload_reader :callsign, 90, 42, :_t
|
26
|
+
|
27
|
+
# If the MMSI is that of an auxiliary craft, these 30 bits are read as the MMSI of the mother ship.
|
28
|
+
# otherwise they are the vessel dimensions
|
29
|
+
if auxiliary_craft?
|
30
|
+
self.class.payload_reader :mothership_mmsi, 132, 30, :_u
|
31
|
+
else
|
32
|
+
self.class.payload_reader :ship_dimension_to_bow, 132, 9, :_u
|
33
|
+
self.class.payload_reader :ship_dimension_to_stern, 141, 9, :_u
|
34
|
+
self.class.payload_reader :ship_dimension_to_port, 150, 6, :_u
|
35
|
+
self.class.payload_reader :ship_dimension_to_starboard, 156, 6, :_u
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# @!parse attr_reader :ship_cargo_type_description
|
41
|
+
# @return [String] Cargo type description
|
42
|
+
def ship_cargo_type_description
|
43
|
+
get_ship_cargo_type_description(ship_cargo_type)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/nmea_plus/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nmea_plus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian Katz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: racc
|
@@ -201,7 +201,9 @@ files:
|
|
201
201
|
- lib/nmea_plus/message/ais/vdm_payload/vdm_msg12.rb
|
202
202
|
- lib/nmea_plus/message/ais/vdm_payload/vdm_msg14.rb
|
203
203
|
- lib/nmea_plus/message/ais/vdm_payload/vdm_msg18.rb
|
204
|
+
- lib/nmea_plus/message/ais/vdm_payload/vdm_msg20.rb
|
204
205
|
- lib/nmea_plus/message/ais/vdm_payload/vdm_msg21.rb
|
206
|
+
- lib/nmea_plus/message/ais/vdm_payload/vdm_msg24.rb
|
205
207
|
- lib/nmea_plus/message/ais/vdm_payload/vdm_msg4.rb
|
206
208
|
- lib/nmea_plus/message/ais/vdm_payload/vdm_msg5.rb
|
207
209
|
- lib/nmea_plus/message/ais/vdm_payload/vdm_msg8.rb
|