10 #ifndef ADAFRUIT_NMEA_H 11 #define ADAFRUIT_NMEA_H 16 #define NMEA_COMMAND_OVERHEAD 7 20 typedef enum : uint8_t {
49 typedef enum : uint8_t {
72 Adafruit_NMEA(
volatile char *firstBuffer,
volatile char *secondBuffer,
92 bool allowNegative =
true);
93 static size_t buildCommand(
char *output,
size_t capacity,
const char *body,
97 volatile char *_buffer;
98 volatile char *_lastBuffer;
103 uint32_t _lastStarted;
104 uint32_t _lastReceived;
107 #endif // ADAFRUIT_NMEA_H nmea_span_t fields
Text after the first comma and before '*'.
Definition: Adafruit_NMEA.h:45
Definition: Adafruit_NMEA.h:70
nmea_sentence_t lastSentence() const
Get views of the latest complete line, including invalid raw text.
Definition: Adafruit_NMEA.cpp:147
nmea_span_t lastText() const
Get the latest complete raw line without validating it again.
Definition: Adafruit_NMEA.cpp:127
Coefficient or decimal-place count overflowed.
Definition: Adafruit_NMEA.h:54
static nmea_span_t nextField(nmea_span_t &remaining)
Return the next field and advance a bounded field cursor.
Definition: Adafruit_NMEA.cpp:292
static size_t buildCommand(char *output, size_t capacity, const char *body, size_t bodyLength)
Build a checksummed command in caller-provided storage.
Definition: Adafruit_NMEA.cpp:445
int64_t coefficient
Signed integer containing the decimal digits.
Definition: Adafruit_NMEA.h:62
Receive buffer has no room for the whole sentence.
Definition: Adafruit_NMEA.h:26
Adafruit_NMEA & operator=(const Adafruit_NMEA &other)=delete
Assignment is disabled to prevent sharing writable receive buffers.
Invalid argument, address, framing, or trailer.
Definition: Adafruit_NMEA.h:23
Definition: Adafruit_NMEA.h:24
Definition: Adafruit_NMEA.h:41
nmea_frame_status_t
Definition: Adafruit_NMEA.h:20
uint8_t decimalPlaces
Number of digits following the decimal point.
Definition: Adafruit_NMEA.h:63
size_t length
Number of characters, excluding any NUL terminator.
Definition: Adafruit_NMEA.h:35
nmea_frame_status_t status
Result of validation.
Definition: Adafruit_NMEA.h:42
nmea_span_t address
Full address, e.g. GNGGA, PAIR001, or PQTMVERNO.
Definition: Adafruit_NMEA.h:44
Field is present but empty.
Definition: Adafruit_NMEA.h:52
static nmea_decimal_t parseDecimal(nmea_span_t field)
Convert a complete field to an exact signed decimal value.
Definition: Adafruit_NMEA.cpp:382
The complete field is a representable decimal.
Definition: Adafruit_NMEA.h:50
Complete format and checksum are valid.
Definition: Adafruit_NMEA.h:22
Adafruit_NMEA(volatile char *firstBuffer, volatile char *secondBuffer, size_t capacity)
Create a receiver using two caller-owned buffers.
Definition: Adafruit_NMEA.cpp:26
More bytes are needed; no new sentence is ready.
Definition: Adafruit_NMEA.h:21
nmea_frame_status_t feed(uint8_t byte, uint32_t receivedAtMs)
Feed one byte into this receiver's bounded sentence buffer.
Definition: Adafruit_NMEA.cpp:82
void reset()
Discard partial and completed lines and clear all timestamps.
Definition: Adafruit_NMEA.cpp:53
static nmea_sentence_t validate(const char *data, size_t length)
Validate a complete, length-bounded NMEA sentence without copying it.
Definition: Adafruit_NMEA.cpp:193
Definition: Adafruit_NMEA.h:60
static nmea_number_status_t validateDecimal(nmea_span_t field, bool allowNegative=true)
Check an exact decimal without constructing its numeric value.
Definition: Adafruit_NMEA.cpp:415
Definition: Adafruit_NMEA.h:33
uint32_t sentenceStartedAt() const
Get the start-marker timestamp of the latest complete line.
Definition: Adafruit_NMEA.cpp:162
nmea_number_status_t status
Result of conversion.
Definition: Adafruit_NMEA.h:61
Invalid character or decimal syntax.
Definition: Adafruit_NMEA.h:53
Field is absent.
Definition: Adafruit_NMEA.h:51
nmea_number_status_t
Result of converting one complete field to a decimal number.
Definition: Adafruit_NMEA.h:49
uint32_t sentenceReceivedAt() const
Get the LF timestamp of the latest complete line.
Definition: Adafruit_NMEA.cpp:171
nmea_span_t text
Entire supplied sentence, including its trailer.
Definition: Adafruit_NMEA.h:43
const char * data
First character, or NULL for an absent field.
Definition: Adafruit_NMEA.h:34