mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
Phase 3 (batch 19): move TUN (tune tone) into the controller
SetTune now carries the TUN engine logic: the DoNotTx/RXOnly safety gates, enabling the WDSP PostGen tone before TX, the TUN-level drive (CalcDriveByte sees FTuning), driving TX on/off via SetMOX, and the network re-push on exit. MainForm.ApplyTUN becomes a thin wrapper (mirrors FWebClientActive, calls SetTune); the BtnTUN style render moves to OnControllerState(rfTuning). BtnMOXClick still exits tune via ApplyTUN(False). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
603e0850cf
commit
492b29bea1
+37
-1
@@ -1341,7 +1341,43 @@ begin
|
||||
end;
|
||||
|
||||
procedure TRadioController.SetTune(On_: Boolean);
|
||||
begin FTuning := On_; Changed(rfTuning); { TODO wiring: ApplyTUN } end;
|
||||
begin
|
||||
if On_ = FTuning then Exit;
|
||||
// Safety: те же блокировки, что и в SetMOX — TUN это TX через WDSP PostGen-тон,
|
||||
// он тоже должен молчать на бэндах с DoNotTx и на RX-only XVTR.
|
||||
if On_ and FDevConnected and (FCurrentXvtr < 0)
|
||||
and FAlexSettings.DoNotTx[EnsureRange(FCurrentBand, 0, 10)] then Exit;
|
||||
if On_ and (FCurrentXvtr >= 0) and (FCurrentXvtr < CFG_XVTR_COUNT)
|
||||
and FXvtrSettings.Entries[FCurrentXvtr].RXOnly then Exit;
|
||||
if On_ then
|
||||
begin
|
||||
// Тон включаем ДО запуска TX-аудио, чтобы первые сэмплы уже шли с тоном.
|
||||
if FWDSPReady and Assigned(FDSPEngine) then
|
||||
FDSPEngine.SetTXTone(True, FTXSettings.TUNFreq, 1.0);
|
||||
FTuning := True;
|
||||
FDriveLevel := CalcDriveByte; // CalcDriveByte увидит FTuning=True (TUN-уровень)
|
||||
if FWDSPReady and Assigned(FDSPEngine) then
|
||||
FDSPEngine.SetDriveLevel(FTXSettings.TUNLevel / 100.0);
|
||||
if not FTransmitting then SetMOX(True); // PTT + run TXA-канал
|
||||
end
|
||||
else
|
||||
begin
|
||||
if FTransmitting then SetMOX(False);
|
||||
if FWDSPReady and Assigned(FDSPEngine) then
|
||||
FDSPEngine.SetTXTone(False, 0, 0);
|
||||
FTuning := False;
|
||||
FDriveLevel := CalcDriveByte; // вернуть обычный drive%
|
||||
if FWDSPReady and Assigned(FDSPEngine) then
|
||||
FDSPEngine.SetDriveLevel(FDrivePercent / 100.0);
|
||||
if Assigned(FNetwork) and FNetwork.Connected and FNetwork.Running then
|
||||
begin
|
||||
FNetwork.UpdateState(XvtrTranslate(FCenterFreq), XvtrTranslate(ActiveTXFreqHz),
|
||||
FDriveLevel, FTransmitting, True, True);
|
||||
FNetwork.SendFullHP;
|
||||
end;
|
||||
end;
|
||||
Changed(rfTuning);
|
||||
end;
|
||||
|
||||
procedure TRadioController.SetFMStep(Idx: Integer);
|
||||
begin
|
||||
|
||||
Reference in New Issue
Block a user