mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 19:45:09 +00:00
fix fft, waterfall
This commit is contained in:
+37
-8
@@ -124,6 +124,8 @@ type
|
||||
TWebCmdFreqB = procedure(Hz: Double) of object;
|
||||
TWebCmdActiveVfo = procedure(Idx: Integer) of object;
|
||||
TWebCmdCenter = procedure(Hz: Double) of object;
|
||||
TWebCmdMOX = procedure(On_: Boolean) of object;
|
||||
TWebCmdDrive = procedure(V: Integer) of object;
|
||||
|
||||
// ── Главный класс сервера ─────────────────────────────────────────────────
|
||||
TWebServer = class
|
||||
@@ -204,6 +206,10 @@ type
|
||||
FOnFreqB: TWebCmdFreqB;
|
||||
FOnActiveVfo: TWebCmdActiveVfo;
|
||||
FOnCenter: TWebCmdCenter;
|
||||
FOnMOX: TWebCmdMOX;
|
||||
FOnDrive: TWebCmdDrive;
|
||||
FTransmitting: Boolean;
|
||||
FDriveLevel: Integer;
|
||||
|
||||
FWebClientActive: Boolean;
|
||||
|
||||
@@ -246,7 +252,8 @@ type
|
||||
TrxRunning, Muted, Ctun: Boolean;
|
||||
NRMode, NBMode: Integer; SNB, ANF: Boolean;
|
||||
CenterHz: Double; FilterIdx: Integer;
|
||||
VfoB: Double; ActiveVfo: Integer);
|
||||
VfoB: Double; ActiveVfo: Integer;
|
||||
Transmitting: Boolean; DriveLevel: Integer);
|
||||
|
||||
property WebClientActive: Boolean read FWebClientActive;
|
||||
|
||||
@@ -270,6 +277,8 @@ type
|
||||
property OnFreqB: TWebCmdFreqB read FOnFreqB write FOnFreqB;
|
||||
property OnActiveVfo: TWebCmdActiveVfo read FOnActiveVfo write FOnActiveVfo;
|
||||
property OnCenter: TWebCmdCenter read FOnCenter write FOnCenter;
|
||||
property OnMOX: TWebCmdMOX read FOnMOX write FOnMOX;
|
||||
property OnDrive: TWebCmdDrive read FOnDrive write FOnDrive;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@@ -981,6 +990,20 @@ begin
|
||||
HzF := JsonGetFloat(Json, 'hz', FCenterHz);
|
||||
FStateLock.Enter; FCenterHz := HzF; FStateLock.Leave;
|
||||
if Assigned(FOnCenter) then FOnCenter(HzF);
|
||||
end
|
||||
else if Cmd = 'set_mox' then
|
||||
begin
|
||||
On_ := JsonGetBool(Json, 'on', FTransmitting);
|
||||
FStateLock.Enter; FTransmitting := On_; FStateLock.Leave;
|
||||
if Assigned(FOnMOX) then FOnMOX(On_);
|
||||
end
|
||||
else if Cmd = 'drive' then
|
||||
begin
|
||||
V := JsonGetInt(Json, 'v', FDriveLevel);
|
||||
if V < 0 then V := 0;
|
||||
if V > 100 then V := 100;
|
||||
FStateLock.Enter; FDriveLevel := V; FStateLock.Leave;
|
||||
if Assigned(FOnDrive) then FOnDrive(V);
|
||||
end;
|
||||
end;
|
||||
|
||||
@@ -1077,7 +1100,8 @@ begin
|
||||
'"span_hz":%.0f,"center_hz":%.0f,"volume":%d,' +
|
||||
'"wf_agc":%s,"wf_nf":%s,"band_idx":%d,"smeter_dbm":%.1f,' +
|
||||
'"running":%s,"mute":%s,"ctun":%s,' +
|
||||
'"nr_mode":%d,"nr":%s,"nb_mode":%d,"nb":%s,"snb":%s,"anf":%s,"connected":%s}',
|
||||
'"nr_mode":%d,"nr":%s,"nb_mode":%d,"nb":%s,"snb":%s,"anf":%s,"connected":%s,' +
|
||||
'"transmitting":%s,"drive":%d}',
|
||||
[FFreq, FVfoB, FActiveVfo,
|
||||
FMode, MODE_N[FMode mod 8],
|
||||
FFilterIdx, FFilterBW,
|
||||
@@ -1095,7 +1119,9 @@ begin
|
||||
BoolToStr(FNBMode <> 0, 'true', 'false'),
|
||||
BoolToStr(FSNB, 'true', 'false'),
|
||||
BoolToStr(FANF, 'true', 'false'),
|
||||
BoolToStr(FConnected, 'true', 'false')
|
||||
BoolToStr(FConnected, 'true', 'false'),
|
||||
BoolToStr(FTransmitting, 'true', 'false'),
|
||||
FDriveLevel
|
||||
]);
|
||||
finally
|
||||
FStateLock.Leave;
|
||||
@@ -1160,7 +1186,8 @@ procedure TWebServer.PushSpectrum(
|
||||
TrxRunning, Muted, Ctun: Boolean;
|
||||
NRMode, NBMode: Integer; SNB, ANF: Boolean;
|
||||
CenterHz: Double; FilterIdx: Integer;
|
||||
VfoB: Double; ActiveVfo: Integer);
|
||||
VfoB: Double; ActiveVfo: Integer;
|
||||
Transmitting: Boolean; DriveLevel: Integer);
|
||||
var N, i: Integer;
|
||||
begin
|
||||
if not FRunning then Exit;
|
||||
@@ -1188,10 +1215,12 @@ begin
|
||||
FNBMode := NBMode;
|
||||
FSNB := SNB;
|
||||
FANF := ANF;
|
||||
FCenterHz := CenterHz;
|
||||
FFilterIdx := FilterIdx;
|
||||
FVfoB := VfoB;
|
||||
FActiveVfo := ActiveVfo;
|
||||
FCenterHz := CenterHz;
|
||||
FFilterIdx := FilterIdx;
|
||||
FVfoB := VfoB;
|
||||
FActiveVfo := ActiveVfo;
|
||||
FTransmitting := Transmitting;
|
||||
FDriveLevel := DriveLevel;
|
||||
finally
|
||||
FStateLock.Leave;
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user