rf-primer: time-distribution chapter + chain animation; land the bf-constellation GIF#250
Merged
Merged
Conversation
…lation GIF docs/rf-primer.md gains section 10, "One clock for many radios" — a zero-background explanation of the time-sync machinery: why crystals disagree (ppm), why sync is a timestamping problem (software notes wobble by hundreds of us; the game is hardware taking the notes), and the devourer chain link by link — PTP over Ethernet (PHY timestamps, the PHC), the Wi-Fi TSF servoed to the wire (~290 ns), hardware beacons stamped at the antenna and latched at arrival (~0.3 us station lock), and the TBTT pin (~1 us held schedule, clock trace unbroken). With the honest end-to-end budget and links into time-distribution.md. New animation in the house monitor style (tools/timesync_chain_gif.py -> docs/img/timesync_chain.gif): a four-act loop over three clock lanes (grandmaster / AP / station) — free-running drift, PTP sync pulses pulling the AP comb onto the wire grid, beacons dragging the station in (with a ghosted software-stamp scatter for contrast), and the TBTT pin snapping the beacon flags onto the disciplined grid while all three counters converge; a red->amber->green residual sparkline runs underneath. Also lands the strayed beamforming constellation animation (tools/bf_constellation_gif.py -> docs/img/bf_constellation.gif) in its natural home: docs/beamforming-self-sounding.md, right after the SU report decode it visualizes — per-subcarrier h_B/h_A on the complex plane (unit circle = antennas balanced, arc = the channel signature, sweeping per-tone readout), with a caption tying it to the decode math. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Rework the animation so the AP and STATION lanes open up to the silicon path that makes the radio hop work: the AP's TSF COUNTER (the register the wire servo disciplines) feeding the TBTT COMPARE block (TSF % interval == off -> fire), the RSVD PAGE beacon whose TS field is visibly written at egress as the frame passes to the antenna, and on the station side the tsfl LATCH freezing the local TSF at arrival, feeding the (beacon TS, tsfl) pairs into the fit. Act 4 now shows the pin as what it is in hardware: the comparator's offset walking to zero while the TSF counter runs unbroken. Canvas 920x700. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Collaborator
Author
|
Reworked the animation per feedback: the AP and STATION lanes now open up to the Wi-Fi MAC internals on the radio hop — TSF COUNTER → TBTT COMPARE ( |
josephnef
added a commit
that referenced
this pull request
Jul 11, 2026
…er, roaming robot UEs (+ animation) (#251) Conceptual map of what the time-distribution primitives (#242–#250) build at facility scale — three applications, LTE analogies explicit, every per-link claim linked to its bench numbers. ## `docs/multi-ap-cellular.md` 1. **ICIC over the existing Ethernet backhaul.** The classic Wi-Fi obstacle — cells that can't agree on *when* — is gone: the shared clock makes a slot boundary a real network-wide instant with µs-grade guards. Coordination rides the same wire as PTP; centralized and peer (X2-style) scheduler shapes; orthogonality in time, frequency (~ms retune), or a reuse pattern — a policy, not a driver feature. 2. **Make-before-break handover.** The ~100 ms roam decomposed and dissolved: no time re-acquisition (the network clock is valid across cells), no discovery scan (passive neighbor beacons + ms retune in idle slots), **network-side decision** (every AP hardware-timestamps and RSSI-tags every uplink it hears — LTE measurement reports without client cooperation), handover = a schedule-ownership update between two slots. Honest residue named: security-context motion + the ms retune, both inside a slot guard. 3. **Robots as roaming UEs.** Camp / scheduled DL+UL slots / per-AP TA loop tracking motion / handover as above — ending on the point that matters for robotics: **determinism becomes a schedule property, not a contention statistic.** A boundary paragraph keeps the doc honest as it ages: per-link primitives are bench-proven with numbers in the linked docs; the multi-cell layer is ordinary distributed software on the wired side — nothing blocked on the radio. ## The animation `tools/warehouse_cellular_gif.py` → `docs/img/warehouse_cellular.gif` (house monitor style): a floor plan with two overlapping cells and a driving robot, stacked over the network-wide slot ruler. Three acts: uncoordinated collisions in the overlap → the scheduler splitting the grid orthogonally over the backhaul → the robot crossing cells with RSSI crossover, `>> HO: robot → B` on the bus, and its DL/UL slots recoloring between one slot and the next — against the ghost bar *"ordinary Wi-Fi roam: ~100 ms dead"* vs **"handover gap here: 0 slots"**. Cross-linked from `time-distribution.md` and the rf-primer's where-to-next. Doc + tools only; `ctest` 17/17. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.
Docs + animations, two threads:
rf-primer §10 — "One clock for many radios"
A zero-background walk through the time-sync machinery, in the primer's picture-book voice:
time-distribution.mdfor every numberNew animation (
tools/timesync_chain_gif.py→docs/img/timesync_chain.gif, house monitor style): a four-act loop over three clock lanes — free-running drift, PTP pulses pulling the AP comb onto the wire grid, beacons dragging the station in (with a ghosted software-stamp scatter as the counter-example), and the pin snapping the beacon flags onto the disciplined grid while all three counters converge. A red→amber→green residual sparkline runs underneath. Chosen from a brainstorm of four concepts; the runners-up (software-vs-hardware histogram, the "pin slides the flag vs cuts the tape" close-up) are folded in as act-3's ghost scatter and act-4's pin moment.The strayed beamforming constellation lands
tools/bf_constellation_gif.py→docs/img/bf_constellation.giffinds its natural home indocs/beamforming-self-sounding.md, immediately after the SU report-decode section it visualizes: per-subcarrierh_B/h_Aon the complex plane (unit circle = TX antennas balanced, arc = the channel's frequency signature, per-tone sweep readout), with a caption tying it to the decode math and noting what a multipath channel would do to the arc.Doc-only + tools;
ctest17/17.🤖 Generated with Claude Code