File syn_nmea.c¶
FileList > proto > syn_nmea.c
Go to the source code of this file
NMEA 0183 / GNSS sentence parser and encoder implementation.
#include "../util/syn_assert.h"#include "syn_nmea.h"#include <ctype.h>#include <stdio.h>#include <stdlib.h>#include <string.h>
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). |
Public Static Functions¶
| Type | Name |
|---|---|
| bool | get_field (const char * sentence, uint8_t index, char * dest, size_t max_len) |
| uint8_t | hex2dec (char c) |
| void | parse_time (const char * field, uint8_t * h, uint8_t * m, uint8_t * s, uint16_t * ms) |
Public Functions Documentation¶
function syn_nmea_checksum¶
Calculate XOR checksum of an NMEA sentence payload (between '$' and '*').
Parameters:
sentenceNMEA sentence string.
Returns:
8-bit XOR checksum value.
function syn_nmea_get_type¶
Identify sentence type from NMEA string.
Parameters:
sentenceNMEA sentence string.
Returns:
SYN_NMEA_SentenceType enum.
function syn_nmea_parse_coord¶
Parse NMEA DDMM.MMMM coordinate string and direction indicator.
Parameters:
nmea_coordCoordinate string (e.g. "4807.038").dirDirection char ('N', 'S', 'E', 'W').
Returns:
Decimal degrees (+N/+E, -S/-W).
function syn_nmea_parse_gga¶
Parse a $GPGGA / $GNGGA sentence.
Parameters:
sentenceNMEA sentence string.ggaPointer to destination GGA struct.
Returns:
true on success.
function syn_nmea_parse_gsa¶
Parse a $GPGSA / $GNGSA sentence.
Parameters:
sentenceNMEA sentence string.gsaPointer to destination GSA struct.
Returns:
true on success.
function syn_nmea_parse_rmc¶
Parse a $GPRMC / $GNRMC sentence.
Parameters:
sentenceNMEA sentence string.rmcPointer to destination RMC struct.
Returns:
true on success.
function syn_nmea_parse_vtg¶
Parse a $GPVTG / $GNVTG sentence.
Parameters:
sentenceNMEA sentence string.vtgPointer to destination VTG struct.
Returns:
true on success.
function syn_nmea_parse_zda¶
Parse a $GPZDA / $GNZDA sentence.
Parameters:
sentenceNMEA sentence string.zdaPointer to destination ZDA struct.
Returns:
true on success.
function syn_nmea_parser_feed¶
Feed a byte into the NMEA streaming parser.
Parameters:
parserPointer to parser instance.byteReceived character.out_sentenceOutput 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.
Parameters:
parserPointer to parser state machine.
function syn_nmea_validate¶
Validate an NMEA sentence string (checks start '$', '*XX' checksum, and CRLF).
Parameters:
sentenceNMEA sentence string.
Returns:
true if valid sentence and matching checksum.
Public Static Functions Documentation¶
function get_field¶
function hex2dec¶
function parse_time¶
The documentation for this class was generated from the following file src/syntropic/proto/syn_nmea.c