Format retained coordinate components with integer long division so AVR logging can retain submillimeter detail without a floating-point type override. Add bounded-output and precision regressions.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Cover basic and extended GPS builds with float and double, and include the previously tested Nano and HILBERT reception fixtures.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Share bounded UTC time, date, and standard navigation validation in Adafruit_GNSS. Reject malformed populated GGA, RMC, GLL, and GSA fields before changing stored values or freshness timestamps, while preserving empty-field behavior and the high-precision coordinate path.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Run sketch regressions with consistent float and double definitions across library and test translation units. Verify that exact GNSS components and double GPS results retain position changes smaller than the legacy E7 resolution, and record the precision requirement for future receiver APIs and logging.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Share bounded coordinate decoding between the GNSS core and GPS parser. Preserve exact signed E7 results, validate coordinate and hemisphere fields together, and retain the precision available in floating-point convenience fields.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Use the shared validator before source and sentence recognition, reject NULL input safely, and require an exact sentence name instead of a recognized prefix. Cover recognition diagnostics, malformed payloads, checksum trailers, and zero-field messages.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Clear the embedded framer during common_init() and initialize lastline only once so repeated initialization preserves the actual completed buffer. Cover initial, odd, and even buffer swaps, discarded partial input, cleared timestamps, and resumed reception.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Preserve complete raw lines for the existing receive API, discard oversized input, and keep sentence timestamps independent per receiver. Add receive-path regressions for recovery, command replies, pause/resume, and two receivers.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Document the deleted assignment return and add a local check using the
same Doxygen 1.8.13 binary, configuration, and warning policy as CI.
Run it before regression tests to expose documentation failures early.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Name and document the disabled copy parameters so the CI Doxygen check can validate both declarations.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Assemble lines in caller-owned buffers with overflow recovery, stable views of the last complete line, and independent per-receiver timestamps. Add an automatically discovered host regression for boundaries and interleaved receivers.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Discover the C++ tests and Arduino regression sketches automatically. Run the sketches against the actual library with host serial output and timing, including marine extensions, and propagate failures and timeouts to CI.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Add an independent Ubuntu job for all three hardware-independent NMEA tests, with fatal address and undefined-behavior sanitizer checks.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Replace length-derived strncpy calls with memcpy and explicit termination. Ensure parseStr also terminates fields that end without a delimiter, and extend the bounds regression to cover truncation, empty fields, and one-byte destinations.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Create up to 10,000 distinct long filenames with exclusive creation, drain startup GPS command replies before writing, and update CI and installation guidance for the Adafruit fork.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Integrate the dependency removal proposed in #161, install SD explicitly for CI, and document its installation for shield_sdlog.
Co-authored-by: Henricus Basien <Henricus@Basien.de>
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Use shared PROGMEM tables with flash-aware lookup and copying. Preserve the source IDs, sentence IDs and matching order while saving 110 bytes of RAM in the Uno SD logger.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Prevent setup from being inlined into main so SD initialization temporaries are released before loop runs. Uno disassembly confirms main no longer retains a 129-byte local frame and two saved registers.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Add an F()-compatible sendCommand overload and keep the SD logger command strings in flash. This saves 82 bytes of RAM on Uno.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Remove the unreferenced 100-byte private buffer. The Uno SD logger now uses 1865 bytes of static RAM, down from 1965 bytes. All 20 examples compile.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Keep only the eight F() wrappers in shield_sdlog so RAM improvements can be reviewed one at a time. Defer the other memory changes. This step saves 90 bytes on Uno, leaving 83 bytes; compilation passes but runtime SD logging still needs more RAM.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
Keep lookup tables, sentence IDs, logger messages and commands in flash; remove the unused SPI buffer. Keep setup separate so SD initialization does not retain its stack frame during logging.
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>