mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Phase 5: make XVTR enter/exit full controller commands
Move the xvtr wrapper render-extras (wideband view + web push) into the rfXvtr render handler, and the HF-return (RestoreBand) into core DeactivateXvtr — emitting rfXvtr *after* RestoreBand so the extras render sees the settled HF state. MainForm.ActivateXvtrBand/DeactivateXvtr collapse to thin delegates. ChannelController drops its OnActivateXvtr/OnDeactivateXvtr host callbacks and calls FRadio.SetXvtrBand directly — no host coupling left, only the OnActiveChanged out-event. Also fixes a latent regression from the OnAfterTune hook: an intermediate SetVfoA during channel Apply (xvtr-exit → RestoreBand → retune to the old freq) fired OnVfoTuned and deactivated the channel mid-apply. Apply is now atomic w.r.t. channel orchestration via an FApplying guard. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
de1f4b772d
commit
cc8380ae85
+7
-3
@@ -1631,15 +1631,19 @@ begin
|
||||
end;
|
||||
|
||||
procedure TRadioController.DeactivateXvtr;
|
||||
// Сохраняет текущий XVTR-слот и выходит в HF. Сам HF-возврат (RestoreBand +
|
||||
// финальная перестройка активного VFO) делает UI-обёртка — там же ResetWfAvgBuf.
|
||||
// Сохраняет текущий XVTR-слот и выходит в HF: HF-возврат (RestoreBand + финальная
|
||||
// перестройка активного VFO + ResetWfAvgBuf через rfBandRestore) делается здесь.
|
||||
// Changed(rfXvtr) шлём ПОСЛЕ RestoreBand — чтобы wideband/web-extras в его рендере
|
||||
// увидели уже восстановленное HF-состояние.
|
||||
begin
|
||||
if FCurrentXvtr < 0 then Exit;
|
||||
SaveCurrentBand; // XVTR-ветка: пишет весь слот + SaveXvtr
|
||||
if FDevConnected then FSettings.Save;
|
||||
FCurrentXvtr := -1;
|
||||
ApplyXvtrToNetwork; // снять XVTR enable bit
|
||||
Changed(rfXvtr); // погасить XVTR-кнопки
|
||||
if (FCurrentBand >= 0) and (FCurrentBand < CFG_BAND_COUNT) then
|
||||
RestoreBand(FCurrentBand); // HF-возврат (состояние/DSP/retune)
|
||||
Changed(rfXvtr); // погасить XVTR-кнопки + wideband/web (rfXvtr-рендер)
|
||||
end;
|
||||
|
||||
procedure TRadioController.SetXvtrBand(Idx: Integer);
|
||||
|
||||
Reference in New Issue
Block a user