Link-probe MCS-headroom axis, thermal overlay, rendezvous beacon#179
Merged
Conversation
Complete the adaptive-link probe and add the remaining building-block harnesses. MCS-headroom axis: DEVOURER_TX_MCS_SWEEP steps the on-air rate through a list (a beacon-feed rate sweep, decoupled from the idle-hold continuous carrier like the power ramp), marking each step with <devourer-contx>mcs=. link_probe.py now auto-detects the swept axis, aggregates per rate across sweep cycles, and for the MCS axis recommends the highest rate whose ground SNR clears the target — the "ride the fastest modulation the link holds" reflex. link_probe.sh gains --axis power|mcs. (The power axis previously claimed to serve the MCS case but did not.) Thermal-budget overlay: the probe polls the emitter's PA thermal meter during the sweep and reports the drift — bounding the sustainable power/duty, the drone's local safety input. Rendezvous beacon: tests/rendezvous.sh — the ground parks a modulated continuous beacon on a channel; the drone scans candidate channels with its frame-free energy sensor and locks onto the beacon's channel. The asymmetric-duty rendezvous composed from the continuous-TX stimulus and the RX energy sensor. Docs: note that the continuous carrier is a spectral/thermal stimulus, not a clean frame source (its looped payload isn't FCS-valid), which is why the probe uses a beacon feed for decodable per-frame SNR; and flag the continuous carrier's 100%-duty PA heat as a debug/characterisation caveat. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The building-blocks doc described these conceptually; name the concrete knobs and tools so the doc points at what actually exists: link_probe.sh --axis power|mcs (DEVOURER_TX_MCS_SWEEP), the PA-thermal-drift overlay the probe reports, and tests/rendezvous.sh for the beacon + scan. 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.
Completes the active link-probe and adds the remaining adaptive-link building-block
harnesses — follow-up to #178.
MCS-headroom axis
DEVOURER_TX_MCS_SWEEP="MCS0,MCS2,…"steps the on-air rate through a list (abeacon-feed rate sweep, decoupled from the idle-hold continuous carrier like the
power ramp), marking each step with
<devourer-contx>mcs=.link_probe.pyauto-detects the swept axis, aggregates per rate across sweep cycles, and for the
MCS axis recommends the highest rate whose ground SNR clears the target — the
"ride the fastest modulation the link holds" reflex.
link_probe.shgains--axis power|mcs. (The prior version claimed the harness served the MCS case butonly implemented the power axis — this makes it real.)
Thermal-budget overlay
The probe polls the emitter's PA thermal meter during the sweep and reports the
drift, bounding the sustainable power/duty — the drone's local safety input.
Rendezvous beacon
tests/rendezvous.sh: the ground parks a modulated continuous beacon on achannel; the drone scans candidate channels with its frame-free energy sensor and
locks onto the beacon's channel — the asymmetric-duty rendezvous composed from the
continuous-TX stimulus and the RX energy sensor.
Docs
Note that the continuous carrier is a spectral/thermal stimulus, not a clean
frame source (its looped payload isn't FCS-valid), which is why the probe uses a
beacon feed for decodable per-frame SNR; and flag the 100%-duty PA heat as a
debug/characterisation caveat.
Testing
ctestgreen (4/4).recommendation.
(per-frame SNR available); the Jaguar3 PMAC carrier is a spectral stimulus,
not a frame stream — hence the probe's beacon feed.
🤖 Generated with Claude Code