From 1016fa7a0576ae22e8adc30a6a0c40f16c2f17ef Mon Sep 17 00:00:00 2001 From: Uladzimir Karpenka Date: Tue, 19 May 2026 17:11:10 +0300 Subject: [PATCH] fix HW PTT release --- MainForm.pas | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/MainForm.pas b/MainForm.pas index d55ccd4..7beccfa 100644 --- a/MainForm.pas +++ b/MainForm.pas @@ -226,7 +226,8 @@ type // TUN: режим тоновой подстройки. WDSP TXA PostGen генерирует чистый // тон, Drive подменяется на FTXSettings.TUNLevel (через Cal[band]). FTuning: Boolean; - FHWPTTActive: Boolean; // True = hardware PTT нажата + FHWPTTActive: Boolean; // True = hardware PTT нажата + FHWPTTStartedTX: Boolean; // True = TX был включён именно через HWPTT FMuted: Boolean; FVolume: Integer; FAtten: Integer; // RX step attenuator index: 0=0dB 1=10dB 2=20dB @@ -3202,10 +3203,27 @@ begin if HWPTT <> FHWPTTActive then begin FHWPTTActive := HWPTT; - // Hardware PTT игнорируется во время TUN; иначе включает/выключает передачу - // только если кнопка MOX не нажата (приоритет за UI). - if (not FTuning) and (not BtnMOX.Active) then - ApplyMOX(HWPTT); + if not FTuning then + begin + if HWPTT then + begin + // Press: не перекрываем ручной MOX; запоминаем что мы включили TX. + if not BtnMOX.Active then + begin + ApplyMOX(True); + FHWPTTStartedTX := True; + end; + end else + begin + // Release: выключаем TX только если он был включён через HWPTT. + // Нельзя проверять BtnMOX.Active — ApplyMOX(True) сам его выставляет. + if FHWPTTStartedTX then + begin + FHWPTTStartedTX := False; + ApplyMOX(False); + end; + end; + end; end; end;