Skip to content

Avoid late GPS LNAV recovery compilation - #93

Open
zsoerenm wants to merge 1 commit into
masterfrom
fix/lnav-recovery-compilation
Open

Avoid late GPS LNAV recovery compilation#93
zsoerenm wants to merge 1 commit into
masterfrom
fix/lnav-recovery-compilation

Conversation

@zsoerenm

@zsoerenm zsoerenm commented Sep 9, 2026

Copy link
Copy Markdown
Member

An obstructed-sky receiver can reject or miss a GPS LNAV HOW after its symbol counter has started. The next recovery attempt currently creates a new can_decode_word closure type from the Int64/Nothing combination of the captured TOW fields, causing a 292 ms live compilation pause on an Orin.

Capture the concrete decoder state instead. The state type remains stable through cold start, valid HOWs, rejection, and recovery, while the existing plausibility checks and TOW anchoring remain unchanged.

The added test exercises parity failure, implausible TOW rejection, and a later valid recovery while the symbol counter keeps running.

Validation:

  • Full GPS L1 C/A tests pass, including the new recovery assertions.
  • Full suite validation on the Orin passed 17,447 assertions across the original run and the completed remainder after deploying omitted test resources.
  • Replaying the exact 34,153-call failure log reduced the recovery event from 291.9 ms compilation to 8.15 ms before receiver warm-up.
  • With the complete receiver warm-up, replaying 34,720 decoder calls reports 0 ms compilation and a 0.245 ms maximum wall time.

Companion to JuliaGNSS/GNSSReceiver.jl#107.

@codecov

codecov Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.10%. Comparing base (5534ff5) to head (2872590).

Additional details and impacted files
@@            Coverage Diff             @@
##           master      #93      +/-   ##
==========================================
- Coverage   98.10%   98.10%   -0.01%     
==========================================
  Files          28       28              
  Lines        2849     2847       -2     
==========================================
- Hits         2795     2793       -2     
  Misses         54       54              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Capture the concrete decoder state in the HOW recovery closure so rejected
or missing HOW histories do not create new closure types during live tracking.
This removes a measured 292 ms first-call compilation stall on Orin while
preserving TOW recovery behavior.

Refs JuliaGNSS/GNSSReceiver.jl#107
@zsoerenm
zsoerenm force-pushed the fix/lnav-recovery-compilation branch from ab4b619 to 2872590 Compare September 9, 2026 06:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant