mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
6246b6bad471dbb4a336a9655c536f70b3bf5437
Replace the display-FFT centroid beacon lock with a decoder-based loop. The beacon decoder already tracks the carrier precisely via its NCO (squaring-FFT acquisition + Costas offload); its residual ResidHz+CarFreqHz is an exact measurement of the beacon's offset from the aim point. Feed that into LOError of the active transverter so the LO retunes to compensate LNB drift — the whole downlink stays put, calibration persists. RadioController: - Remove MeasureBeaconFFT and all display-FFT lock state/constants (lobe/search/track/slew/sym/shape/seed-gain/prom), fields FBeaconManualSeed/FBeaconPromDB/FBeaconDecOn, methods SetBeaconDecode/SetBeaconDecodeAtHz/BeaconDecodeEnabled. - SetBeaconLock is now the master switch (lock = decoder); BeaconSeedAtHz aims the decoder; ServiceBeaconLock measures beacon freq from the decoder scope and trims LOError (gain 0.5, deadband 20 Hz, step clamp 400 Hz, settle 8 ticks). Feed-forward of the aim keeps the decoder locked through the retune (net baseband ~0). Lock/SNR now come from the decoder. MainForm: single BEACON button — left-click toggles lock (+ opens the constellation/bulletin scope, arms the spectrum click for aiming), right-click shows/hides the scope. Spectrum click (armed or Shift) aims via BeaconSeedAtHz. Simplified status field and markers. Both targets build (lazbuild --ws=qt6 + build-ewsdrd.sh). Not yet verified on air. Risk: BEACON_RESID_SIGN=+1.0 — flip to -1.0 if the loop runs away. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Languages
Pascal
96.4%
Python
2.9%
Shell
0.6%