Skip to main content

nmea_kit/
lib.rs

1//! # nmea-kit
2//!
3//! Bidirectional NMEA 0183 parser/encoder with AIS message decoding.
4//!
5//! ## Architecture
6//!
7//! ```text
8//! raw line ──→ parse_frame() ──→ NmeaFrame { prefix, talker, sentence_type, fields }
9//!                                     │
10//!                      ┌──────────────┼──────────────┐
11//!                      ▼              ▼               ▼
12//!                $ + known      $ + unknown     ! (AIVDM/AIVDO)
13//!                      │              │               │
14//!                      ▼              ▼               ▼
15//!               Typed struct    Raw fields      AisMessage enum
16//! ```
17//!
18//! ## Features
19//!
20//! - `nmea` (default) — all 21 NMEA sentence types
21//! - `ais` (default) — AIS message decoding
22//! - `dbs`, `dbt`, `dpt`, … — individual sentence types
23
24mod error;
25mod frame;
26
27#[cfg(any(
28    feature = "nmea",
29    feature = "dbk",
30    feature = "dbs",
31    feature = "dbt",
32    feature = "dpt",
33    feature = "gbs",
34    feature = "gga",
35    feature = "gll",
36    feature = "gns",
37    feature = "gst",
38    feature = "hdg",
39    feature = "hdm",
40    feature = "hdt",
41    feature = "mwd",
42    feature = "mwv",
43    feature = "rmb",
44    feature = "rmc",
45    feature = "rot",
46    feature = "vhw",
47    feature = "vtg",
48    feature = "xdr",
49    feature = "zda",
50))]
51pub mod nmea;
52
53#[cfg(feature = "ais")]
54pub mod ais;
55
56pub use error::*;
57pub use frame::*;
58
59#[cfg(any(
60    feature = "nmea",
61    feature = "dbk",
62    feature = "dbs",
63    feature = "dbt",
64    feature = "dpt",
65    feature = "gbs",
66    feature = "gga",
67    feature = "gll",
68    feature = "gns",
69    feature = "gst",
70    feature = "hdg",
71    feature = "hdm",
72    feature = "hdt",
73    feature = "mwd",
74    feature = "mwv",
75    feature = "rmb",
76    feature = "rmc",
77    feature = "rot",
78    feature = "vhw",
79    feature = "vtg",
80    feature = "zda",
81))]
82pub use nmea::NmeaSentence;