mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-26 04:47:35 +00:00
Add FM mode improvements: NFM/FM filters, CTCSS, squelch; ADC and web settings
FM modulation: - Replace 10 generic FM filter buttons with NFM (2.5kHz dev/11kHz BW) and FM (5.0kHz dev/16kHz BW); deviation applied to both RX and TX via WDSP - Add FM squelch panel (SQL toggle + slider 0..100, per-band save/restore) with WDSP SetRXAFMSQRun/SetRXAFMSQThreshold (threshold = level/200.0) - Add CTCSS panel with on/off toggle and custom flat-button tone picker popup (38 standard tones 67.0..250.3 Hz, default 67.0); tone selection and enable state saved per band via SetTXACTCSS* - FM panels (SQL, CTCSS) shown only in FM mode, layout via RelayoutBelowBands - PanelFilter height shrinks in FM mode so panels sit tight below filters - FlatButton: handle CMTextChanged to invalidate on Caption change ADC settings (Dither/Random): - Add DitherEnabled/RandomEnabled to TGlobalSettings (default true) - Pass as bitmask to ConfigureDDCs DDC Specific packet bytes 5/6 - Exposed in Settings → Advanced tab with live apply via ApplyADCSettings Web server settings: - Add TWebSettings (enabled, port, bind_addr, user, pass) stored globally - WebServer: configurable port/bind IP via ParseIPv4; Reconfigure method - Exposed in Settings → Advanced tab with live apply via ApplyWebSettings Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+10
-2
@@ -200,7 +200,8 @@ type
|
||||
|
||||
procedure SendGeneralPacket(const Pkt: TGeneralPacket);
|
||||
procedure SendDDCSpecific(const Pkt: TDDCSpecificPacket);
|
||||
procedure ConfigureDDCs(NumDDCs: Byte; SampleRate: Word; ADCSource: Byte = 0);
|
||||
procedure ConfigureDDCs(NumDDCs: Byte; SampleRate: Word; ADCSource: Byte = 0;
|
||||
DitherEnabled: Boolean = True; RandomEnabled: Boolean = True);
|
||||
procedure SendDUCSpecific(const Pkt: TDUCSpecificPacket);
|
||||
procedure SendHighPriority(const Pkt: THighPriorityPacket);
|
||||
procedure SetRunAndFreq(Run: Boolean; DDC0FreqHz, DUCFreqHz: Double;
|
||||
@@ -1266,7 +1267,8 @@ begin
|
||||
end;
|
||||
|
||||
procedure THPSDRNetwork.ConfigureDDCs(NumDDCs: Byte; SampleRate: Word;
|
||||
ADCSource: Byte);
|
||||
ADCSource: Byte;
|
||||
DitherEnabled: Boolean; RandomEnabled: Boolean);
|
||||
var
|
||||
Pkt: TDDCSpecificPacket;
|
||||
i, ddc: Integer;
|
||||
@@ -1280,6 +1282,12 @@ begin
|
||||
else
|
||||
Pkt.NumADCs := 1;
|
||||
|
||||
// Dither/Random — биты 0..NumADCs-1 (один бит на ADC)
|
||||
if DitherEnabled then
|
||||
Pkt.DitherADC := (1 shl Pkt.NumADCs) - 1;
|
||||
if RandomEnabled then
|
||||
Pkt.RandomADC := (1 shl Pkt.NumADCs) - 1;
|
||||
|
||||
// Для ANGELIA/ORION/ORION2/SATURN DDC начинается с индекса 2 (DDC0/1 — PureSignal)
|
||||
// Для HERMES/HL2 — с 0
|
||||
if FDevice.BoardType in [3, 4, 5, 10] then // ANGELIA=3, ORION=4, ORION2=5, SATURN=10
|
||||
|
||||
Reference in New Issue
Block a user