Skip to content

File syn_nmea.h

FileList > proto > syn_nmea.h

Go to the source code of this file

NMEA 0183 / GNSS sentence parser and encoder. More...

  • #include "../common/syn_defs.h"
  • #include <stdbool.h>
  • #include <stddef.h>
  • #include <stdint.h>

Classes

Type Name
struct SYN_NMEA_GGA
Parsed NMEA GGA (Fix Data) Structure.
struct SYN_NMEA_GSA
Parsed NMEA GSA (DOP & Active Satellites) Structure.
struct SYN_NMEA_Parser
Streaming NMEA Parser State Machine.
struct SYN_NMEA_RMC
Parsed NMEA RMC (Recommended Minimum Data) Structure.
struct SYN_NMEA_VTG
Parsed NMEA VTG (Velocity & Course) Structure.
struct SYN_NMEA_ZDA
Parsed NMEA ZDA (UTC Date & Time) Structure.

Public Types

Type Name
enum SYN_NMEA_FixQuality
GPS Fix Quality Enum (from GGA)
enum SYN_NMEA_SentenceType
NMEA Sentence Type Enum.

Public Functions

Type Name
uint8_t syn_nmea_checksum (const char * sentence)
Calculate XOR checksum of an NMEA sentence payload (between '$' and '*').
SYN_NMEA_SentenceType syn_nmea_get_type (const char * sentence)
Identify sentence type from NMEA string.
double syn_nmea_parse_coord (const char * nmea_coord, char dir)
Parse NMEA DDMM.MMMM coordinate string and direction indicator.
bool syn_nmea_parse_gga (const char * sentence, SYN_NMEA_GGA * gga)
Parse a $GPGGA / $GNGGA sentence.
bool syn_nmea_parse_gsa (const char * sentence, SYN_NMEA_GSA * gsa)
Parse a $GPGSA / $GNGSA sentence.
bool syn_nmea_parse_rmc (const char * sentence, SYN_NMEA_RMC * rmc)
Parse a $GPRMC / $GNRMC sentence.
bool syn_nmea_parse_vtg (const char * sentence, SYN_NMEA_VTG * vtg)
Parse a $GPVTG / $GNVTG sentence.
bool syn_nmea_parse_zda (const char * sentence, SYN_NMEA_ZDA * zda)
Parse a $GPZDA / $GNZDA sentence.
bool syn_nmea_parser_feed (SYN_NMEA_Parser * parser, char byte, char * out_sentence)
Feed a byte into the NMEA streaming parser.
void syn_nmea_parser_init (SYN_NMEA_Parser * parser)
Initialize an NMEA streaming parser.
bool syn_nmea_validate (const char * sentence)
Validate an NMEA sentence string (checks start '$', '*XX' checksum, and CRLF).

Macros

Type Name
define SYN_NMEA_MAX_SENTENCE_LEN 82

Detailed Description

Provides a zero-allocation, streaming byte-at-a-time NMEA 0183 parser, sentence checksum verification, and structured data decoders for standard GNSS sentences: * GGA: Global Positioning System Fix Data * RMC: Recommended Minimum Specific GNSS Data * VTG: Course Over Ground & Ground Speed * GSA: GNSS DOP & Active Satellites * ZDA: UTC Time & Date

Public Types Documentation

enum SYN_NMEA_FixQuality

GPS Fix Quality Enum (from GGA)

enum SYN_NMEA_FixQuality {
    SYN_NMEA_FIX_INVALID = 0,
    SYN_NMEA_FIX_GPS = 1,
    SYN_NMEA_FIX_DGPS = 2,
    SYN_NMEA_FIX_PPS = 3,
    SYN_NMEA_FIX_RTK = 4,
    SYN_NMEA_FIX_FLOAT_RTK = 5,
    SYN_NMEA_FIX_ESTIMATED = 6
};


enum SYN_NMEA_SentenceType

NMEA Sentence Type Enum.

