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