mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
add alert ADC overload
This commit is contained in:
+24
-6
@@ -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
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user