enum SYN_NMEA_SentenceType {
    SYN_NMEA_SENTENCE_UNKNOWN = 0,
    SYN_NMEA_SENTENCE_GGA,
    SYN_NMEA_SENTENCE_RMC,
    SYN_NMEA_SENTENCE_VTG,
    SYN_NMEA_SENTENCE_GSA,
    SYN_NMEA_SENTENCE_ZDA
};


Public Functions Documentation

function syn_nmea_checksum

Calculate XOR checksum of an NMEA sentence payload (between '$' and '*').

uint8_t syn_nmea_checksum (
    const char * sentence
) 

Parameters:

  • sentence NMEA sentence string.

Returns:

8-bit XOR checksum value.


function syn_nmea_get_type

Identify sentence type from NMEA string.

SYN_NMEA_SentenceType syn_nmea_get_type (
    const char * sentence
) 

Parameters:

  • sentence NMEA sentence string.

Returns:

SYN_NMEA_SentenceType enum.


function syn_nmea_parse_coord

Parse NMEA DDMM.MMMM coordinate string and direction indicator.

double syn_nmea_parse_coord (
    const char * nmea_coord,
    char dir
) 

Parameters:

  • nmea_coord Coordinate string (e.g. "4807.038").
  • dir Direction char ('N', 'S', 'E', 'W').

Returns:

Decimal degrees (+N/+E, -S/-W).


function syn_nmea_parse_gga

Parse a $GPGGA / $GNGGA sentence.

bool syn_nmea_parse_gga (
    const char * sentence,
    SYN_NMEA_GGA * gga
) 

Parameters:

  • sentence NMEA sentence string.
  • gga Pointer to destination GGA struct.

Returns:

true on success.


function syn_nmea_parse_gsa

Parse a $GPGSA / $GNGSA sentence.

bool syn_nmea_parse_gsa (
    const char * sentence,
    SYN_NMEA_GSA * gsa
) 

Parameters:

  • sentence NMEA sentence string.
  • gsa Pointer to destination GSA struct.

Returns:

true on success.


function syn_nmea_parse_rmc

Parse a $GPRMC / $GNRMC sentence.

bool syn_nmea_parse_rmc (
    const char * sentence,
    SYN_NMEA_RMC * rmc
) 

Parameters:

  • sentence NMEA sentence string.
  • rmc Pointer to destination RMC struct.

Returns:

true on success.


function syn_nmea_parse_vtg

Parse a $GPVTG / $GNVTG sentence.

bool syn_nmea_parse_vtg (
    const char * sentence,
    SYN_NMEA_VTG * vtg
) 

Parameters:

  • sentence NMEA sentence string.
  • vtg Pointer to destination VTG struct.

Returns:

true on success.


function syn_nmea_parse_zda

Parse a $GPZDA / $GNZDA sentence.

bool syn_nmea_parse_zda (
    const char * sentence,
    SYN_NMEA_ZDA * zda
) 

Parameters:

  • sentence NMEA sentence string.
  • zda Pointer to destination ZDA struct.

Returns:

true on success.


function syn_nmea_parser_feed

Feed a byte into the NMEA streaming parser.

bool syn_nmea_parser_feed (
    SYN_NMEA_Parser * parser,
    char byte,
    char * out_sentence
) 

Parameters:

  • parser Pointer to parser instance.
  • byte Received character.
  • out_sentence Output buffer for completed NMEA sentence string (if returns true).

Returns:

true if a complete, valid NMEA sentence was received.


function syn_nmea_parser_init

Initialize an NMEA streaming parser.

void syn_nmea_parser_init (
    SYN_NMEA_Parser * parser
) 

Parameters:

  • parser Pointer to parser state machine.

function syn_nmea_validate

Validate an NMEA sentence string (checks start '$', '*XX' checksum, and CRLF).

bool syn_nmea_validate (
    const char * sentence
) 

Parameters:

  • sentence NMEA sentence string.

Returns:

true if valid sentence and matching checksum.


Macro Definition Documentation

define SYN_NMEA_MAX_SENTENCE_LEN

#define SYN_NMEA_MAX_SENTENCE_LEN `82`

Max NMEA 0183 sentence length



The documentation for this class was generated from the following file src/syntropic/proto/syn_nmea.h