mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
Phase 5 (batch 27): move Run=0 teardown (StopRunning) into the controller
Extract the graceful Run=0 teardown from BtnStartStopClick's STOP branch into TRadioController.StopRunning: UpdateState/SetRunAndFreq(False) at zero drive, clear FRunning/FTransmitting, SetTXRun(False), reset RX telemetry, emit Changed(rfTransmitting) + rfRunning. The network stays Connected so the UI wrapper can persist state before Disconnect. New OnControllerState(rfRunning) render handles the START/STOP button, BtnMOX.Enabled and sleep inhibit; the context-specific offline status text stays with the caller. FormClose reuses StopRunning (same teardown). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
452795dc59
commit
9fdfc67f65
@@ -372,6 +372,7 @@ type
|
||||
// Жизненный цикл движка / устройства
|
||||
procedure StartStop;
|
||||
procedure SetRun(On_: Boolean);
|
||||
procedure StopRunning; // Run=0: graceful-стоп RX-потока + сброс TX/телеметрии
|
||||
procedure ConnectDevice(const Dev: THPSDRDevice);
|
||||
procedure Discover;
|
||||
|
||||
@@ -1824,6 +1825,25 @@ begin SetRun(not FRunning); end;
|
||||
procedure TRadioController.SetRun(On_: Boolean);
|
||||
begin FRunning := On_; Changed(rfRunning); { TODO wiring: логика BtnStartStopClick } end;
|
||||
|
||||
procedure TRadioController.StopRunning;
|
||||
// Graceful-останов RX-потока (Run=0) + сброс TX и RX-телеметрии. Сеть остаётся
|
||||
// Connected — Disconnect отдельно (UI-обёртка делает это после persistence).
|
||||
// Рендер run-кнопки/sleep — UI через OnControllerState(rfRunning); MOX — rfTransmitting.
|
||||
begin
|
||||
if FRunning then
|
||||
begin
|
||||
FNetwork.UpdateState(XvtrTranslate(FCenterFreq), XvtrTranslate(ActiveTXFreqHz), 0, False, True, True);
|
||||
FNetwork.SetRunAndFreq(False, XvtrTranslate(FCenterFreq), XvtrTranslate(FCenterFreq), 0);
|
||||
FRunning := False;
|
||||
FTransmitting := False;
|
||||
if FWDSPReady then FDSPEngine.SetTXRun(False);
|
||||
Changed(rfTransmitting); // MOX-кнопка off
|
||||
end;
|
||||
FRXPacketCount := 0;
|
||||
FActiveDDC := 0;
|
||||
Changed(rfRunning); // безусловный сброс run-кнопки/MOX.Enabled/sleep (как старый хвост STOP)
|
||||
end;
|
||||
|
||||
procedure TRadioController.ConnectDevice(const Dev: THPSDRDevice);
|
||||
begin { TODO wiring: DoConnectDevice } Changed(rfDevice); end;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user