Collision decode: AIS SIC + ADS-B findings (sighting-based ICAO clock)#97
Conversation
- AIS successive interference cancellation: a confirmed FCS-valid burst is reconstructed exactly (known bits through the modulator's own GMSK synthesis), least-squares scaled with per-burst CFO, subtracted, and the residual re-hunted/decoded for a colliding burst. Measured: no gain on the (sparse, inland) bench fixture - the missing 17 never anchor at any threshold; they are deep-weak, not collisions. Machinery in place for dense traffic. - ADS-B in-frame collision scanning falsified on modes1 (-7 unique: mid-frame false DF11 candidates pollute the ICAO cache); reverted. - Lasting fix from that experiment: the ICAO cache staleness clock now ticks on sightings, not candidate attempts (attempt-based aging thrashes under near-floor gates). - hunt refactored around a shared slice-based template metric. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Warning Review limit reached
More reviews will be available in 38 minutes and 2 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (4)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks 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 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9c751c7b8d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| let dphi = (c2 * c1.conj()).arg(); | ||
| let cfo_step = Complex::from_polar(1.0, dphi / (n as f32 / 2.0)); |
There was a problem hiding this comment.
Preserve the decoded CFO when cancelling AIS bursts
For AIS bursts with ordinary carrier offsets, this whole-burst phase-slope estimate aliases because arg() wraps the phase difference between the two halves; at 48 kHz and a typical ~1-slot waveform, the unambiguous range is only on the order of 40 Hz, while the decoder accepts offsets up to ±1200 Hz. In those cases SIC subtracts the confirmed frame with the wrong per-sample rotation, leaving the original burst in the residual (or adding interference), so collision recovery only works for near-zero CFO bursts even though try_decode already found a usable coarse/fine CFO.
Useful? React with 👍 / 👎.
What
The collision-decode round, honestly reported:
Gates
All green at current floors (ADS-B 323 ≥ 310, AIS 51 ≥ 48, VDL2 44 ≥ 42); full workspace passing.
🤖 Generated with Claude Code