add alert ADC overload

This commit is contained in:
2026-05-21 15:42:59 +03:00
parent b5103bf474
commit 960cadd4b0
2 changed files with 25 additions and 7 deletions
+24 -6
View File
@@ -151,8 +151,10 @@ type
FSupplyA: Double; FSupplyA: Double;
FPLLLock: Boolean; FPLLLock: Boolean;
FHWPTT: Boolean; FHWPTT: Boolean;
FADCOverload: Byte;
public public
constructor Create(AForm: TObject; FW, SW, SV, SA: Double; PLL, HWPTT: Boolean); constructor Create(AForm: TObject; FW, SW, SV, SA: Double; PLL, HWPTT: Boolean;
ADCOverload: Byte);
procedure Execute; procedure Execute;
end; end;
@@ -473,7 +475,8 @@ type
// Public UI update (called from sync objects) // Public UI update (called from sync objects)
procedure DoAddDevice(const Dev: THPSDRDevice; const Entry: string); procedure DoAddDevice(const Dev: THPSDRDevice; const Entry: string);
procedure DoUpdateStatus(FwdW, SWRV, SupplyV, SupplyA: Double; PLLLock, HWPTT: Boolean); procedure DoUpdateStatus(FwdW, SWRV, SupplyV, SupplyA: Double; PLLLock, HWPTT: Boolean;
ADCOverload: Byte);
procedure UpdateTXMeters; procedure UpdateTXMeters;
procedure DoUpdateDDCSeq(DDCIdx: Integer; Seq: LongWord); procedure DoUpdateDDCSeq(DDCIdx: Integer; Seq: LongWord);
procedure DoUpdateDDCSeqOrNoDevice(DDCIdx: Integer; Seq: LongWord); procedure DoUpdateDDCSeqOrNoDevice(DDCIdx: Integer; Seq: LongWord);
@@ -883,7 +886,7 @@ begin
end; end;
constructor TStatusUISync.Create(AForm: TObject; constructor TStatusUISync.Create(AForm: TObject;
FW, SW, SV, SA: Double; PLL, HWPTT: Boolean); FW, SW, SV, SA: Double; PLL, HWPTT: Boolean; ADCOverload: Byte);
begin begin
inherited Create; inherited Create;
FForm := AForm; FForm := AForm;
@@ -893,11 +896,13 @@ begin
FSupplyA := SA; FSupplyA := SA;
FPLLLock := PLL; FPLLLock := PLL;
FHWPTT := HWPTT; FHWPTT := HWPTT;
FADCOverload := ADCOverload;
end; end;
procedure TStatusUISync.Execute; procedure TStatusUISync.Execute;
begin begin
TMainForm(FForm).DoUpdateStatus(FFwdW, FSWRV, FSupplyV, FSupplyA, FPLLLock, FHWPTT); TMainForm(FForm).DoUpdateStatus(FFwdW, FSWRV, FSupplyV, FSupplyA, FPLLLock, FHWPTT,
FADCOverload);
end; end;
constructor TDDCSeqSync.Create(AForm: TObject; Idx: Integer; Seq: LongWord); constructor TDDCSeqSync.Create(AForm: TObject; Idx: Integer; Seq: LongWord);
@@ -2617,6 +2622,10 @@ begin
SetStatusText(5, 'TX idle'); SetStatusText(5, 'TX idle');
SetStatusText(6, 'SEQ --'); SetStatusText(6, 'SEQ --');
SetStatusText(7, 'PLL --'); SetStatusText(7, 'PLL --');
if FSpecView <> nil then
FSpecView.ADCOverloadVisible := False;
if PbSpectrum <> nil then
PbSpectrum.Invalidate;
FillChar(FDDCSeqValid, SizeOf(FDDCSeqValid), 0); FillChar(FDDCSeqValid, SizeOf(FDDCSeqValid), 0);
FSeqErrorCount := 0; FSeqErrorCount := 0;
FLastSeqErrorDDC := -1; FLastSeqErrorDDC := -1;
@@ -3250,7 +3259,8 @@ begin
if not IsTx then FwdW := 0; if not IsTx then FwdW := 0;
Sync := TStatusUISync.Create(Self, FwdW, SWRV, SupplyV, SupplyA, Sync := TStatusUISync.Create(Self, FwdW, SWRV, SupplyV, SupplyA,
(Status.StatusBits and HPS_PLL_LOCKED) <> 0, (Status.StatusBits and HPS_PLL_LOCKED) <> 0,
(Status.StatusBits and HPS_PTT) <> 0); (Status.StatusBits and HPS_PTT) <> 0,
Status.ADCOverload);
try try
M := Sync.Execute; M := Sync.Execute;
TThread.Synchronize(nil, M); TThread.Synchronize(nil, M);
@@ -3259,7 +3269,8 @@ begin
end; end;
end; end;
procedure TMainForm.DoUpdateStatus(FwdW, SWRV, SupplyV, SupplyA: Double; PLLLock, HWPTT: Boolean); procedure TMainForm.DoUpdateStatus(FwdW, SWRV, SupplyV, SupplyA: Double; PLLLock, HWPTT: Boolean;
ADCOverload: Byte);
const const
// Thetis/piHPSDR PEP-style баллистика для FwdW и SWR: атака мгновенная // Thetis/piHPSDR PEP-style баллистика для FwdW и SWR: атака мгновенная
// (peak-hold), спад медленный — стрелка «висит» на пике и плавно опускается. // (peak-hold), спад медленный — стрелка «висит» на пике и плавно опускается.
@@ -3305,6 +3316,13 @@ begin
FLastSupplyA := -1.0; FLastSupplyA := -1.0;
FLastPLLLock := PLLLock; FLastPLLLock := PLLLock;
if (FSpecView <> nil) and (FSpecView.ADCOverloadVisible <> (ADCOverload <> 0)) then
begin
FSpecView.ADCOverloadVisible := ADCOverload <> 0;
if PbSpectrum <> nil then
PbSpectrum.Invalidate;
end;
// Hardware PTT (foot switch / mic PTT) — обнаружение фронта (нужно делать // Hardware PTT (foot switch / mic PTT) — обнаружение фронта (нужно делать
// на rate HP Status, а не таймера, чтобы не пропустить короткое нажатие). // на rate HP Status, а не таймера, чтобы не пропустить короткое нажатие).
if HWPTT <> FHWPTTActive then if HWPTT <> FHWPTTActive then
+1 -1
View File
@@ -441,7 +441,7 @@ begin
FTXSpanHz := 192000.0; FTXSpanHz := 192000.0;
FTXVfoIndex := 0; FTXVfoIndex := 0;
FTXOverlay := False; FTXOverlay := False;
FADCOverloadVisible := True; // test indicator; later driven by HP Status. FADCOverloadVisible := False;
FSpectrumBufCount := 1024; FSpectrumBufCount := 1024;
FWaterfallBufCount := 1024; FWaterfallBufCount := 1024;
FWfFrameInterval := 2; FWfFrameInterval := 2;