Raw Sentence Representation — Logtalk 3.100.1

the raw parsed term.

- `data/2` maps supported sentence types into typed semantic terms.

# Raw Sentence Representation

Parsed sentences are represented as:

    nmea_sentence(Talker, Type, Fields, checksum(Provided, Computed))

Where:

- `Talker` is a normalized lowercase talker atom such as `gp` or `gn`

- proprietary `$P...` sentences use the atom `proprietary`

- `Type` is the normalized lowercase sentence type atom

- `Fields` is the ordered list of field atoms after the sentence identifier

- `Provided` is either a normalized uppercase hexadecimal checksum atom or `missing`

- `Computed` is the normalized uppercase hexadecimal checksum atom computed from the sentence payload

# Typed `data/2` Results

The library currently provides semantic decoding for these sentence types:

- `gga(Time, Coordinate, fix(FixQuality, SatellitesUsed, HDOP), altitude(AntennaAltitudeMeters, GeoidSeparationMeters), dgps(DifferentialAgeSeconds, StationId))`

- `rmc(Time, Status, Coordinate, movement(SpeedKnots, CourseDegrees), Date, MagneticVariation, Mode)`

- `gsa(SelectionMode, FixType, SatelliteIds, dop(PDOP, HDOP, VDOP), SystemId)`

- `gsv(MessageCount, MessageNumber, SatellitesInView, Satellites)`

- `vtg(track(TrueCourseDegrees, MagneticCourseDegrees), speed(SpeedKnots, SpeedKph), Mode)`

- `gll(Coordinate, Time, Status, Mode)`

Shared semantic subterms include:

- `geographic(Latitude, Longitude)`

- `utc_time(Hour, Minute, Second, fraction(Numerator, Denominator))`

- `date(Year, Month, Day)`

- `magnetic_variation(Degrees, east|west)`

- `satellite(PRN, ElevationDegrees, AzimuthDegrees, SnrDbHz)`

- `missing`

# Date Rule

Two-digit `RMC` years are expanded using a fixed GPS-era rule:

- `80..99` map to `1980..1999`

- `00..79` map to `2000..2079`

# Current Scope

Implemented in this first version:

- raw parsing from text sources

- configurable checksum handling

- proprietary `$P...` sentence passthrough

- semantic decoding for `GGA`, `RMC`, `GSA`, `GSV`, `VTG`, and `GLL`

Deliberately out of scope for this first version:

- sentence generation

- AIS `!` sentences

- serial or socket transport helpers

- corrupted-stream resynchronization

- `GSV` multi-fragment aggregation

- typed proprietary sentence decoding