mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
fix vfo on web
This commit is contained in:
+36
-9
@@ -119,8 +119,10 @@ type
|
||||
TWebCmdCtun = procedure(On_: Boolean) of object;
|
||||
TWebCmdNRMode = procedure(Mode: Integer) of object;
|
||||
TWebCmdNBMode = procedure(Mode: Integer) of object;
|
||||
TWebCmdSNB = procedure(On_: Boolean) of object;
|
||||
TWebCmdANF = procedure(On_: Boolean) of object;
|
||||
TWebCmdSNB = procedure(On_: Boolean) of object;
|
||||
TWebCmdANF = procedure(On_: Boolean) of object;
|
||||
TWebCmdFreqB = procedure(Hz: Double) of object;
|
||||
TWebCmdActiveVfo = procedure(Idx: Integer) of object;
|
||||
|
||||
// ── Главный класс сервера ─────────────────────────────────────────────────
|
||||
TWebServer = class
|
||||
@@ -176,6 +178,8 @@ type
|
||||
FANF: Boolean;
|
||||
FCenterHz: Double;
|
||||
FFilterIdx: Integer;
|
||||
FVfoB: Double;
|
||||
FActiveVfo: Integer; // 0=A, 1=B
|
||||
FStateLock: TCriticalSection;
|
||||
|
||||
// ── Callbacks ──
|
||||
@@ -196,6 +200,8 @@ type
|
||||
FOnNB: TWebCmdNBMode;
|
||||
FOnSNB: TWebCmdSNB;
|
||||
FOnANF: TWebCmdANF;
|
||||
FOnFreqB: TWebCmdFreqB;
|
||||
FOnActiveVfo: TWebCmdActiveVfo;
|
||||
|
||||
FWebClientActive: Boolean;
|
||||
|
||||
@@ -237,7 +243,8 @@ type
|
||||
TrxConnected: Boolean;
|
||||
TrxRunning, Muted, Ctun: Boolean;
|
||||
NRMode, NBMode: Integer; SNB, ANF: Boolean;
|
||||
CenterHz: Double; FilterIdx: Integer);
|
||||
CenterHz: Double; FilterIdx: Integer;
|
||||
VfoB: Double; ActiveVfo: Integer);
|
||||
|
||||
property WebClientActive: Boolean read FWebClientActive;
|
||||
|
||||
@@ -256,8 +263,10 @@ type
|
||||
property OnCtun: TWebCmdCtun read FOnCtun write FOnCtun;
|
||||
property OnNR: TWebCmdNRMode read FOnNR write FOnNR;
|
||||
property OnNB: TWebCmdNBMode read FOnNB write FOnNB;
|
||||
property OnSNB: TWebCmdSNB read FOnSNB write FOnSNB;
|
||||
property OnANF: TWebCmdANF read FOnANF write FOnANF;
|
||||
property OnSNB: TWebCmdSNB read FOnSNB write FOnSNB;
|
||||
property OnANF: TWebCmdANF read FOnANF write FOnANF;
|
||||
property OnFreqB: TWebCmdFreqB read FOnFreqB write FOnFreqB;
|
||||
property OnActiveVfo: TWebCmdActiveVfo read FOnActiveVfo write FOnActiveVfo;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@@ -949,6 +958,20 @@ begin
|
||||
On_ := JsonGetBool(Json, 'on', FANF);
|
||||
FStateLock.Enter; FANF := On_; FStateLock.Leave;
|
||||
if Assigned(FOnANF) then FOnANF(On_);
|
||||
end
|
||||
else if Cmd = 'freq_b' then
|
||||
begin
|
||||
HzF := JsonGetFloat(Json, 'hz', FVfoB);
|
||||
FStateLock.Enter; FVfoB := HzF; FStateLock.Leave;
|
||||
if Assigned(FOnFreqB) then FOnFreqB(HzF);
|
||||
end
|
||||
else if Cmd = 'set_active_vfo' then
|
||||
begin
|
||||
ModeValue := JsonGetInt(Json, 'idx', FActiveVfo);
|
||||
if ModeValue < 0 then ModeValue := 0;
|
||||
if ModeValue > 1 then ModeValue := 1;
|
||||
FStateLock.Enter; FActiveVfo := ModeValue; FStateLock.Leave;
|
||||
if Assigned(FOnActiveVfo) then FOnActiveVfo(ModeValue);
|
||||
end;
|
||||
end;
|
||||
|
||||
@@ -1038,14 +1061,16 @@ begin
|
||||
FStateLock.Enter;
|
||||
try
|
||||
Result := Format(
|
||||
'{"vfo_a_hz":%.0f,"mode":%d,"mode_name":"%s",' +
|
||||
'{"vfo_a_hz":%.0f,"vfo_b_hz":%.0f,"active_vfo":%d,' +
|
||||
'"mode":%d,"mode_name":"%s",' +
|
||||
'"filter":%d,"filter_bw":%d,' +
|
||||
'"agc_mode":%d,"agc_top":%d,' +
|
||||
'"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}',
|
||||
[FFreq, FMode, MODE_N[FMode mod 8],
|
||||
[FFreq, FVfoB, FActiveVfo,
|
||||
FMode, MODE_N[FMode mod 8],
|
||||
FFilterIdx, FFilterBW,
|
||||
FAGCMode, FAGCTop,
|
||||
FSpanHz, FCenterHz, FVolume,
|
||||
@@ -1125,7 +1150,8 @@ procedure TWebServer.PushSpectrum(
|
||||
TrxConnected: Boolean;
|
||||
TrxRunning, Muted, Ctun: Boolean;
|
||||
NRMode, NBMode: Integer; SNB, ANF: Boolean;
|
||||
CenterHz: Double; FilterIdx: Integer);
|
||||
CenterHz: Double; FilterIdx: Integer;
|
||||
VfoB: Double; ActiveVfo: Integer);
|
||||
var N, i: Integer;
|
||||
begin
|
||||
if not FRunning then Exit;
|
||||
@@ -1155,11 +1181,12 @@ begin
|
||||
FANF := ANF;
|
||||
FCenterHz := CenterHz;
|
||||
FFilterIdx := FilterIdx;
|
||||
FVfoB := VfoB;
|
||||
FActiveVfo := ActiveVfo;
|
||||
finally
|
||||
FStateLock.Leave;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ ═══════════════════════════════════════════════════════════════════════════
|
||||
Stub-методы (реализация встроена в HandleClient)
|
||||
═══════════════════════════════════════════════════════════════════════════ }
|
||||
|
||||
Reference in New Issue
Block a user