fix: restart GPS over Qwiic after idle and failed startup - #1607
Merged
Merged
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Sep 12, 2026
timohueser
marked this pull request as ready for review
September 13, 2026 10:17
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Qwiic prototype has no GPS wake/reset wire. The driver previously requested indefinite backup and tried to resume it with I2C reads, which is not a documented wake source. It also skipped configuration and left a missing-sensor warning when the first boot probe failed.
Use controlled GNSS stop/start over I2C. Both a successful first probe and a later startup response send START before configuration, so an MCU reset can recover a receiver left stopped by its previous session. Idle sends STOP once and parks host polling; resume sends START and applies the existing configuration and tracking mode. These commands retain receiver data, do not expect an ACK, and do not claim backup-level current. The prototype's idle current remains unmeasured. Future real-board GPIO wake support is separate.
The failed first probe is retried at the normal cadence within the existing 150-second acquisition window. One startup warning bundle is published on the first response or at the deadline. Altimeter and compass results are retained. This is historical startup presence, not live availability. Existing per-key configuration ACK logging and power_saver policy remain unchanged.
Related: #1603. Physical transition acceptance passed on 2026-09-13 at
2fd559d2: late module power, idle/resume with advancing GPS epochs, and MCU reset while GNSS was stopped. No position fix was acquired (fix=0,sats=0); these checks verify receiver recovery, not positioning performance or current consumption.Validation:
./tools/obc test -p obc-sensors: 30 passed. Corresponding all-target clippy passed.git diff --check, and./tools/obc suites check: passed (69 suites / 348 units).python3 docs/build_docs.py --check-links: passed. Public architecture copy and the board README changed in a separate docs commit.2fd559d2with real sensors, no features, and sensor-only debug logging for observable GPS epochs. Linked resident RAM stays 305,664 B; largest guarded poll frame 9,792 B; residual main stack 53,760 B; flat-store frame 9,280 B. The strict-align build check passed. No debug-uart image is used. CI also passed its default-info shipping build, resource baseline and frame gates; all CI jobs have passed in run 34690500936.The board change replaces the unused PMREQ encoder and speculative DDC wake helper. It adds no dependency, resident buffer, generic sensor framework or future-board flag. The complete PR changes six files, +118/-110 lines including documentation and tests.
Physical verification:
36822000→36827000).36872000→36878000).0x00150000. Rewriting that unchanged ELF page with double buffering disabled passed, followed by successful full-image verification. No verification bypass or chip erase was used.