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 14 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 = "dbs",
30    feature = "dbt",
31    feature = "dpt",
32    feature = "gga",
33    feature = "gll",
34    feature = "gns",
35    feature = "hdg",
36    feature = "hdm",
37    feature = "hdt",
38    feature = "mwd",
39    feature = "mwv",
40    feature = "rmc",
41    feature = "vhw",
42    feature = "vtg",
43))]
44pub mod nmea;
45
46#[cfg(feature = "ais")]
47pub mod ais;
48
49pub use error::*;
50pub use frame::*;
51
52#[cfg(any(
53    feature = "nmea",
54    feature = "dbs",
55    feature = "dbt",
56    feature = "dpt",
57    feature = "gga",
58    feature = "gll",
59    feature = "gns",
60    feature = "hdg",
61    feature = "hdm",
62    feature = "hdt",
63    feature = "mwd",
64    feature = "mwv",
65    feature = "rmc",
66    feature = "vhw",
67    feature = "vtg",
68))]
69pub use nmea::NmeaSentence;