38 Commits
Author SHA1 Message Date
ladyadaandLimor Fried a071fdac9b Validate command replies before accepting a matching prefix
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-16 13:04:08 -04:00
ladyadaandLimor Fried 0a7b9caef4 Expose exact received positions through the GPS API
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-16 12:45:09 -04:00
ladyadaandLimor Fried 1f5936353d Connect the GNSS receiver base to shared NMEA framing
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-16 11:49:16 -04:00
ladyadaandLimor Fried e11c729ae1 Use shared GNSS position results in the GPS decoder
Keep SD logger CI coverage on Uno and Mega.

Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-16 11:28:26 -04:00
ladyadaandLimor Fried 79e508fda5 Decode exact GNSS positions into independent sentence results
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-16 10:55:57 -04:00
ladyadaandLimor Fried 46f0ff40a1 Preserve GNSS coordinate precision when formatting decimal degrees
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>
2026-09-16 10:11:28 -04:00
ladyadaandLimor Fried 5da4759bd3 Run GPS regressions in all four build configurations
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>
2026-09-15 22:17:44 -04:00
ladyadaandLimor Fried 910ded451a Keep validated navigation parsing within AVR logger flash limits
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-15 21:57:40 -04:00
ladyadaandLimor Fried 1eab555a50 Validate navigation fields before updating GPS data
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>
2026-09-15 20:58:12 -04:00
ladyadaandLimor Fried 02fb9326be Test submillimeter coordinates and both floating-point modes
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>
2026-09-15 20:40:52 -04:00
ladyadaandLimor Fried b916372940 Decode GNSS coordinates exactly before converting to floating point
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>
2026-09-15 20:30:56 -04:00
ladyadaandLimor Fried e25192cf17 Reuse NMEA validation in GPS sentence checks
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>
2026-09-15 19:59:24 -04:00
ladyadaandLimor Fried e1996d8b49 Reset GPS receive state without changing buffer roles
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>
2026-09-15 19:00:09 -04:00
ladyadaandLimor Fried ee7522e7b5 Use the shared NMEA framer for GPS reception
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>
2026-09-15 17:26:39 -04:00
ladyadaandLimor Fried f3d2b4f0b3 Keep Doxygen validation as a local pre-commit check
Remove the custom checker and extra CI step; keep the missing return documentation fix.

Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-15 17:20:47 -04:00
ladyadaandLimor Fried fd0fd87951 Check documentation with the CI Doxygen version
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>
2026-09-15 17:01:10 -04:00
ladyadaandLimor Fried 092677dfee Add bounded NMEA byte framing
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>
2026-09-15 15:49:13 -04:00
ladyadaandLimor Fried fdaa8279b8 Run every regression test in CI
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>
2026-09-15 15:41:15 -04:00
ladyadaandLimor Fried 90c20730f5 Add exact decimals and NMEA command construction
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-15 15:28:35 -04:00
ladyadaandLimor Fried 01aa7a655d Add bounded NMEA field iteration
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-15 14:27:29 -04:00
ladyadaandLimor Fried 4ac934719e Add bounded NMEA sentence validation
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-15 14:10:17 -04:00
Limor "Ladyada" Fried 91b1a31e3e Merge pull request #182 from ladyada-eagleclaw/fix-copy-warnings-144
Fix length-derived string-copy warnings and field termination
2026-09-15 13:34:04 -04:00
ladyadaandLimor Fried 9ee8f63f26 Use explicit byte copies for NMEA string fields
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>
2026-09-15 13:06:12 -04:00
ladyadaandLimor Fried 67b781c292 Accept additional marine NMEA source identifiers
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-15 13:04:45 -04:00
ladyadaandLimor Fried 1d07bab68a Support antenna status on newer CDTop GPS modules
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-15 11:56:03 -04:00
ladyadaandLimor Fried 716d21a748 Bound GPS response waits and allow wakeup retries
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-15 11:29:59 -04:00
ladyadaandLimor Fried 06f8376021 Merge current GPS fixes before checking Uno memory
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-15 09:56:03 -04:00
Limor "Ladyada" Fried 0b98a99a1c Merge pull request #169 from ladyada-eagleclaw/fix-rmb-partial-update
Preserve waypoint data when RMB parsing fails
2026-09-14 20:41:13 -04:00
Limor "Ladyada" Fried c6d6337cb6 Merge pull request #168 from ladyada-eagleclaw/fix-truncated-sentences
Reject truncated NMEA sentences before parsing fields
2026-09-14 20:39:49 -04:00
Limor "Ladyada" Fried c7f66c99ae Merge pull request #167 from ladyada-eagleclaw/fix-checksum-validation
Validate NMEA checksum digits and line ending
2026-09-14 20:20:42 -04:00
ladyadaandLimor Fried a09ebd7b86 Accept GLONASS and Galileo NMEA source IDs
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-14 18:20:56 -04:00
ladyadaandLimor Fried 235a733d01 Preserve waypoint data when RMB parsing fails
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-14 17:56:57 -04:00
Limor "Ladyada" Fried 2799561240 Merge pull request #166 from ladyada-eagleclaw/fix-null-field-check
Check for NULL before reading an NMEA field
2026-09-14 17:53:06 -04:00
ladyadaandLimor Fried 3b4e2c7ed8 Reject truncated NMEA sentences before parsing fields
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-14 17:34:57 -04:00
ladyadaandLimor Fried 879236ea04 Validate NMEA checksum digits and line ending
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-14 17:29:24 -04:00
ladyadaandLimor Fried 8da699e8d6 Check for NULL before reading an NMEA field
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-14 17:23:25 -04:00
ladyadaandLimor Fried 422d67684a Simplify parser regression to two literal sentences
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-14 17:14:17 -04:00
ladyadaandLimor Fried f6932ee178 Fix bounded termination of checksum-delimited NMEA text
Co-authored-by: Limor Fried <ladyada@users.noreply.github.com>
2026-09-14 16:36:41 -04:00