From 82f0e4f771a8a3934419e4d2453dab110877d7e1 Mon Sep 17 00:00:00 2001 From: Uladzimir Karpenka Date: Mon, 17 Aug 2026 16:22:49 +0300 Subject: [PATCH] =?UTF-8?q?feat(tci):=20TCI=202.0=20=E2=80=94=20EWSDR=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BA=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=20(?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=B8=20=D1=83?= =?UTF-8?q?=D0=B2=D0=B5=D0=B4=D0=BE=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Протокол Expert Electronics поверх WebSocket, порт 40001. EWSDR слушает, клиенты — логгеры, скиммеры, цифровые программы. - TCIProtocol.pas — чистый слой протокола: разбор/сборка `имя:арг;`, экранирование `^ ~ *`, словарь видов связи, пересчёт громкости в дБ. - TCIServer.pas — WS-сервер поверх WebUtils/WsClient: accept-поток, поток на клиента, HTTP-Upgrade, фреймы, рассылка, тик 20 мс. - TCIAdapter.pas — мост к TRadioController по схеме CAT: геттеры читают поля напрямую, сеттеры через Invoke, уведомления через AddStateListener. Маппинг: приёмник TCI = панадаптер, канал A/B = VFO A/B (пан 0) либо первый/второй слайс (паны 1..). Попутно: TRadioController.RemoveStateListener (адаптер умирает раньше контроллера) и TDXSpotStore.RemoveCall (spot_delete). Настройки — секция "tci" в settings.json (умолчание: выключено, 127.0.0.1, так как авторизации в протоколе нет) и вкладка Advanced → TCI Server. Бинарные потоки (IQ/аудио) — этап 2. Статус, таблица команд и список осознанных эхо-заглушек — в doc/TCI.md. Co-Authored-By: Claude Opus 5 --- DXSpotStore.pas | 24 + MainForm.pas | 45 + RadioController.pas | 18 + Settings.pas | 41 + SettingsForm.pas | 76 ++ TCIAdapter.pas | 1716 +++++++++++++++++++++++++++++++++++++++ TCIProtocol.pas | 379 +++++++++ TCIServer.pas | 688 ++++++++++++++++ doc/TCI Protocol_RU.pdf | Bin 0 -> 482440 bytes doc/TCI.md | 221 +++++ 10 files changed, 3208 insertions(+) create mode 100644 TCIAdapter.pas create mode 100644 TCIProtocol.pas create mode 100644 TCIServer.pas create mode 100644 doc/TCI Protocol_RU.pdf create mode 100644 doc/TCI.md diff --git a/DXSpotStore.pas b/DXSpotStore.pas index 18577ca..90c4fa5 100644 --- a/DXSpotStore.pas +++ b/DXSpotStore.pas @@ -73,6 +73,8 @@ type // Добавить/обновить спот (вызывается из потока кластера). procedure Add(const S: TDXSpot); + // Убрать все споты позывного (SPOT_DELETE в TCI; регистр не важен). + procedure RemoveCall(const Call: string); procedure Clear; // Выбросить просроченное прямо сейчас. Нужен тому, кто следит за временем // снаружи: сам стор чистится только на Add и снимках, а когда споты никто @@ -364,6 +366,28 @@ begin end; end; +procedure TDXSpotStore.RemoveCall(const Call: string); +var i, j: Integer; Up: string; +begin + Up := UpperCase(Trim(Call)); + if Up = '' then Exit; + FLock.Enter; + try + i := 0; + while i < FCount do + if UpperCase(FSpots[i].Call) = Up then + begin + for j := i to FCount - 2 do FSpots[j] := FSpots[j + 1]; + Dec(FCount); + Inc(FVersion); + end + else + Inc(i); + finally + FLock.Leave; + end; +end; + function CompareSpotFreq(const A, B: TDXSpot): Integer; begin if A.FreqHz < B.FreqHz then Result := -1 diff --git a/MainForm.pas b/MainForm.pas index 6a2dc38..4876bad 100644 --- a/MainForm.pas +++ b/MainForm.pas @@ -35,6 +35,7 @@ uses Settings, WebServer, WebAdapter, CATAdapter, + TCIAdapter, SpectrumView, SpectrumViewOpengl, PanZoomBar, PanafallPanel, PanDisplayPopup, PureSignalPopup, FlatPopupMenu, WidebandView, @@ -246,6 +247,8 @@ type FWebSpecPixels: Integer; // потолок точек кадра спектра/водопада для web // --- CAT --- FCATAdapter: TCATAdapter; // адаптер CAT поверх контроллера (движок+транспорты+контекст) + FTCIAdapter: TTCIAdapter; // адаптер TCI (WebSocket-сервер Expert Electronics) + FTCICfg: TTCISettings; // текущие настройки TCI (UI/persist) FCATLastGlobal: TGlobalSettings; // текущие CAT-настройки (UI/persist; ApplySettings → адаптер) // Виджеты построены (конец FormCreate). До этого рендер состояния запрещён: // адаптеры (CAT/web), создаваемые по ходу FormCreate, могут дёрнуть @@ -835,6 +838,12 @@ type procedure ApplyADCSettings(Dither, Random: Boolean); procedure ApplyWebSettings(Enabled: Boolean; Port: Integer; const BindAddr, User, Pass: string; SpecPixels: Integer); + procedure ApplyTCISettings(Enabled: Boolean; Port: Integer; + const BindAddr: string); + // Фокус главного окна → APP_FOCUS клиентам TCI (логгеры так решают, кому + // отдавать клавиатуру). + procedure TCIFormActivate(Sender: TObject); + procedure TCIFormDeactivate(Sender: TObject); procedure ApplyGridParams(RefLevel, Range, GridStep: Double); // Пушит активные grid-параметры (RX или TX в зависимости от FTransmitting) // в FSpecView и сбрасывает кэш сетки. Вызывается при смене RX↔TX и при @@ -1447,6 +1456,7 @@ begin FreeAndNil(FWebAdapter); // адаптер не владеет сервером — освобождаем после Stop FWebServer.Free; FreeAndNil(FCATAdapter); // его Destroy останавливает+освобождает CAT движок/транспорты + FreeAndNil(FTCIAdapter); // Destroy останавливает TCI-сервер и его потоки // Ядро освобождаем последним — его Destroy закрывает и освобождает движки // (FreeEngines) и FSettings. FreeAndNil(FController); @@ -2705,6 +2715,14 @@ begin // DX-кластер: база спотов + сетевой поток + оверлей подписей. InitDXCluster; + // TCI-сервер — равноправный фронтенд рядом с CAT и web. Создаём после + // InitDXCluster: споты от TCI-клиентов кладутся в тот же стор. + FController.FSettings.LoadTCISettings(FTCICfg); + FTCIAdapter := TTCIAdapter.Create(FController, FDXStore); + FTCIAdapter.ApplySettings(FTCICfg); + OnActivate := TCIFormActivate; + OnDeactivate := TCIFormDeactivate; + // S-метр — внутри PanelToolbar, справа PanelSMeterRight := TPanel.Create(Self); PanelSMeterRight.Parent := PanelToolbar; @@ -5633,6 +5651,9 @@ begin FDXSpotOverlay.SpotAtPixel(X, Y, DXSpot) then begin OnDXTuneSpot(DXSpot.FreqHz, DXSpot.Mode); + // Клик по споту — уведомление TCI-клиентам (логгер открывает QSO-карточку). + if FTCIAdapter <> nil then + FTCIAdapter.NotifySpotClicked(DXSpot.Call, DXSpot.FreqHz, 0, FController.FActiveVfo); Exit; end; @@ -6548,6 +6569,26 @@ begin FController.FSettings.SaveWebSettings(W); end; +procedure TMainForm.ApplyTCISettings(Enabled: Boolean; Port: Integer; + const BindAddr: string); +begin + FTCICfg.Enabled := Enabled; + FTCICfg.Port := Port; + FTCICfg.BindAddr := BindAddr; + FController.FSettings.SaveTCISettings(FTCICfg); + if FTCIAdapter <> nil then FTCIAdapter.ApplySettings(FTCICfg); +end; + +procedure TMainForm.TCIFormActivate(Sender: TObject); +begin + if FTCIAdapter <> nil then FTCIAdapter.NotifyAppFocus(True); +end; + +procedure TMainForm.TCIFormDeactivate(Sender: TObject); +begin + if FTCIAdapter <> nil then FTCIAdapter.NotifyAppFocus(False); +end; + procedure TMainForm.OnSampleRateHidePanel; begin FPanelHidden := not FPanelHidden; @@ -7937,6 +7978,8 @@ begin P.DXOverlay.SpotAtPixel(X, Y, DXSpot) then begin DXTuneSpotOnPan(P, DXSpot.FreqHz, DXSpot.Mode); + if FTCIAdapter <> nil then + FTCIAdapter.NotifySpotClicked(DXSpot.Call, DXSpot.FreqHz, P.PanId, 0); Exit; end; W := TControl(Sender).Width; @@ -9634,6 +9677,7 @@ begin SF.OnWfAGCNFChange := ApplyWfAGCNF; SF.OnADCChange := ApplyADCSettings; SF.OnWebSettingsChange := ApplyWebSettings; + SF.OnTCISettingsChange := ApplyTCISettings; SF.OnDXClusterChange := OnDXClusterSettingsChange; end; SF := TSettingsForm(FSettingsForm); @@ -9689,6 +9733,7 @@ begin SF.LoadADCSettings(FController.FDitherEnabled, FController.FRandomEnabled); SF.LoadWebSettings(FWebEnabled, FWebPort, FWebBindAddr, FWebUser, FWebPass, FWebSpecPixels); + SF.LoadTCISettings(FTCICfg.Enabled, FTCICfg.Port, FTCICfg.BindAddr); SF.LoadDXClusterSettings(FDXCfg); SF.LoadFPS(FDisplayFPS); SF.LoadLightTheme(FLightTheme); diff --git a/RadioController.pas b/RadioController.pas index aa84084..2232bc1 100644 --- a/RadioController.pas +++ b/RadioController.pas @@ -1185,6 +1185,9 @@ type // Доп. наблюдатели состояния (помимо единственного OnStateChanged, который // занимает MainForm). Нужны CAT/Andromeda для push индикаторов панели. procedure AddStateListener(L: TRadioStateEvent); + // Снять наблюдателя. Обязателен для тех, кто умирает раньше контроллера + // (TCI-адаптер): иначе Changed() позовёт метод освобождённого объекта. + procedure RemoveStateListener(L: TRadioStateEvent); // Пост-тюн хук: вызывается в КОНЦЕ SetVfoA (после Changed(rfVfoA), т.е. вне // рендера) — сюда вешается канальная оркестрация (ChannelController.OnVfoTuned), // чтобы любой путь тюнинга (desktop/web/CAT/энкодер) был канал-aware headless. @@ -1447,6 +1450,21 @@ begin FStateListeners[High(FStateListeners)] := L; end; +procedure TRadioController.RemoveStateListener(L: TRadioStateEvent); +var i, j: Integer; +begin + if not Assigned(L) then Exit; + for i := 0 to High(FStateListeners) do + if (TMethod(FStateListeners[i]).Code = TMethod(L).Code) and + (TMethod(FStateListeners[i]).Data = TMethod(L).Data) then + begin + for j := i to High(FStateListeners) - 1 do + FStateListeners[j] := FStateListeners[j + 1]; + SetLength(FStateListeners, Length(FStateListeners) - 1); + Exit; + end; +end; + procedure TRadioController.PushNetworkState; // Полный HP-кадр в радио: RX/TX частоты (через трансвертор), drive, состояние // MOX. Вызывается командами, которые меняют центр/частоту/репитер-сдвиг. diff --git a/Settings.pas b/Settings.pas index bee3176..9709784 100644 --- a/Settings.pas +++ b/Settings.pas @@ -459,6 +459,15 @@ type SpecPixels: Integer; end; + // TCI-сервер (протокол Expert Electronics поверх WebSocket). Авторизации в + // протоколе нет, поэтому умолчание слушает только петлю: логгеры и цифровые + // программы обычно живут на том же ПК, а наружу порт открывается осознанно. + TTCISettings = record + Enabled: Boolean; + Port: Integer; // 1..65535, умолчание 40001 (как у ExpertSDR3) + BindAddr: string; // '127.0.0.1' или '0.0.0.0' + end; + // Transverter (XVTR) entry — один трансвертер. // Видимая частота VFO в [FreqBegin..FreqEnd] транслируется в IF-частоту, // которую слышит трансивер: f_IF = f_visible - LOOffset + LOError. @@ -779,6 +788,10 @@ type class procedure DefaultWeb(out W: TWebSettings); procedure LoadWebSettings(out W: TWebSettings); procedure SaveWebSettings(const W: TWebSettings); + // TCI-сервер — глобальные настройки (секция "tci" в корне JSON). + class procedure DefaultTCI(out T: TTCISettings); + procedure LoadTCISettings(out T: TTCISettings); + procedure SaveTCISettings(const T: TTCISettings); // Тема — глобальная настройка, не привязана к устройству procedure SaveTheme(ALightTheme: Boolean); function LoadTheme: Boolean; @@ -2981,6 +2994,34 @@ begin Save; end; +class procedure TSettingsManager.DefaultTCI(out T: TTCISettings); +begin + T.Enabled := False; // включается осознанно, как CAT-транспорты + T.Port := 40001; + T.BindAddr := '127.0.0.1'; +end; + +procedure TSettingsManager.LoadTCISettings(out T: TTCISettings); +var O: TJSONObject; +begin + DefaultTCI(T); + if FRoot.Find('tci') = nil then Exit; + O := EnsureObj(FRoot, 'tci'); + T.Enabled := JB(O, 'enabled', False); + T.Port := EnsureRange(JI(O, 'port', 40001), 1, 65535); + T.BindAddr := JS(O, 'bind_addr', '127.0.0.1'); +end; + +procedure TSettingsManager.SaveTCISettings(const T: TTCISettings); +var O: TJSONObject; +begin + O := EnsureObj(FRoot, 'tci'); + JW(O, 'enabled', T.Enabled); + JW(O, 'port', T.Port); + JWS(O, 'bind_addr', T.BindAddr); + Save; +end; + procedure TSettingsManager.SaveTheme(ALightTheme: Boolean); var O: TJSONObject; begin diff --git a/SettingsForm.pas b/SettingsForm.pas index a1870f6..5b4fed7 100644 --- a/SettingsForm.pas +++ b/SettingsForm.pas @@ -92,6 +92,8 @@ type TOnWebSettingsChange = procedure(Enabled: Boolean; Port: Integer; const BindAddr, User, Pass: string; SpecPixels: Integer) of object; + TOnTCISettingsChange = procedure(Enabled: Boolean; Port: Integer; + const BindAddr: string) of object; TOnCATChange = procedure( const SerEnabled: array of Boolean; const SerPort: array of string; @@ -470,6 +472,9 @@ type FEdWebUser: TFlatEdit; FEdWebPass: TFlatEdit; FCmbWebRes: TFlatComboBox; + FChkTCIEnabled: TFlatCheckBox; + FEdTCIPort: TFlatSpinEdit; + FEdTCIBind: TFlatEdit; // ---- Close button ---- FBtnClose: TFlatButton; @@ -483,6 +488,7 @@ type FOnVHFCalChange: TOnVHFCalChange; FOnADCChange: TOnADCChange; FOnWebSettingsChange: TOnWebSettingsChange; + FOnTCISettingsChange: TOnTCISettingsChange; FOnDXClusterChange: TOnDXClusterChange; FOnDisplayChange: TOnDisplayParamChange; FOnWaterfallChange: TOnWaterfallParamChange; @@ -535,6 +541,7 @@ type procedure BuildAdvancedTab; procedure OnADCChkChange(Sender: TObject); procedure OnWebAnyChange(Sender: TObject); + procedure OnTCIAnyChange(Sender: TObject); procedure CollectAlexFromUI; procedure FireAlexChange; procedure OnAlexAnyChange(Sender: TObject); @@ -720,6 +727,8 @@ type procedure LoadDXClusterSettings(const D: TDXClusterSettings); procedure LoadWebSettings(Enabled: Boolean; Port: Integer; const BindAddr, User, Pass: string; SpecPixels: Integer); + procedure LoadTCISettings(Enabled: Boolean; Port: Integer; + const BindAddr: string); property OnCATChange: TOnCATChange read FOnCATChange write FOnCATChange; property OnSliceCATChange: TOnSliceCATChange read FOnSliceCATChange write FOnSliceCATChange; @@ -756,6 +765,7 @@ type property OnWfAGCNFChange: TOnWfAGCNFChange read FOnWfAGCNFChange write FOnWfAGCNFChange; property OnADCChange: TOnADCChange read FOnADCChange write FOnADCChange; property OnWebSettingsChange: TOnWebSettingsChange read FOnWebSettingsChange write FOnWebSettingsChange; + property OnTCISettingsChange: TOnTCISettingsChange read FOnTCISettingsChange write FOnTCISettingsChange; property OnDXClusterChange: TOnDXClusterChange read FOnDXClusterChange write FOnDXClusterChange; end; @@ -3441,6 +3451,52 @@ begin Lbl := MakeLbl(Grp, '1024 px ~160 KB/s, 4096 px ~650 KB/s per client', GRP_PAD + LBL_W + 12, Y + ROW_H - 8, 320); Lbl.Font.Size := 8; + + // ── TCI Server ──────────────────────────────────────────────────────────── + // Протокол Expert Electronics поверх WebSocket: логгеры, скиммеры, цифра. + Grp := MakeGroupPanel(FPageAdvanced, 'TCI Server', MARGIN, 564, SETTINGS_CARD_W, 190); + + Y := R1; + Chk := TFlatCheckBox.Create(Self); + Chk.Parent := Grp; + Chk.Caption := 'Enabled'; + Chk.SetBounds(DpiScale(GRP_PAD), DpiScale(Y), DpiScale(260), DpiScale(22)); + Chk.Font.Size := 9; + Chk.Font.Color := CLR_TEXT; + Chk.Checked := False; + Chk.OnChange := OnTCIAnyChange; + FChkTCIEnabled := Chk; + + Y := Y + ROW_H; + MakeLbl(Grp, 'Port:', GRP_PAD, Y + 4, LBL_W); + Spin := TFlatSpinEdit.Create(Self); + Spin.Parent := Grp; + Spin.SetBounds(DpiScale(GRP_PAD + LBL_W + 12), DpiScale(Y), DpiScale(90), DpiScale(BTN_H)); + Spin.Color := CLR_INPUT; + Spin.Font.Color := CLR_INPUT_TEXT; + Spin.Font.Size := 9; + Spin.MinValue := 1; + Spin.MaxValue := 65535; + Spin.Value := 40001; + Spin.OnChange := OnTCIAnyChange; + FEdTCIPort := Spin; + + Y := Y + ROW_H; + MakeLbl(Grp, 'Interface:', GRP_PAD, Y + 4, LBL_W); + Ed := TFlatEdit.Create(Self); + Ed.Parent := Grp; + Ed.SetBounds(DpiScale(GRP_PAD + LBL_W + 12), DpiScale(Y), DpiScale(ED_W), DpiScale(BTN_H)); + Ed.Color := CLR_INPUT; + Ed.Font.Color := CLR_INPUT_TEXT; + Ed.Font.Size := 9; + Ed.Text := '127.0.0.1'; + Ed.OnChange := OnTCIAnyChange; + FEdTCIBind := Ed; + + // Авторизации в протоколе нет: открытый наружу порт = полный доступ к трансиверу. + Lbl := MakeLbl(Grp, 'No authentication in TCI — keep 127.0.0.1 unless the network is trusted', + GRP_PAD, Y + ROW_H, 460); + Lbl.Font.Size := 8; end; procedure TSettingsForm.BuildDXClusterTab; @@ -3689,6 +3745,26 @@ begin Res); end; +procedure TSettingsForm.OnTCIAnyChange(Sender: TObject); +begin + if FLoading then Exit; + if not Assigned(FOnTCISettingsChange) then Exit; + FOnTCISettingsChange(FChkTCIEnabled.Checked, FEdTCIPort.Value, FEdTCIBind.Text); +end; + +procedure TSettingsForm.LoadTCISettings(Enabled: Boolean; Port: Integer; + const BindAddr: string); +begin + FLoading := True; + try + FChkTCIEnabled.Checked := Enabled; + FEdTCIPort.Value := EnsureRange(Port, 1, 65535); + FEdTCIBind.Text := BindAddr; + finally + FLoading := False; + end; +end; + procedure TSettingsForm.LoadADCSettings(Dither, Random: Boolean); begin FLoading := True; diff --git a/TCIAdapter.pas b/TCIAdapter.pas new file mode 100644 index 0000000..1575f32 --- /dev/null +++ b/TCIAdapter.pas @@ -0,0 +1,1716 @@ +unit TCIAdapter; + +{ + TCIAdapter.pas — мост TCI ↔ TRadioController. + + Роль та же, что у TCATAdapter в CAT-подсистеме: равноправный клиент + контроллера, никаких обращений к MainForm. + + TCI-клиенты ──WS──► TTCIServer ──► TTCIAdapter ──► TRadioController + логгер/скиммер транспорт команды/ ядро + уведомления + + Потоки: + • Геттеры читают поля контроллера напрямую из потока клиента (атомарное + чтение, как в CAT). + • Сеттеры пишут параметр в scratch-поля под FLock и зовут + FController.Invoke(SyncXxx) — исполнение в потоке контроллера. + • Уведомления наружу идут из OnState (поток контроллера) рассылкой всем + клиентам: сервер TCI обязан синхронизировать всех подключённых (§3.5). + + Маппинг модели (выбран при проектировании, см. doc/TCI.md): + приёмник TCI = панадаптер ewsdr (0 = главный тракт, 1.. = доп. DDC-паны) + канал A/B = VFO A/B у приёмника 0; у панов 1.. — первый и второй слайс + + Чего в ewsdr нет (RIT/XIT, BIN/ANC/APF/DSE/NF, параметры NB, смещения + DIGL/DIGU): значения принимаются, хранятся здесь и отражаются клиентам — + так синхронизация между несколькими клиентами остаётся честной, а поведение + радио не выдумывается. Всё такое помечено «эхо» и перечислено в doc/TCI.md. + + Потоки IQ/аудио (§3.4) — следующий этап: команды управления потоками + принимаются и подтверждаются, но сами потоки не идут. +} + +{$IFDEF FPC} + {$MODE Delphi} + {$LONGSTRINGS ON} +{$ENDIF} + +interface + +uses + Classes, SysUtils, Math, SyncObjs, + RadioController, RadioBackend, WDSPEngine, Settings, + DXSpotStore, TCIProtocol, TCIServer; + +const + TCI_MAX_RX = MAX_PANS; // приёмник TCI = панадаптер + +type + { Параметры TCI, которым в ewsdr нет соответствия: храним и отражаем. } + TTCIRxEcho = record + RitOn, XitOn: Boolean; + RitHz, XitHz: Integer; + BinOn, ANCOn: Boolean; + APFOn, DSEOn: Boolean; + NFOn: Boolean; + NBThreshold: Integer; // 1..100 + NBDuration: Integer; // 1..300 + ChannelBOn: Boolean; + BalanceDb: array[0..TCI_CHANNELS-1] of Integer; + end; + + TTCIAdapter = class + private + FController: TRadioController; + FSpots: TDXSpotStore; // может быть nil (демон/тесты) + FServer: TTCIServer; + FLock: TCriticalSection; + + // ── Эхо-состояние ── + FEcho: array[0..TCI_MAX_RX-1] of TTCIRxEcho; + FDiglOffset: Integer; + FDiguOffset: Integer; + FIQRate: Integer; + FAudioRate: Integer; + FAudioSamples: Integer; + FAudioChannels: Integer; + FAudioSampleType: string; + FTxBuffering: Integer; + FCwTerminal: Boolean; + + // ── Кэш для подавления повторов в уведомлениях ── + FLastTxFreq: Double; + FLastTxEnable: Boolean; + + // ── scratch для маршалинга в поток контроллера ── + FsFreq: Double; + FsInt: Integer; + FsInt2: Integer; + FsInt3: Integer; + FsBool: Boolean; + FsStr: string; + + // ── Sync-методы (поток контроллера) ── + procedure SyncSetVfo; + procedure SyncSetCenter; + procedure SyncSetMode; + procedure SyncSetFilter; + procedure SyncSetTRX; + procedure SyncSetTune; + procedure SyncSetDrive; + procedure SyncSetTuneDrive; + procedure SyncSetSplit; + procedure SyncSetVolume; + procedure SyncSetMute; + procedure SyncSetRxMute; + procedure SyncSetRxVolume; + procedure SyncSetMonVolume; + procedure SyncSetMonEnable; + procedure SyncSetAGCMode; + procedure SyncSetAGCTop; + procedure SyncSetNR; + procedure SyncSetNB; + procedure SyncSetANF; + procedure SyncSetLock; + procedure SyncSetSql; + procedure SyncSetSqlLevel; + procedure SyncSetRun; + procedure SyncSetCWSpeed; + procedure SyncSetCWDelay; + procedure SyncCWSend; + procedure SyncCWStop; + + // ── Помощники модели ── + function RxCount: Integer; + function ValidRx(Rx: Integer): Boolean; + function SliceIdOf(Rx, Ch: Integer): Integer; + function ChanFreq(Rx, Ch: Integer): Double; + function ChanCount(Rx: Integer): Integer; + function RxCenterHz(Rx: Integer): Double; + function RxMode(Rx: Integer): Integer; + procedure RxFilter(Rx: Integer; out Lo, Hi: Integer); + function RxMuted(Rx: Integer): Boolean; + function RxVolumeDb(Rx: Integer): Double; + function RxAGCUi(Rx: Integer): Integer; + function RxSMeterDbm(Rx, Ch: Integer): Double; + function TxEnabled: Boolean; + + // ── Формирование строк состояния ── + function StrVfo(Rx, Ch: Integer): string; + function StrIf(Rx, Ch: Integer): string; + function StrDds(Rx: Integer): string; + function StrModulation(Rx: Integer): string; + function StrFilterBand(Rx: Integer): string; + function StrTrx: string; + function StrTune: string; + function StrDrive: string; + function StrVolume: string; + function StrMute: string; + function StrAGCMode(Rx: Integer): string; + function StrAGCGain(Rx: Integer): string; + function StrLock(Rx: Integer): string; + function StrSqlEnable(Rx: Integer): string; + function StrSqlLevel(Rx: Integer): string; + function StrTxEnable(Rx: Integer): string; + + procedure SendInit(Client: TTCIClient); + procedure SendState(Client: TTCIClient); + procedure Reply(Client: TTCIClient; const S: string); + + // ── События сервера/контроллера ── + procedure HandleCommand(Client: TTCIClient; const Cmd: string); + procedure DispatchCommand(Client: TTCIClient; const M: TTCIMessage); + procedure HandleConnect(Client: TTCIClient); + procedure HandleTick; + procedure PushSensors(Client: TTCIClient); + procedure OnState(Sender: TObject; Field: TRadioField); + + // ── Отдельные команды (чтобы HandleCommand не превратился в простыню) ── + procedure CmdFreq(Client: TTCIClient; const M: TTCIMessage; IsIF: Boolean); + procedure CmdCWMacros(const M: TTCIMessage; IsMsg: Boolean); + procedure CmdSpot(const M: TTCIMessage); + public + constructor Create(AController: TRadioController; ASpots: TDXSpotStore = nil); + destructor Destroy; override; + + { Настройки TCI: включение/порт/адрес. Зовётся при старте и из настроек. } + procedure ApplySettings(const T: TTCISettings); + + function Active: Boolean; + function ClientCount: Integer; + + { Уведомление о клике по споту на панораме (§4.4) — зовёт UI. } + procedure NotifySpotClicked(const Call: string; FreqHz: Double; + Rx: Integer = 0; Ch: Integer = 0); + { Статус фокуса главного окна (APP_FOCUS) — зовёт UI. } + procedure NotifyAppFocus(InFocus: Boolean); + + property Server: TTCIServer read FServer; + end; + +implementation + +{ ═══════════════════════════════════════════════════════════════════════════ + Жизненный цикл + ═══════════════════════════════════════════════════════════════════════════ } + +constructor TTCIAdapter.Create(AController: TRadioController; ASpots: TDXSpotStore); +var i, c: Integer; +begin + inherited Create; + FController := AController; + FSpots := ASpots; + FLock := TCriticalSection.Create; + + for i := 0 to TCI_MAX_RX - 1 do + begin + FillChar(FEcho[i], SizeOf(FEcho[i]), 0); + FEcho[i].NBThreshold := 50; + FEcho[i].NBDuration := 25; + for c := 0 to TCI_CHANNELS - 1 do FEcho[i].BalanceDb[c] := 0; + end; + FIQRate := 48000; + FAudioRate := 48000; + FAudioSamples := 2048; + FAudioChannels := 2; + FAudioSampleType := 'float32'; + FTxBuffering := 50; + FLastTxFreq := 0; + FLastTxEnable := True; + + FServer := TTCIServer.Create; + FServer.OnCommand := HandleCommand; + FServer.OnConnect := HandleConnect; + FServer.OnTick := HandleTick; + + // Многоадресная подписка: OnStateChanged занят MainForm. + FController.AddStateListener(OnState); +end; + +destructor TTCIAdapter.Destroy; +begin + // Сначала отписка: контроллер живёт дольше адаптера, и Changed() после + // нашей смерти позвал бы метод освобождённого объекта. + if FController <> nil then FController.RemoveStateListener(OnState); + if FServer <> nil then + begin + FServer.Stop; + FreeAndNil(FServer); + end; + FLock.Free; + inherited; +end; + +procedure TTCIAdapter.ApplySettings(const T: TTCISettings); +begin + FServer.Stop; + if not T.Enabled then Exit; + FServer.Configure(Word(EnsureRange(T.Port, 1, 65535)), T.BindAddr); + FServer.Start; +end; + +function TTCIAdapter.Active: Boolean; +begin + Result := (FServer <> nil) and FServer.Running; +end; + +function TTCIAdapter.ClientCount: Integer; +begin + if FServer = nil then Result := 0 else Result := FServer.ClientCount; +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Модель: приёмник = панадаптер, канал = VFO A/B (пан 0) или слайс (паны 1..) + ═══════════════════════════════════════════════════════════════════════════ } + +function TTCIAdapter.RxCount: Integer; +begin + Result := FController.BackendCaps.MaxPans; + if Result < 1 then Result := 1; + if Result > TCI_MAX_RX then Result := TCI_MAX_RX; +end; + +function TTCIAdapter.ValidRx(Rx: Integer): Boolean; +begin + Result := (Rx >= 0) and (Rx < RxCount); +end; + +function TTCIAdapter.SliceIdOf(Rx, Ch: Integer): Integer; +// Слайсы пана Rx по порядку в таблице: 0-й = канал A, 1-й = канал B. +var i, Seen: Integer; +begin + Result := 0; + if Rx <= 0 then Exit; + Seen := 0; + for i := 0 to MAX_SLICES - 1 do + if FController.FSlices[i].Active and (FController.FSlices[i].PanId = Rx) then + begin + if Seen = Ch then + begin + Result := FController.FSlices[i].Id; + Exit; + end; + Inc(Seen); + end; +end; + +function TTCIAdapter.ChanCount(Rx: Integer): Integer; +var i: Integer; +begin + if Rx = 0 then begin Result := 2; Exit; end; // VFO A/B всегда есть + Result := 0; + for i := 0 to MAX_SLICES - 1 do + if FController.FSlices[i].Active and (FController.FSlices[i].PanId = Rx) then + Inc(Result); + if Result > TCI_CHANNELS then Result := TCI_CHANNELS; +end; + +function TTCIAdapter.ChanFreq(Rx, Ch: Integer): Double; +var S: TCtrlSlice; Id: Integer; +begin + Result := 0; + if Rx = 0 then + begin + if Ch = 1 then Result := FController.FVfoB else Result := FController.FVfoA; + Exit; + end; + Id := SliceIdOf(Rx, Ch); + if (Id > 0) and FController.GetSlice(Id, S) then Result := S.TargetHz; +end; + +function TTCIAdapter.RxCenterHz(Rx: Integer): Double; +begin + if Rx = 0 then Result := FController.FCenterFreq + else Result := FController.PanDDCFreq(Rx); +end; + +function TTCIAdapter.RxMode(Rx: Integer): Integer; +var S: TCtrlSlice; Id: Integer; +begin + if Rx = 0 then begin Result := FController.FMode; Exit; end; + Result := FController.FMode; + Id := SliceIdOf(Rx, 0); + if (Id > 0) and FController.GetSlice(Id, S) then Result := S.Mode; +end; + +procedure TTCIAdapter.RxFilter(Rx: Integer; out Lo, Hi: Integer); +var S: TCtrlSlice; Id: Integer; +begin + Lo := FController.FilterLo; + Hi := FController.FilterHi; + if Rx = 0 then Exit; + Id := SliceIdOf(Rx, 0); + if (Id > 0) and FController.GetSlice(Id, S) then + begin + Lo := S.FilterLo; + Hi := S.FilterHi; + end; +end; + +function TTCIAdapter.RxMuted(Rx: Integer): Boolean; +var S: TCtrlSlice; Id: Integer; +begin + if Rx = 0 then begin Result := FController.FMuted; Exit; end; + Result := False; + Id := SliceIdOf(Rx, 0); + if (Id > 0) and FController.GetSlice(Id, S) then Result := S.Muted; +end; + +function TTCIAdapter.RxVolumeDb(Rx: Integer): Double; +var S: TCtrlSlice; Id: Integer; +begin + if Rx = 0 then begin Result := TCIVolumeToDb(FController.FVolume); Exit; end; + Result := 0; + Id := SliceIdOf(Rx, 0); + if (Id > 0) and FController.GetSlice(Id, S) then + Result := TCIVolumeToDb(Round(S.Volume * 100)); +end; + +function TTCIAdapter.RxAGCUi(Rx: Integer): Integer; +var S: TCtrlSlice; Id: Integer; +begin + if Rx = 0 then begin Result := FController.FAGCMode; Exit; end; + Result := FController.FAGCMode; + Id := SliceIdOf(Rx, 0); + if (Id > 0) and FController.GetSlice(Id, S) then + Result := TRadioController.AGCModeToUI(S.AGC); +end; + +function TTCIAdapter.RxSMeterDbm(Rx, Ch: Integer): Double; +var Id: Integer; +begin + if Rx = 0 then + begin + Result := FController.ReadSMeterDBm; + Exit; + end; + Result := -140; + Id := SliceIdOf(Rx, Ch); + if Id > 0 then Result := FController.SliceSMeter(Id); +end; + +function TTCIAdapter.TxEnabled: Boolean; +begin + Result := FController.BackendCaps.HasTX and (not FController.TXProhibited); +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Формирование строк состояния + ═══════════════════════════════════════════════════════════════════════════ } + +function TTCIAdapter.StrVfo(Rx, Ch: Integer): string; +begin + Result := TCIBuild('vfo', [TCIIntStr(Rx), TCIIntStr(Ch), + TCIIntStr(Round(ChanFreq(Rx, Ch)))]); +end; + +function TTCIAdapter.StrIf(Rx, Ch: Integer): string; +begin + Result := TCIBuild('if', [TCIIntStr(Rx), TCIIntStr(Ch), + TCIIntStr(Round(ChanFreq(Rx, Ch) - RxCenterHz(Rx)))]); +end; + +function TTCIAdapter.StrDds(Rx: Integer): string; +begin + Result := TCIBuild('dds', [TCIIntStr(Rx), TCIIntStr(Round(RxCenterHz(Rx)))]); +end; + +function TTCIAdapter.StrModulation(Rx: Integer): string; +begin + Result := TCIBuild('modulation', [TCIIntStr(Rx), TCIModeName(RxMode(Rx))]); +end; + +function TTCIAdapter.StrFilterBand(Rx: Integer): string; +var Lo, Hi: Integer; +begin + RxFilter(Rx, Lo, Hi); + Result := TCIBuild('rx_filter_band', [TCIIntStr(Rx), TCIIntStr(Lo), TCIIntStr(Hi)]); +end; + +function TTCIAdapter.StrTrx: string; +begin + Result := TCIBuild('trx', ['0', TCIBoolStr(FController.FTransmitting)]); +end; + +function TTCIAdapter.StrTune: string; +begin + Result := TCIBuild('tune', ['0', TCIBoolStr(FController.FTuning)]); +end; + +function TTCIAdapter.StrDrive: string; +begin + Result := TCIBuild('drive', ['0', TCIIntStr(FController.FDrivePercent)]); +end; + +function TTCIAdapter.StrVolume: string; +begin + Result := TCIBuild('volume', [TCIIntStr(Round(TCIVolumeToDb(FController.FVolume)))]); +end; + +function TTCIAdapter.StrMute: string; +begin + Result := TCIBuild('mute', [TCIBoolStr(FController.FMuted)]); +end; + +function TTCIAdapter.StrAGCMode(Rx: Integer): string; +var Ui: Integer; Name: string; +begin + Ui := RxAGCUi(Rx); + // UI: 0=Fast 1=Medium 2=Slow 3=Long 4=Off; TCI знает normal/fast/off. + if Ui = 4 then Name := 'off' + else if Ui = 0 then Name := 'fast' + else Name := 'normal'; + Result := TCIBuild('agc_mode', [TCIIntStr(Rx), Name]); +end; + +function TTCIAdapter.StrAGCGain(Rx: Integer): string; +begin + Result := TCIBuild('agc_gain', [TCIIntStr(Rx), TCIIntStr(FController.FAGCTop)]); +end; + +function TTCIAdapter.StrLock(Rx: Integer): string; +begin + Result := TCIBuild('lock', [TCIIntStr(Rx), TCIBoolStr(FController.FVfoLock)]); +end; + +function TTCIAdapter.StrSqlEnable(Rx: Integer): string; +begin + Result := TCIBuild('sql_enable', [TCIIntStr(Rx), TCIBoolStr(FController.FFMSQOn)]); +end; + +function TTCIAdapter.StrSqlLevel(Rx: Integer): string; +begin + Result := TCIBuild('sql_level', [TCIIntStr(Rx), + TCIIntStr(Round(TCILevelToSql(FController.FFMSQLevel)))]); +end; + +function TTCIAdapter.StrTxEnable(Rx: Integer): string; +begin + Result := TCIBuild('tx_enable', [TCIIntStr(Rx), TCIBoolStr(TxEnabled)]); +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Подключение клиента: инициализация + текущее состояние + ═══════════════════════════════════════════════════════════════════════════ } + +procedure TTCIAdapter.Reply(Client: TTCIClient; const S: string); +begin + if (Client <> nil) and (S <> '') then Client.Send(S); +end; + +procedure TTCIAdapter.SendInit(Client: TTCIClient); +var + Caps: TBackendCaps; + LoHz, HiHz: Double; + Half: Integer; + DevName: string; +begin + Caps := FController.BackendCaps; + + LoHz := Caps.MinFreqHz; + HiHz := Caps.MaxFreqHz; + if HiHz <= LoHz then begin LoHz := 10000; HiHz := 30000000; end; // не подключены + + Half := FController.FSampleRate div 2; + if Half <= 0 then Half := 48000; + + DevName := FController.BoardDisplayName; + if Trim(DevName) = '' then DevName := TCI_APP_NAME; + + Reply(Client, TCIBuild('protocol', [TCI_APP_NAME, TCI_VERSION])); + Reply(Client, TCIBuild('device', [DevName])); + Reply(Client, TCIBuild('receive_only', [TCIBoolStr(not Caps.HasTX)])); + Reply(Client, TCIBuild('trx_count', [TCIIntStr(RxCount)])); + Reply(Client, TCIBuild('channel_count', [TCIIntStr(TCI_CHANNELS)])); + Reply(Client, TCIBuild('vfo_limits', [TCIIntStr(Round(LoHz)), TCIIntStr(Round(HiHz))])); + Reply(Client, TCIBuild('if_limits', [TCIIntStr(-Half), TCIIntStr(Half)])); + Reply(Client, TCIBuild('modulations_list', [TCI_MODULATIONS])); +end; + +procedure TTCIAdapter.SendState(Client: TTCIClient); +var + Rx, Ch: Integer; +begin + for Rx := 0 to RxCount - 1 do + begin + Reply(Client, StrDds(Rx)); + for Ch := 0 to TCI_CHANNELS - 1 do + begin + Reply(Client, StrVfo(Rx, Ch)); + Reply(Client, StrIf(Rx, Ch)); + Reply(Client, TCIBuild('rx_volume', [TCIIntStr(Rx), TCIIntStr(Ch), + TCIIntStr(Round(RxVolumeDb(Rx)))])); + Reply(Client, TCIBuild('rx_balance', [TCIIntStr(Rx), TCIIntStr(Ch), + TCIIntStr(FEcho[Rx].BalanceDb[Ch])])); + end; + Reply(Client, TCIBuild('rx_channel_enable', + [TCIIntStr(Rx), '1', TCIBoolStr((Rx = 0) or (ChanCount(Rx) > 1))])); + Reply(Client, StrModulation(Rx)); + Reply(Client, StrFilterBand(Rx)); + Reply(Client, StrAGCMode(Rx)); + Reply(Client, StrAGCGain(Rx)); + Reply(Client, TCIBuild('rx_mute', [TCIIntStr(Rx), TCIBoolStr(RxMuted(Rx))])); + Reply(Client, TCIBuild('rx_nb_enable', [TCIIntStr(Rx), TCIBoolStr(FController.FNBMode > 0)])); + Reply(Client, TCIBuild('rx_nb_param', [TCIIntStr(Rx), + TCIIntStr(FEcho[Rx].NBThreshold), TCIIntStr(FEcho[Rx].NBDuration)])); + Reply(Client, TCIBuild('rx_nr_enable', [TCIIntStr(Rx), TCIBoolStr(FController.FNRMode > 0)])); + Reply(Client, TCIBuild('rx_anf_enable', [TCIIntStr(Rx), TCIBoolStr(FController.FANF)])); + Reply(Client, TCIBuild('rx_bin_enable', [TCIIntStr(Rx), TCIBoolStr(FEcho[Rx].BinOn)])); + Reply(Client, TCIBuild('rx_anc_enable', [TCIIntStr(Rx), TCIBoolStr(FEcho[Rx].ANCOn)])); + Reply(Client, TCIBuild('rx_apf_enable', [TCIIntStr(Rx), TCIBoolStr(FEcho[Rx].APFOn)])); + Reply(Client, TCIBuild('rx_dse_enable', [TCIIntStr(Rx), TCIBoolStr(FEcho[Rx].DSEOn)])); + Reply(Client, TCIBuild('rx_nf_enable', [TCIIntStr(Rx), TCIBoolStr(FEcho[Rx].NFOn)])); + Reply(Client, StrLock(Rx)); + Reply(Client, StrSqlEnable(Rx)); + Reply(Client, StrSqlLevel(Rx)); + Reply(Client, TCIBuild('rit_enable', [TCIIntStr(Rx), TCIBoolStr(FEcho[Rx].RitOn)])); + Reply(Client, TCIBuild('rit_offset', [TCIIntStr(Rx), TCIIntStr(FEcho[Rx].RitHz)])); + Reply(Client, TCIBuild('xit_enable', [TCIIntStr(Rx), TCIBoolStr(FEcho[Rx].XitOn)])); + Reply(Client, TCIBuild('xit_offset', [TCIIntStr(Rx), TCIIntStr(FEcho[Rx].XitHz)])); + Reply(Client, StrTxEnable(Rx)); + end; + + Reply(Client, TCIBuild('split_enable', ['0', TCIBoolStr(FController.FSplitTxB)])); + Reply(Client, StrTrx); + Reply(Client, StrTune); + Reply(Client, StrDrive); + Reply(Client, TCIBuild('tune_drive', ['0', TCIIntStr(FController.FTXSettings.TUNLevel)])); + Reply(Client, StrVolume); + Reply(Client, StrMute); + Reply(Client, TCIBuild('mon_volume', [TCIIntStr(Round(TCIVolumeToDb(FController.FTxMonVolume)))])); + Reply(Client, TCIBuild('mon_enable', [TCIBoolStr(not FController.FRxMuteOnTx)])); + Reply(Client, TCIBuild('cw_macros_speed', [TCIIntStr(FController.FCWSettings.Speed)])); + Reply(Client, TCIBuild('cw_macros_delay', [TCIIntStr(FController.FCWSettings.RFDelayMS)])); + Reply(Client, TCIBuild('digl_offset', [TCIIntStr(FDiglOffset)])); + Reply(Client, TCIBuild('digu_offset', [TCIIntStr(FDiguOffset)])); + Reply(Client, TCIBuild('iq_samplerate', [TCIIntStr(FIQRate)])); + Reply(Client, TCIBuild('audio_samplerate', [TCIIntStr(FAudioRate)])); + if FController.FRunning then Reply(Client, TCIBuild('start')) + else Reply(Client, TCIBuild('stop')); +end; + +procedure TTCIAdapter.HandleConnect(Client: TTCIClient); +begin + // Не отдать READY молча нельзя: клиент, ждущий его, повиснет навсегда, — + // поэтому дамп состояния под защитой, а READY уходит в любом случае. + try + SendInit(Client); + SendState(Client); + except + on E: Exception do + Reply(Client, TCIBuild('tci_error', ['init', TCIEscape(E.Message)])); + end; + Reply(Client, TCIBuild('ready')); + Client.Ready := True; +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Sync-методы: исполняются в потоке контроллера (через Invoke) + ═══════════════════════════════════════════════════════════════════════════ } + +procedure TTCIAdapter.SyncSetVfo; +var Id: Integer; +begin + if FsInt = 0 then + begin + if FsInt2 = 1 then FController.SetVfoB(FsFreq) else FController.SetVfoA(FsFreq); + Exit; + end; + Id := SliceIdOf(FsInt, FsInt2); + if Id > 0 then FController.SetSliceTarget(Id, FsFreq); +end; + +procedure TTCIAdapter.SyncSetCenter; +begin + if FsInt = 0 then FController.SetCenter(FsFreq) + else FController.SetPanDDCFreq(FsInt, FsFreq); +end; + +procedure TTCIAdapter.SyncSetMode; +var Id: Integer; +begin + if FsInt = 0 then begin FController.SetMode(FsInt2); Exit; end; + Id := SliceIdOf(FsInt, 0); + if Id > 0 then FController.SetSliceMode(Id, FsInt2); +end; + +procedure TTCIAdapter.SyncSetFilter; +var Id: Integer; +begin + if FsInt = 0 then begin FController.SetFilterEdges(FsInt2, FsInt3); Exit; end; + Id := SliceIdOf(FsInt, 0); + if Id > 0 then FController.SetSliceFilter(Id, FsInt2, FsInt3); +end; + +procedure TTCIAdapter.SyncSetTRX; +begin + FController.SetMOX(FsBool); +end; + +procedure TTCIAdapter.SyncSetTune; +begin + FController.SetTune(FsBool); +end; + +procedure TTCIAdapter.SyncSetDrive; +begin + FController.SetDrive(FsInt); +end; + +procedure TTCIAdapter.SyncSetTuneDrive; +var T: TTXSettings; +begin + T := FController.FTXSettings; + T.TUNLevel := FsInt; + FController.SetTXSettings(T); +end; + +procedure TTCIAdapter.SyncSetSplit; +begin + FController.SetSplit(FsBool); +end; + +procedure TTCIAdapter.SyncSetVolume; +begin + FController.SetVolume(FsInt); +end; + +procedure TTCIAdapter.SyncSetMute; +begin + FController.SetMute(FsBool); +end; + +procedure TTCIAdapter.SyncSetRxMute; +var Id: Integer; +begin + if FsInt = 0 then begin FController.SetMute(FsBool); Exit; end; + Id := SliceIdOf(FsInt, 0); + if Id > 0 then FController.SetSliceMute(Id, FsBool); +end; + +procedure TTCIAdapter.SyncSetRxVolume; +var Id: Integer; +begin + if FsInt = 0 then begin FController.SetVolume(FsInt2); Exit; end; + Id := SliceIdOf(FsInt, 0); + if Id > 0 then FController.SetSliceVolume(Id, FsInt2 / 100.0); +end; + +procedure TTCIAdapter.SyncSetMonVolume; +begin + FController.SetTXMonVolume(FsInt); +end; + +procedure TTCIAdapter.SyncSetMonEnable; +begin + // Самоконтроль на передаче = RX-аудио НЕ глушится (кнопка RX MUTE). + FController.SetRxMuteOnTx(not FsBool); +end; + +procedure TTCIAdapter.SyncSetAGCMode; +var Id: Integer; +begin + if FsInt = 0 then begin FController.SetAGCMode(FsInt2); Exit; end; + Id := SliceIdOf(FsInt, 0); + if Id > 0 then + FController.SetSliceAGCMode(Id, TRadioController.AGCModeFromUI(FsInt2)); +end; + +procedure TTCIAdapter.SyncSetAGCTop; +begin + FController.SetAGCTop(FsInt); +end; + +procedure TTCIAdapter.SyncSetNR; +var Id: Integer; +begin + if FsInt = 0 then + begin + if FsBool then FController.SetNR(1) else FController.SetNR(0); + Exit; + end; + Id := SliceIdOf(FsInt, 0); + if Id > 0 then + FController.SetSliceDSP(Id, Ord(FsBool), FController.FNBMode, + FController.FSNB, FController.FANF); +end; + +procedure TTCIAdapter.SyncSetNB; +var Id: Integer; +begin + if FsInt = 0 then + begin + if FsBool then FController.SetNB(1) else FController.SetNB(0); + Exit; + end; + Id := SliceIdOf(FsInt, 0); + if Id > 0 then + FController.SetSliceDSP(Id, FController.FNRMode, Ord(FsBool), + FController.FSNB, FController.FANF); +end; + +procedure TTCIAdapter.SyncSetANF; +var Id: Integer; +begin + if FsInt = 0 then begin FController.SetANF(FsBool); Exit; end; + Id := SliceIdOf(FsInt, 0); + if Id > 0 then + FController.SetSliceDSP(Id, FController.FNRMode, FController.FNBMode, + FController.FSNB, FsBool); +end; + +procedure TTCIAdapter.SyncSetLock; +begin + FController.SetVfoLock(FsBool); +end; + +procedure TTCIAdapter.SyncSetSql; +var Id: Integer; +begin + if FsInt = 0 then begin FController.SetFMSquelch(FsBool); Exit; end; + Id := SliceIdOf(FsInt, 0); + if Id > 0 then FController.SetSliceFMSquelch(Id, FsBool, FController.FFMSQLevel); +end; + +procedure TTCIAdapter.SyncSetSqlLevel; +var Id: Integer; +begin + if FsInt = 0 then begin FController.SetFMSquelchLevel(FsInt2); Exit; end; + Id := SliceIdOf(FsInt, 0); + if Id > 0 then FController.SetSliceFMSquelch(Id, FController.FFMSQOn, FsInt2); +end; + +procedure TTCIAdapter.SyncSetRun; +begin + FController.SetRun(FsBool); +end; + +procedure TTCIAdapter.SyncSetCWSpeed; +var C: TCWSettings; +begin + C := FController.CWSettings; + C.Speed := FsInt; + FController.SetCWSettings(C); +end; + +procedure TTCIAdapter.SyncSetCWDelay; +var C: TCWSettings; +begin + C := FController.CWSettings; + C.RFDelayMS := FsInt; + FController.SetCWSettings(C); +end; + +procedure TTCIAdapter.SyncCWSend; +begin + FController.CWXSend(FsStr); +end; + +procedure TTCIAdapter.SyncCWStop; +begin + FController.CWXAbort; +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Разбор команд клиента + ═══════════════════════════════════════════════════════════════════════════ } + +procedure TTCIAdapter.CmdFreq(Client: TTCIClient; const M: TTCIMessage; IsIF: Boolean); +// VFO:rx,ch[,hz] и IF:rx,ch[,hz] — разница только в системе отсчёта. +var + Rx, Ch: Integer; + Hz: Double; +begin + Rx := TCIArgInt(M, 0, -1); + Ch := TCIArgInt(M, 1, 0); + if not ValidRx(Rx) then Exit; + if (Ch < 0) or (Ch >= TCI_CHANNELS) then Exit; + + if M.ArgCount >= 3 then + begin + Hz := TCIArgFloat(M, 2, 0); + if IsIF then Hz := RxCenterHz(Rx) + Hz; + FLock.Enter; + try + FsInt := Rx; FsInt2 := Ch; FsFreq := Hz; + FController.Invoke(SyncSetVfo); + finally + FLock.Leave; + end; + end; + + if IsIF then Reply(Client, StrIf(Rx, Ch)) else Reply(Client, StrVfo(Rx, Ch)); +end; + +procedure TTCIAdapter.CmdCWMacros(const M: TTCIMessage; IsMsg: Boolean); +// CW_MACROS:trx,текст; CW_MSG:trx,префикс,позывной,суффикс; +// Разметку TCI приводим к тому, что понимает передатчик текста ewsdr: +// |ABBR| — слитная передача (у нас такой команды нет) → скобки снимаем; +// < / > — шаг скорости ±5 wpm (передатчик работает на одной скорости) → снимаем; +// CALL$N — повтор позывного N раз. +var + Text, Prefix, Call, Suffix, Rep: string; + P, N, i: Integer; +begin + if IsMsg then + begin + // cw_msg:arg1; — доотправка позывного по ходу передачи. Наш передатчик + // текста уже отданное не редактирует, поэтому такую форму игнорируем. + if M.ArgCount < 4 then Exit; + Prefix := TCIUnescape(TCIArg(M, 1)); + Call := TCIUnescape(TCIArg(M, 2)); + Suffix := TCIUnescape(TCIArg(M, 3)); + if Prefix = '_' then Prefix := ''; + if Suffix = '_' then Suffix := ''; + + P := Pos('$', Call); + if P > 0 then + begin + Rep := Copy(Call, P + 1, MaxInt); + Call := Copy(Call, 1, P - 1); + N := StrToIntDef(Trim(Rep), 1); + if N < 1 then N := 1; + if N > 5 then N := 5; + Text := ''; + for i := 1 to N do + begin + if Text <> '' then Text := Text + ' '; + Text := Text + Call; + end; + Call := Text; + end; + + Text := Trim(Prefix + ' ' + Call + ' ' + Suffix); + end + else + begin + if M.ArgCount < 2 then Exit; + Text := TCIUnescape(TCIArg(M, 1)); + end; + + Text := StringReplace(Text, '|', '', [rfReplaceAll]); + Text := StringReplace(Text, '<', '', [rfReplaceAll]); + Text := StringReplace(Text, '>', '', [rfReplaceAll]); + Text := Trim(Text); + if Text = '' then Exit; + + FLock.Enter; + try + FsStr := Text; + FController.Invoke(SyncCWSend); + finally + FLock.Leave; + end; + + // Позывной ушёл в эфир целиком — подтверждаем финальный вариант (§3.2.2). + if IsMsg and (Call <> '') then + FServer.Broadcast(TCIBuild('callsign_send', [Call])); +end; + +procedure TTCIAdapter.CmdSpot(const M: TTCIMessage); +// SPOT:позывной,мода,частота,цвет ARGB,текст; +var + S: TDXSpot; +begin + if FSpots = nil then Exit; + if M.ArgCount < 3 then Exit; + + S.Call := TCIUnescape(TCIArg(M, 0)); + S.FreqHz := TCIArgFloat(M, 2, 0); + S.Comment := TCIUnescape(TCIArg(M, 4)); + S.Spotter := 'TCI'; + S.TimeUTC := FormatDateTime('hhnn', Now); + S.Stamp := Now; + S.ModeGuessed := False; + S.Mode := DXModeFromComment(TCIArg(M, 1)); + if S.Mode = dxmUnknown then S.Mode := DXModeFromComment(S.Comment); + if S.Mode = dxmUnknown then + begin + S.Mode := DXModeFromFreq(S.FreqHz); + S.ModeGuessed := S.Mode <> dxmUnknown; + end; + if (S.Call = '') or (S.FreqHz <= 0) then Exit; + FSpots.Add(S); // стор потокобезопасен, маршалинг не нужен +end; + +procedure TTCIAdapter.HandleCommand(Client: TTCIClient; const Cmd: string); +// Внешняя оболочка: разбор + «одна команда не роняет соединение». Команда +// приходит из сети, а исполняется в потоке контроллера, где может рвануть что +// угодно (не поднятые движки, чужие сеттеры) — клиент за это платить не должен. +var + M: TTCIMessage; +begin + if not TCIParse(Cmd, M) then Exit; + try + DispatchCommand(Client, M); + except + on E: Exception do + Client.Send(TCIBuild('tci_error', [TCIEscape(LowerCase(M.Name)), + TCIEscape(E.Message)])); + end; +end; + +procedure TTCIAdapter.DispatchCommand(Client: TTCIClient; const M: TTCIMessage); +var + Rx, Ch, V: Integer; + B: Boolean; + D: Double; + Name: string; +begin + + // ── Управление устройством ── + if M.Name = 'START' then + begin + FLock.Enter; + try FsBool := True; FController.Invoke(SyncSetRun); finally FLock.Leave; end; + Exit; + end; + if M.Name = 'STOP' then + begin + FLock.Enter; + try FsBool := False; FController.Invoke(SyncSetRun); finally FLock.Leave; end; + Exit; + end; + + // ── Частоты ── + if M.Name = 'VFO' then begin CmdFreq(Client, M, False); Exit; end; + if M.Name = 'IF' then begin CmdFreq(Client, M, True); Exit; end; + + if M.Name = 'DDS' then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 2 then + begin + D := TCIArgFloat(M, 1, 0); + FLock.Enter; + try + FsInt := Rx; FsFreq := D; + FController.Invoke(SyncSetCenter); + finally FLock.Leave; end; + end; + Reply(Client, StrDds(Rx)); + Exit; + end; + + // ── Вид связи и фильтр ── + if M.Name = 'MODULATION' then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 2 then + begin + V := TCIModeIndex(TCIArg(M, 1), RxMode(Rx), ChanFreq(Rx, 0)); + if V >= 0 then + begin + FLock.Enter; + try + FsInt := Rx; FsInt2 := V; + FController.Invoke(SyncSetMode); + finally FLock.Leave; end; + end; + end; + Reply(Client, StrModulation(Rx)); + Exit; + end; + + if M.Name = 'RX_FILTER_BAND' then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 3 then + begin + FLock.Enter; + try + FsInt := Rx; + FsInt2 := TCIArgInt(M, 1, 0); + FsInt3 := TCIArgInt(M, 2, 0); + FController.Invoke(SyncSetFilter); + finally FLock.Leave; end; + end; + Reply(Client, StrFilterBand(Rx)); + Exit; + end; + + // ── Передача ── + if M.Name = 'TRX' then + begin + if M.ArgCount >= 2 then + begin + // arg3 (источник сигнала: tci/mic1/…) игнорируем: аудио по TCI ещё нет, + // модуляция берётся из выбранного в программе входа. + FLock.Enter; + try + FsBool := TCIArgBool(M, 1, False); + FController.Invoke(SyncSetTRX); + finally FLock.Leave; end; + end; + Reply(Client, StrTrx); + Exit; + end; + + if M.Name = 'TUNE' then + begin + if M.ArgCount >= 2 then + begin + FLock.Enter; + try + FsBool := TCIArgBool(M, 1, False); + FController.Invoke(SyncSetTune); + finally FLock.Leave; end; + end; + Reply(Client, StrTune); + Exit; + end; + + if M.Name = 'DRIVE' then + begin + if M.ArgCount >= 2 then + begin + FLock.Enter; + try + FsInt := EnsureRange(TCIArgInt(M, 1, 0), 0, 100); + FController.Invoke(SyncSetDrive); + finally FLock.Leave; end; + end; + Reply(Client, StrDrive); + Exit; + end; + + if M.Name = 'TUNE_DRIVE' then + begin + if M.ArgCount >= 2 then + begin + FLock.Enter; + try + FsInt := EnsureRange(TCIArgInt(M, 1, 0), 0, 100); + FController.Invoke(SyncSetTuneDrive); + finally FLock.Leave; end; + end; + Reply(Client, TCIBuild('tune_drive', ['0', + TCIIntStr(FController.FTXSettings.TUNLevel)])); + Exit; + end; + + if M.Name = 'SPLIT_ENABLE' then + begin + if M.ArgCount >= 2 then + begin + FLock.Enter; + try + FsBool := TCIArgBool(M, 1, False); + FController.Invoke(SyncSetSplit); + finally FLock.Leave; end; + end; + Reply(Client, TCIBuild('split_enable', ['0', TCIBoolStr(FController.FSplitTxB)])); + Exit; + end; + + // ── Громкость ── + if M.Name = 'VOLUME' then + begin + if M.ArgCount >= 1 then + begin + FLock.Enter; + try + FsInt := TCIDbToVolume(TCIArgFloat(M, 0, -60)); + FController.Invoke(SyncSetVolume); + finally FLock.Leave; end; + end; + Reply(Client, StrVolume); + Exit; + end; + + if M.Name = 'MUTE' then + begin + if M.ArgCount >= 1 then + begin + FLock.Enter; + try + FsBool := TCIArgBool(M, 0, False); + FController.Invoke(SyncSetMute); + finally FLock.Leave; end; + end; + Reply(Client, StrMute); + Exit; + end; + + if M.Name = 'RX_MUTE' then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 2 then + begin + FLock.Enter; + try + FsInt := Rx; FsBool := TCIArgBool(M, 1, False); + FController.Invoke(SyncSetRxMute); + finally FLock.Leave; end; + end; + Reply(Client, TCIBuild('rx_mute', [TCIIntStr(Rx), TCIBoolStr(RxMuted(Rx))])); + Exit; + end; + + if M.Name = 'RX_VOLUME' then + begin + Rx := TCIArgInt(M, 0, -1); + Ch := EnsureRange(TCIArgInt(M, 1, 0), 0, TCI_CHANNELS - 1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 3 then + begin + FLock.Enter; + try + FsInt := Rx; + FsInt2 := TCIDbToVolume(TCIArgFloat(M, 2, -60)); + FController.Invoke(SyncSetRxVolume); + finally FLock.Leave; end; + end; + Reply(Client, TCIBuild('rx_volume', [TCIIntStr(Rx), TCIIntStr(Ch), + TCIIntStr(Round(RxVolumeDb(Rx)))])); + Exit; + end; + + if M.Name = 'RX_BALANCE' then + begin + // Баланса каналов у нас нет — эхо, чтобы клиенты не расходились. + Rx := TCIArgInt(M, 0, -1); + Ch := EnsureRange(TCIArgInt(M, 1, 0), 0, TCI_CHANNELS - 1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 3 then + FEcho[Rx].BalanceDb[Ch] := EnsureRange(TCIArgInt(M, 2, 0), -40, 40); + FServer.Broadcast(TCIBuild('rx_balance', [TCIIntStr(Rx), TCIIntStr(Ch), + TCIIntStr(FEcho[Rx].BalanceDb[Ch])])); + Exit; + end; + + if M.Name = 'MON_VOLUME' then + begin + if M.ArgCount >= 1 then + begin + FLock.Enter; + try + FsInt := TCIDbToVolume(TCIArgFloat(M, 0, -60)); + FController.Invoke(SyncSetMonVolume); + finally FLock.Leave; end; + end; + Reply(Client, TCIBuild('mon_volume', + [TCIIntStr(Round(TCIVolumeToDb(FController.FTxMonVolume)))])); + Exit; + end; + + if M.Name = 'MON_ENABLE' then + begin + if M.ArgCount >= 1 then + begin + FLock.Enter; + try + FsBool := TCIArgBool(M, 0, False); + FController.Invoke(SyncSetMonEnable); + finally FLock.Leave; end; + end; + Reply(Client, TCIBuild('mon_enable', [TCIBoolStr(not FController.FRxMuteOnTx)])); + Exit; + end; + + // ── АРУ ── + if M.Name = 'AGC_MODE' then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 2 then + begin + Name := LowerCase(TCIArg(M, 1)); + if Name = 'off' then V := 4 + else if Name = 'fast' then V := 0 + else if Name = 'normal' then V := 1 + else V := -1; + if V >= 0 then + begin + FLock.Enter; + try + FsInt := Rx; FsInt2 := V; + FController.Invoke(SyncSetAGCMode); + finally FLock.Leave; end; + end; + end; + Reply(Client, StrAGCMode(Rx)); + Exit; + end; + + if M.Name = 'AGC_GAIN' then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 2 then + begin + FLock.Enter; + try + FsInt := EnsureRange(TCIArgInt(M, 1, 0), TCI_AGC_MIN_DB, TCI_AGC_MAX_DB); + FController.Invoke(SyncSetAGCTop); + finally FLock.Leave; end; + end; + Reply(Client, StrAGCGain(Rx)); + Exit; + end; + + // ── Шумоподавление ── + if (M.Name = 'RX_NR_ENABLE') or (M.Name = 'RX_NB_ENABLE') or + (M.Name = 'RX_ANF_ENABLE') then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 2 then + begin + FLock.Enter; + try + FsInt := Rx; FsBool := TCIArgBool(M, 1, False); + if M.Name = 'RX_NR_ENABLE' then FController.Invoke(SyncSetNR) + else if M.Name = 'RX_NB_ENABLE' then FController.Invoke(SyncSetNB) + else FController.Invoke(SyncSetANF); + finally FLock.Leave; end; + end; + if M.Name = 'RX_NR_ENABLE' then + Reply(Client, TCIBuild('rx_nr_enable', [TCIIntStr(Rx), TCIBoolStr(FController.FNRMode > 0)])) + else if M.Name = 'RX_NB_ENABLE' then + Reply(Client, TCIBuild('rx_nb_enable', [TCIIntStr(Rx), TCIBoolStr(FController.FNBMode > 0)])) + else + Reply(Client, TCIBuild('rx_anf_enable', [TCIIntStr(Rx), TCIBoolStr(FController.FANF)])); + Exit; + end; + + if M.Name = 'RX_NB_PARAM' then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 3 then + begin + FEcho[Rx].NBThreshold := EnsureRange(TCIArgInt(M, 1, 50), 1, 100); + FEcho[Rx].NBDuration := EnsureRange(TCIArgInt(M, 2, 25), 1, 300); + end; + FServer.Broadcast(TCIBuild('rx_nb_param', [TCIIntStr(Rx), + TCIIntStr(FEcho[Rx].NBThreshold), TCIIntStr(FEcho[Rx].NBDuration)])); + Exit; + end; + + // ── Эхо-переключатели обработки (в ewsdr соответствующих трактов нет) ── + if (M.Name = 'RX_BIN_ENABLE') or (M.Name = 'RX_ANC_ENABLE') or + (M.Name = 'RX_APF_ENABLE') or (M.Name = 'RX_DSE_ENABLE') or + (M.Name = 'RX_NF_ENABLE') then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + B := TCIArgBool(M, 1, False); + if M.ArgCount >= 2 then + begin + if M.Name = 'RX_BIN_ENABLE' then FEcho[Rx].BinOn := B + else if M.Name = 'RX_ANC_ENABLE' then FEcho[Rx].ANCOn := B + else if M.Name = 'RX_APF_ENABLE' then FEcho[Rx].APFOn := B + else if M.Name = 'RX_DSE_ENABLE' then FEcho[Rx].DSEOn := B + else FEcho[Rx].NFOn := B; + end; + if M.Name = 'RX_BIN_ENABLE' then B := FEcho[Rx].BinOn + else if M.Name = 'RX_ANC_ENABLE' then B := FEcho[Rx].ANCOn + else if M.Name = 'RX_APF_ENABLE' then B := FEcho[Rx].APFOn + else if M.Name = 'RX_DSE_ENABLE' then B := FEcho[Rx].DSEOn + else B := FEcho[Rx].NFOn; + FServer.Broadcast(TCIBuild(LowerCase(M.Name), [TCIIntStr(Rx), TCIBoolStr(B)])); + Exit; + end; + + // ── Блокировка, шумоподавитель ── + if M.Name = 'LOCK' then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 2 then + begin + FLock.Enter; + try + FsBool := TCIArgBool(M, 1, False); + FController.Invoke(SyncSetLock); + finally FLock.Leave; end; + end; + Reply(Client, StrLock(Rx)); + Exit; + end; + + if M.Name = 'SQL_ENABLE' then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 2 then + begin + FLock.Enter; + try + FsInt := Rx; FsBool := TCIArgBool(M, 1, False); + FController.Invoke(SyncSetSql); + finally FLock.Leave; end; + end; + Reply(Client, StrSqlEnable(Rx)); + Exit; + end; + + if M.Name = 'SQL_LEVEL' then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 2 then + begin + FLock.Enter; + try + FsInt := Rx; + FsInt2 := TCISqlToLevel(TCIArgFloat(M, 1, -140)); + FController.Invoke(SyncSetSqlLevel); + finally FLock.Leave; end; + end; + Reply(Client, StrSqlLevel(Rx)); + Exit; + end; + + // ── Расстройка: своего RIT/XIT в ewsdr нет — храним и отражаем ── + if (M.Name = 'RIT_ENABLE') or (M.Name = 'XIT_ENABLE') then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 2 then + begin + if M.Name = 'RIT_ENABLE' then FEcho[Rx].RitOn := TCIArgBool(M, 1, False) + else FEcho[Rx].XitOn := TCIArgBool(M, 1, False); + end; + if M.Name = 'RIT_ENABLE' then B := FEcho[Rx].RitOn else B := FEcho[Rx].XitOn; + FServer.Broadcast(TCIBuild(LowerCase(M.Name), [TCIIntStr(Rx), TCIBoolStr(B)])); + Exit; + end; + + if (M.Name = 'RIT_OFFSET') or (M.Name = 'XIT_OFFSET') then + begin + Rx := TCIArgInt(M, 0, -1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 2 then + begin + if M.Name = 'RIT_OFFSET' then FEcho[Rx].RitHz := TCIArgInt(M, 1, 0) + else FEcho[Rx].XitHz := TCIArgInt(M, 1, 0); + end; + if M.Name = 'RIT_OFFSET' then V := FEcho[Rx].RitHz else V := FEcho[Rx].XitHz; + FServer.Broadcast(TCIBuild(LowerCase(M.Name), [TCIIntStr(Rx), TCIIntStr(V)])); + Exit; + end; + + if M.Name = 'RX_CHANNEL_ENABLE' then + begin + // Канал B у главного приёмника — это VFO B, он есть всегда; у доп. панов + // вторым каналом был бы второй слайс (создание слайсов по TCI — этап 2). + Rx := TCIArgInt(M, 0, -1); + Ch := TCIArgInt(M, 1, 1); + if not ValidRx(Rx) then Exit; + if M.ArgCount >= 3 then FEcho[Rx].ChannelBOn := TCIArgBool(M, 2, False); + B := (Rx = 0) or (ChanCount(Rx) > 1); + FServer.Broadcast(TCIBuild('rx_channel_enable', + [TCIIntStr(Rx), TCIIntStr(Ch), TCIBoolStr(B)])); + Exit; + end; + + // ── Смещения цифровых видов (эхо) ── + if (M.Name = 'DIGL_OFFSET') or (M.Name = 'DIGU_OFFSET') then + begin + if M.ArgCount >= 1 then + begin + V := EnsureRange(TCIArgInt(M, 0, 0), 0, 4000); + if M.Name = 'DIGL_OFFSET' then FDiglOffset := V else FDiguOffset := V; + end; + if M.Name = 'DIGL_OFFSET' then V := FDiglOffset else V := FDiguOffset; + FServer.Broadcast(TCIBuild(LowerCase(M.Name), [TCIIntStr(V)])); + Exit; + end; + + // ── Телеграф ── + if (M.Name = 'CW_MACROS_SPEED') or (M.Name = 'CW_KEYER_SPEED') then + begin + if M.ArgCount >= 1 then + begin + FLock.Enter; + try + FsInt := EnsureRange(TCIArgInt(M, 0, 20), 5, 60); + FController.Invoke(SyncSetCWSpeed); + finally FLock.Leave; end; + end; + Reply(Client, TCIBuild('cw_macros_speed', [TCIIntStr(FController.FCWSettings.Speed)])); + Exit; + end; + + if (M.Name = 'CW_MACROS_SPEED_UP') or (M.Name = 'CW_MACROS_SPEED_DOWN') then + begin + V := TCIArgInt(M, 0, 0); + if M.Name = 'CW_MACROS_SPEED_DOWN' then V := -V; + FLock.Enter; + try + FsInt := EnsureRange(FController.FCWSettings.Speed + V, 5, 60); + FController.Invoke(SyncSetCWSpeed); + finally FLock.Leave; end; + FServer.Broadcast(TCIBuild('cw_macros_speed', [TCIIntStr(FController.FCWSettings.Speed)])); + Exit; + end; + + if M.Name = 'CW_MACROS_DELAY' then + begin + if M.ArgCount >= 1 then + begin + FLock.Enter; + try + FsInt := EnsureRange(TCIArgInt(M, 0, 0), 0, 1000); + FController.Invoke(SyncSetCWDelay); + finally FLock.Leave; end; + end; + Reply(Client, TCIBuild('cw_macros_delay', [TCIIntStr(FController.FCWSettings.RFDelayMS)])); + Exit; + end; + + if M.Name = 'CW_MACROS' then begin CmdCWMacros(M, False); Exit; end; + if M.Name = 'CW_MSG' then begin CmdCWMacros(M, True); Exit; end; + if M.Name = 'CW_MACROS_STOP' then + begin + FLock.Enter; + try FController.Invoke(SyncCWStop); finally FLock.Leave; end; + Exit; + end; + if M.Name = 'CW_TERMINAL' then + begin + FCwTerminal := TCIArgBool(M, 0, False); + FServer.Broadcast(TCIBuild('cw_terminal', [TCIBoolStr(FCwTerminal)])); + Exit; + end; + + // ── Споты ── + if M.Name = 'SPOT' then begin CmdSpot(M); Exit; end; + if M.Name = 'SPOT_DELETE' then + begin + if FSpots <> nil then FSpots.RemoveCall(TCIUnescape(TCIArg(M, 0))); + Exit; + end; + if M.Name = 'SPOT_CLEAR' then + begin + if FSpots <> nil then FSpots.Clear; + Exit; + end; + + // ── Измерители ── + if M.Name = 'RX_SENSORS_ENABLE' then + begin + Client.RxSensors := TCIArgBool(M, 0, False); + if M.ArgCount >= 2 then + Client.RxSensorsMs := EnsureRange(TCIArgInt(M, 1, 200), + TCI_SENSOR_MIN_MS, TCI_SENSOR_MAX_MS); + Exit; + end; + if M.Name = 'TX_SENSORS_ENABLE' then + begin + Client.TxSensors := TCIArgBool(M, 0, False); + if M.ArgCount >= 2 then + Client.TxSensorsMs := EnsureRange(TCIArgInt(M, 1, 200), + TCI_SENSOR_MIN_MS, TCI_SENSOR_MAX_MS); + Exit; + end; + + // ── Параметры потоков: принимаем и подтверждаем, сами потоки — этап 2 ── + if M.Name = 'IQ_SAMPLERATE' then + begin + if M.ArgCount >= 1 then FIQRate := TCIArgInt(M, 0, FIQRate); + Reply(Client, TCIBuild('iq_samplerate', [TCIIntStr(FIQRate)])); + Exit; + end; + if M.Name = 'AUDIO_SAMPLERATE' then + begin + if M.ArgCount >= 1 then FAudioRate := TCIArgInt(M, 0, FAudioRate); + Reply(Client, TCIBuild('audio_samplerate', [TCIIntStr(FAudioRate)])); + Exit; + end; + if M.Name = 'AUDIO_STREAM_SAMPLES' then + begin + FAudioSamples := EnsureRange(TCIArgInt(M, 0, FAudioSamples), 100, 2048); + Exit; + end; + if M.Name = 'AUDIO_STREAM_CHANNELS' then + begin + FAudioChannels := EnsureRange(TCIArgInt(M, 0, FAudioChannels), 1, 2); + Exit; + end; + if M.Name = 'AUDIO_STREAM_SAMPLE_TYPE' then + begin + FAudioSampleType := LowerCase(TCIArg(M, 0)); + Exit; + end; + if M.Name = 'TX_STREAM_AUDIO_BUFFERING' then + begin + FTxBuffering := EnsureRange(TCIArgInt(M, 0, FTxBuffering), 50, 500); + Exit; + end; + + // IQ_START/STOP, AUDIO_START/STOP, LINE_OUT_* — потоки этапа 2. Молча + // игнорируем: протокол разрешает игнорировать команды, которых не понимаем. +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Измерители (тик сервера, 20 мс) + ═══════════════════════════════════════════════════════════════════════════ } + +procedure TTCIAdapter.PushSensors(Client: TTCIClient); +var + Now_: QWord; + Rx, Ch: Integer; + Snap: TRadioSnapshot; +begin + if not Client.Ready then Exit; + Now_ := GetTickCount64; + + if Client.RxSensors and (Now_ - Client.RxSensorsAt >= QWord(Client.RxSensorsMs)) then + begin + Client.RxSensorsAt := Now_; + for Rx := 0 to RxCount - 1 do + begin + for Ch := 0 to ChanCount(Rx) - 1 do + Client.Send(TCIBuild('rx_channel_sensors', + [TCIIntStr(Rx), TCIIntStr(Ch), TCIFloatStr(RxSMeterDbm(Rx, Ch), 1)])); + // Устаревшая форма — её ещё ждут старые клиенты. + Client.Send(TCIBuild('rx_sensors', + [TCIIntStr(Rx), TCIFloatStr(RxSMeterDbm(Rx, 0), 1)])); + end; + end; + + if Client.TxSensors and (Now_ - Client.TxSensorsAt >= QWord(Client.TxSensorsMs)) then + begin + Client.TxSensorsAt := Now_; + Snap := FController.GetSnapshot; + // arg2 — уровень микрофона: измерителя микрофона в ewsdr нет, отдаём + // нижнюю границу шкалы, чтобы клиент не рисовал случайные значения. + Client.Send(TCIBuild('tx_sensors', + ['0', '-60.0', TCIFloatStr(Snap.FwdW, 1), TCIFloatStr(Snap.FwdW, 1), + TCIFloatStr(Snap.SWR, 2)])); + end; +end; + +procedure TTCIAdapter.HandleTick; +begin + // Тик крутится в своём потоке сервера: исключение здесь остановило бы + // измерители у ВСЕХ клиентов до перезапуска сервера. + try + FServer.EnumClients(PushSensors); + except + // молча: следующий тик через 20 мс попробует снова + end; +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Уведомления: изменение состояния контроллера → всем клиентам + ═══════════════════════════════════════════════════════════════════════════ } + +procedure TTCIAdapter.OnState(Sender: TObject; Field: TRadioField); +var + Rx: Integer; + TxHz: Double; +begin + if (FServer = nil) or (FServer.ClientCount = 0) then Exit; + + case Field of + rfVfoA: + begin + FServer.Broadcast(StrVfo(0, 0)); + FServer.Broadcast(StrIf(0, 0)); + end; + rfVfoB: + begin + FServer.Broadcast(StrVfo(0, 1)); + FServer.Broadcast(StrIf(0, 1)); + end; + rfMode: + begin + FServer.Broadcast(StrModulation(0)); + FServer.Broadcast(StrFilterBand(0)); + end; + rfFilter, rfFilterBW: FServer.Broadcast(StrFilterBand(0)); + rfAGCMode: FServer.Broadcast(StrAGCMode(0)); + rfAGCTop: FServer.Broadcast(StrAGCGain(0)); + rfVolume: FServer.Broadcast(StrVolume); + rfMute: FServer.Broadcast(StrMute); + rfDrive: FServer.Broadcast(StrDrive); + rfTransmitting: FServer.Broadcast(StrTrx); + rfTuning: FServer.Broadcast(StrTune); + rfVfoLock: + begin + FServer.Broadcast(StrLock(0)); + FServer.Broadcast(TCIBuild('vfo_lock', + ['0', '0', TCIBoolStr(FController.FVfoLock)])); + end; + rfNR: FServer.Broadcast(TCIBuild('rx_nr_enable', ['0', TCIBoolStr(FController.FNRMode > 0)])); + rfNB: FServer.Broadcast(TCIBuild('rx_nb_enable', ['0', TCIBoolStr(FController.FNBMode > 0)])); + rfANF: FServer.Broadcast(TCIBuild('rx_anf_enable', ['0', TCIBoolStr(FController.FANF)])); + rfFMSQ: FServer.Broadcast(StrSqlEnable(0)); + rfFMSQLevel: FServer.Broadcast(StrSqlLevel(0)); + rfRxMuteOnTx: FServer.Broadcast(TCIBuild('mon_enable', + [TCIBoolStr(not FController.FRxMuteOnTx)])); + rfCenterFreq: + begin + FServer.Broadcast(StrDds(0)); + FServer.Broadcast(StrIf(0, 0)); + FServer.Broadcast(StrIf(0, 1)); + end; + rfSampleRate: + FServer.Broadcast(TCIBuild('if_limits', + [TCIIntStr(-(FController.FSampleRate div 2)), + TCIIntStr(FController.FSampleRate div 2)])); + rfRunning: + if FController.FRunning then FServer.Broadcast(TCIBuild('start')) + else FServer.Broadcast(TCIBuild('stop')); + rfPanFreq: + for Rx := 1 to RxCount - 1 do + if FController.PanDDCActive(Rx) then FServer.Broadcast(StrDds(Rx)); + rfSliceFreq: + for Rx := 1 to RxCount - 1 do + if FController.PanDDCActive(Rx) then FServer.Broadcast(StrVfo(Rx, 0)); + rfBand, rfXvtr: + begin + FServer.Broadcast(StrTxEnable(0)); + FServer.Broadcast(StrVfo(0, 0)); + end; + end; + + // Частота передачи — отдельным уведомлением, но только когда она реально + // изменилась: поле дёргается на каждый шаг ручки. + if Field in [rfVfoA, rfVfoB, rfActiveVfo, rfBand, rfXvtr, rfTransmitting] then + begin + TxHz := FController.ActiveTXFreqHz; + if Abs(TxHz - FLastTxFreq) >= 1 then + begin + FLastTxFreq := TxHz; + FServer.Broadcast(TCIBuild('tx_frequency', [TCIIntStr(Round(TxHz))])); + end; + if TxEnabled <> FLastTxEnable then + begin + FLastTxEnable := TxEnabled; + FServer.Broadcast(StrTxEnable(0)); + end; + end; +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Уведомления, которые инициирует UI + ═══════════════════════════════════════════════════════════════════════════ } + +procedure TTCIAdapter.NotifySpotClicked(const Call: string; FreqHz: Double; + Rx, Ch: Integer); +begin + if (FServer = nil) or (FServer.ClientCount = 0) then Exit; + FServer.Broadcast(TCIBuild('rx_clicked_on_spot', + [TCIIntStr(Rx), TCIIntStr(Ch), TCIEscape(Call), TCIIntStr(Round(FreqHz))])); + // Устаревшая форма — её ещё слушают старые клиенты. + FServer.Broadcast(TCIBuild('clicked_on_spot', + [TCIEscape(Call), TCIIntStr(Round(FreqHz))])); +end; + +procedure TTCIAdapter.NotifyAppFocus(InFocus: Boolean); +begin + if (FServer = nil) or (FServer.ClientCount = 0) then Exit; + FServer.Broadcast(TCIBuild('app_focus', [TCIBoolStr(InFocus)])); +end; + +end. diff --git a/TCIProtocol.pas b/TCIProtocol.pas new file mode 100644 index 0000000..f2223eb --- /dev/null +++ b/TCIProtocol.pas @@ -0,0 +1,379 @@ +unit TCIProtocol; + +{ + TCIProtocol.pas — протокол TCI 2.0 (Expert Electronics), чистый слой. + + Только разбор/сборка строк и словари протокола: ни сокетов, ни контроллера. + Роль та же, что у CATEngine в CAT-подсистеме, но парсер тут тривиальный, и + вся логика команд живёт в TCIAdapter — команд у TCI мало, а аргументы у них + типизированы (номер приёмника/канала), поэтому таблица команд вырождается в + case по имени. + + Формат (док, §3.1): + <имя>:<арг1>,<арг2>,…; команда с аргументами + <имя>; команда без аргументов + Зарезервированные символы: ':' ',' ';' — внутри аргументов запрещены и + заменяются на '^' '~' '*' (§3.2.1), обратная подстановка — TCIUnescape. + + Регистр значения не имеет. ExpertSDR3 шлёт всё в нижнем регистре, и часть + клиентов сравнивает строки как есть — поэтому наружу тоже пишем строчными, + а внутрь принимаем любой. +} + +{$IFDEF FPC} + {$MODE Delphi} + {$LONGSTRINGS ON} +{$ENDIF} + +interface + +uses + Classes, SysUtils, Math, RadioModes; + +const + TCI_VERSION = '2.0'; // версия протокола, отдаётся в PROTOCOL + TCI_APP_NAME = 'EWSDR'; + TCI_DEFAULT_PORT = 40001; // порт TCI-сервера ExpertSDR3 + TCI_CHANNELS = 2; // каналов приёма на приёмник (A/B) + + // Список видов связи для MODULATIONS_LIST. Первые десять — словарь + // ExpertSDR3 (клиенты сверяются именно с ними), dmr/fmraw — наше + // расширение: протокол расширяемый по замыслу (§1.4). + TCI_MODULATIONS = 'am,sam,dsb,lsb,usb,cw,nfm,wfm,digl,digu,dmr,fmraw'; + + // Границы, оговорённые протоколом (клампим сами — клиент шлёт что угодно). + TCI_VOL_MIN_DB = -60; TCI_VOL_MAX_DB = 0; + TCI_SQL_MIN_DB = -140; TCI_SQL_MAX_DB = 0; + TCI_AGC_MIN_DB = -20; TCI_AGC_MAX_DB = 120; + TCI_SENSOR_MIN_MS = 30; TCI_SENSOR_MAX_MS = 1000; + +type + TTCIArgs = array of string; + + { Разобранная команда. Name — в ВЕРХНЕМ регистре (сравнивать в case), + аргументы — как пришли, с уже снятым экранированием только там, где это + нужно вызывающему (текст CW), поэтому здесь их не трогаем. } + TTCIMessage = record + Name: string; + Args: TTCIArgs; + ArgCount: Integer; + end; + + { Тип бинарного потока (§3.4). Потоки — следующий этап (см. doc/TCI.md), + но формат протокольный, поэтому объявлен здесь, а не в транспорте. } + TTCIStreamType = (tstIQ, tstRXAudio, tstTXAudio, tstTXChrono, tstLineOut); + TTCISampleType = (tsyInt16, tsyInt24, tsyInt32, tsyFloat32); + + { Заголовок блока потока: 16 × uint32 перед сэмплами. } + TTCIStreamHeader = packed record + Receiver: LongWord; + SampleRate: LongWord; + Format: LongWord; // TTCISampleType + Codec: LongWord; // всегда 0 (сжатие не реализовано) + CRC: LongWord; // всегда 0 + DataLength: LongWord; // количество вещественных отсчётов в data[] + StreamType: LongWord; // TTCIStreamType + Channels: LongWord; + Reserv: array[0..7] of LongWord; + end; + +{ ── Разбор ─────────────────────────────────────────────────────────────── } + +{ Разбирает ОДНУ команду (без завершающей ';' или с ней). False — мусор. } +function TCIParse(const S: string; out M: TTCIMessage): Boolean; + +{ Режет полученный текстовый фрейм на отдельные команды по ';'. Клиенты + склеивают команды в один фрейм, и это законно. } +function TCISplit(const Payload: string; Lines: TStrings): Integer; + +function TCIArg(const M: TTCIMessage; Idx: Integer): string; +function TCIArgInt(const M: TTCIMessage; Idx, Def: Integer): Integer; +function TCIArgFloat(const M: TTCIMessage; Idx: Integer; Def: Double): Double; +function TCIArgBool(const M: TTCIMessage; Idx: Integer; Def: Boolean): Boolean; + +{ ── Сборка ─────────────────────────────────────────────────────────────── } + +function TCIBuild(const Name: string): string; overload; +function TCIBuild(const Name: string; const Args: array of string): string; overload; + +function TCIBoolStr(B: Boolean): string; +function TCIIntStr(V: Int64): string; +function TCIFloatStr(V: Double; Digits: Integer = 1): string; + +{ ── Экранирование текстовых аргументов (§3.2.1) ────────────────────────── } + +function TCIUnescape(const S: string): string; +function TCIEscape(const S: string): string; + +{ ── Виды связи ─────────────────────────────────────────────────────────── } + +{ Имя вида связи для TCI по индексу RadioModes (CWL/CWU схлопываются в 'cw'). } +function TCIModeName(ModeIdx: Integer): string; + +{ Индекс RadioModes по имени TCI. 'cw' сам по себе боковую не задаёт: + оставляем текущую, если уже телеграф, иначе выбираем по частоте (ниже + 10 МГц — CWL, выше — CWU, общепринятая конвенция). -1 = имя неизвестно. } +function TCIModeIndex(const Name: string; CurMode: Integer; FreqHz: Double): Integer; + +{ ── Пересчёт величин ───────────────────────────────────────────────────── } + +function TCIVolumeToDb(V: Integer): Double; // громкость 0..100 → -60..0 дБ +function TCIDbToVolume(Db: Double): Integer; // и обратно +function TCISqlToLevel(Db: Double): Integer; // порог -140..0 дБ → 0..100 +function TCILevelToSql(V: Integer): Double; + +implementation + +var + // Числа протокола — только с точкой, независимо от локали хоста. + TCIFormatSettings: TFormatSettings; + +{ ═══════════════════════════════════════════════════════════════════════════ + Разбор + ═══════════════════════════════════════════════════════════════════════════ } + +function TCIParse(const S: string; out M: TTCIMessage): Boolean; +var + Body, ArgStr: string; + P, Start, i: Integer; +begin + Result := False; + M.Name := ''; + M.ArgCount := 0; + SetLength(M.Args, 0); + + Body := Trim(S); + // Хвостовая ';' необязательна: транспорт мог её уже срезать при нарезке. + if (Body <> '') and (Body[Length(Body)] = ';') then + Body := Copy(Body, 1, Length(Body) - 1); + Body := Trim(Body); + if Body = '' then Exit; + + P := Pos(':', Body); + if P = 0 then + begin + M.Name := UpperCase(Body); + Result := M.Name <> ''; + Exit; + end; + + M.Name := UpperCase(Trim(Copy(Body, 1, P - 1))); + if M.Name = '' then Exit; + + ArgStr := Copy(Body, P + 1, MaxInt); + Start := 1; + for i := 1 to Length(ArgStr) + 1 do + if (i > Length(ArgStr)) or (ArgStr[i] = ',') then + begin + SetLength(M.Args, M.ArgCount + 1); + M.Args[M.ArgCount] := Trim(Copy(ArgStr, Start, i - Start)); + Inc(M.ArgCount); + Start := i + 1; + end; + + Result := True; +end; + +function TCISplit(const Payload: string; Lines: TStrings): Integer; +var + i, Start: Integer; + Piece: string; +begin + Lines.Clear; + Start := 1; + for i := 1 to Length(Payload) do + if Payload[i] = ';' then + begin + Piece := Trim(Copy(Payload, Start, i - Start)); + if Piece <> '' then Lines.Add(Piece); + Start := i + 1; + end; + // Хвост без ';' — недоприехавшая команда; протокол её игнорирует (§3.1). + Result := Lines.Count; +end; + +function TCIArg(const M: TTCIMessage; Idx: Integer): string; +begin + if (Idx >= 0) and (Idx < M.ArgCount) then Result := M.Args[Idx] else Result := ''; +end; + +function TCIArgInt(const M: TTCIMessage; Idx, Def: Integer): Integer; +var + D: Double; +begin + // Клиенты шлют и «7100000», и «7100000.0» — берём через Float и округляем. + if not TryStrToFloat(StringReplace(TCIArg(M, Idx), ',', '.', [rfReplaceAll]), + D, TCIFormatSettings) then + Result := Def + else + Result := Round(D); +end; + +function TCIArgFloat(const M: TTCIMessage; Idx: Integer; Def: Double): Double; +begin + if not TryStrToFloat(StringReplace(TCIArg(M, Idx), ',', '.', [rfReplaceAll]), + Result, TCIFormatSettings) then + Result := Def; +end; + +function TCIArgBool(const M: TTCIMessage; Idx: Integer; Def: Boolean): Boolean; +var + S: string; +begin + S := LowerCase(TCIArg(M, Idx)); + if (S = 'true') or (S = '1') then Result := True + else if (S = 'false') or (S = '0') then Result := False + else Result := Def; +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Сборка + ═══════════════════════════════════════════════════════════════════════════ } + +function TCIBuild(const Name: string): string; +begin + Result := LowerCase(Name) + ';'; +end; + +function TCIBuild(const Name: string; const Args: array of string): string; +var + i: Integer; +begin + if Length(Args) = 0 then begin Result := TCIBuild(Name); Exit; end; + Result := LowerCase(Name) + ':'; + for i := 0 to High(Args) do + begin + if i > 0 then Result := Result + ','; + Result := Result + Args[i]; + end; + Result := Result + ';'; +end; + +function TCIBoolStr(B: Boolean): string; +begin + if B then Result := 'true' else Result := 'false'; +end; + +function TCIIntStr(V: Int64): string; +begin + Result := IntToStr(V); +end; + +function TCIFloatStr(V: Double; Digits: Integer): string; +begin + if IsNan(V) or IsInfinite(V) then V := 0; + Result := FloatToStrF(V, ffFixed, 15, Digits, TCIFormatSettings); +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Экранирование + ═══════════════════════════════════════════════════════════════════════════ } + +function TCIUnescape(const S: string): string; +begin + Result := StringReplace(S, '^', ':', [rfReplaceAll]); + Result := StringReplace(Result, '~', ',', [rfReplaceAll]); + Result := StringReplace(Result, '*', ';', [rfReplaceAll]); +end; + +function TCIEscape(const S: string): string; +begin + Result := StringReplace(S, ':', '^', [rfReplaceAll]); + Result := StringReplace(Result, ',', '~', [rfReplaceAll]); + Result := StringReplace(Result, ';', '*', [rfReplaceAll]); +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Виды связи + ═══════════════════════════════════════════════════════════════════════════ } + +function TCIModeName(ModeIdx: Integer): string; +begin + case ModeIdx of + MODE_LSB: Result := 'lsb'; + MODE_USB: Result := 'usb'; + MODE_DSB: Result := 'dsb'; + MODE_CWL, + MODE_CWU: Result := 'cw'; + MODE_FM: Result := 'nfm'; + MODE_AM: Result := 'am'; + MODE_SAM: Result := 'sam'; + MODE_DIGU: Result := 'digu'; + MODE_DIGL: Result := 'digl'; + MODE_WFM: Result := 'wfm'; + MODE_DMR: Result := 'dmr'; + MODE_FMRAW: Result := 'fmraw'; + else + Result := 'usb'; + end; +end; + +function TCIModeIndex(const Name: string; CurMode: Integer; FreqHz: Double): Integer; +var + S: string; +begin + S := LowerCase(Trim(Name)); + if S = 'lsb' then Result := MODE_LSB + else if S = 'usb' then Result := MODE_USB + else if S = 'dsb' then Result := MODE_DSB + else if S = 'am' then Result := MODE_AM + else if S = 'sam' then Result := MODE_SAM + else if (S = 'nfm') or (S = 'fm') then Result := MODE_FM + else if S = 'wfm' then Result := MODE_WFM + else if S = 'digu' then Result := MODE_DIGU + else if S = 'digl' then Result := MODE_DIGL + else if S = 'dmr' then Result := MODE_DMR + else if S = 'fmraw' then Result := MODE_FMRAW + else if S = 'cwl' then Result := MODE_CWL + else if S = 'cwu' then Result := MODE_CWU + else if S = 'cw' then + begin + if (CurMode = MODE_CWL) or (CurMode = MODE_CWU) then + Result := CurMode // боковую телеграфа не трогаем + else if FreqHz < 10000000 then + Result := MODE_CWL + else + Result := MODE_CWU; + end + else + Result := -1; // 'drm' и всё незнакомое — молча игнорируем (§3.1) +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Пересчёт величин + ═══════════════════════════════════════════════════════════════════════════ } + +function TCIVolumeToDb(V: Integer): Double; +begin + if V <= 0 then Result := TCI_VOL_MIN_DB + else if V >= 100 then Result := 0 + else Result := TCI_VOL_MIN_DB + (TCI_VOL_MIN_DB * -1) * (V / 100.0); +end; + +function TCIDbToVolume(Db: Double): Integer; +begin + if Db <= TCI_VOL_MIN_DB then Result := 0 + else if Db >= 0 then Result := 100 + else Result := Round((Db - TCI_VOL_MIN_DB) / (TCI_VOL_MIN_DB * -1) * 100.0); +end; + +function TCISqlToLevel(Db: Double): Integer; +begin + // Порог шумоподавителя: у нас 0..100 (FM squelch), у TCI — dBm -140..0. + if Db <= TCI_SQL_MIN_DB then Result := 0 + else if Db >= 0 then Result := 100 + else Result := Round((Db - TCI_SQL_MIN_DB) / (TCI_SQL_MIN_DB * -1) * 100.0); +end; + +function TCILevelToSql(V: Integer): Double; +begin + if V <= 0 then Result := TCI_SQL_MIN_DB + else if V >= 100 then Result := 0 + else Result := TCI_SQL_MIN_DB + (TCI_SQL_MIN_DB * -1) * (V / 100.0); +end; + +initialization + TCIFormatSettings := DefaultFormatSettings; + TCIFormatSettings.DecimalSeparator := '.'; + +end. diff --git a/TCIServer.pas b/TCIServer.pas new file mode 100644 index 0000000..1992579 --- /dev/null +++ b/TCIServer.pas @@ -0,0 +1,688 @@ +unit TCIServer; + +{ + TCIServer.pas — транспорт TCI: WebSocket-сервер (роль сервера играем мы, + как ExpertSDR3; клиенты — логгеры, скиммеры, программы цифровых видов). + + Что делает: + • слушает TCP-порт (умолчание 40001), принимает HTTP-Upgrade на WebSocket + по любому пути (клиенты ходят на ws://host:40001/); + • режет входящие текстовые фреймы на команды и отдаёт их наверх + (OnCommand) прямо в потоке клиента — маршалинг в поток контроллера + делает TCIAdapter, как это устроено у CAT; + • рассылает строки всем клиентам (Broadcast) — сервер TCI обязан + синхронизировать всех подключённых (§3.5); + • тикает OnTick (умолчание 20 мс) — по нему адаптер шлёт показания + измерителей с индивидуальным для каждого клиента периодом. + + Бинарные фреймы (потоки IQ/аудио, §3.4) пока не обрабатываются: этап 2, + см. doc/TCI.md. Приходящие от клиента binary-фреймы молча отбрасываются. + + Сокеты и WS-фреймы переиспользованы из веб-подсистемы (WebUtils/WsClient): + тот же код handshake и та же схема «поток на клиента + accept-поток», что в + WebServer. + + Авторизации у TCI нет by design. Порт слушается там, где сказано в + настройках; умолчание — 127.0.0.1, чтобы наружу он не торчал без спроса. +} + +{$IFDEF FPC} + {$MODE Delphi} + {$LONGSTRINGS ON} +{$ENDIF} + +interface + +uses + Classes, SysUtils, + WebUtils, WsClient, TCIProtocol + {$IFDEF WINDOWS}, Windows, WinSock2{$ELSE}, Sockets{$ENDIF}, + SyncObjs; // ← после платформенных юнитов (конфликт идентификатора Create) + +const + TCI_MAX_CLIENTS = 8; + TCI_TICK_MS = 20; // период OnTick (сенсоры троттлятся адаптером) + TCI_WS_GUID = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'; + TCI_SEND_TIMEOUT = 1000; // мс на SockSend, иначе клиент считается мёртвым + +type + TTCIServer = class; + + { Один подключённый клиент: WS-сокет + его личные подписки. Подписки на + сенсоры в TCI индивидуальны (RX_SENSORS_ENABLE «отправляется только + клиентом»), поэтому живут здесь, а не в адаптере. } + TTCIClient = class + private + FWs: TWsClient; + FReady: Boolean; // пачка инициализации отправлена + FRxSensors: Boolean; + FRxSensorsMs: Integer; + FRxSensorsAt: QWord; // тик последней отправки + FTxSensors: Boolean; + FTxSensorsMs: Integer; + FTxSensorsAt: QWord; + public + constructor Create(AWs: TWsClient); + { Текстовый фрейм клиенту. False — соединение уже мертво. } + function Send(const S: string): Boolean; + property Ws: TWsClient read FWs; + property Ready: Boolean read FReady write FReady; + property RxSensors: Boolean read FRxSensors write FRxSensors; + property RxSensorsMs: Integer read FRxSensorsMs write FRxSensorsMs; + property RxSensorsAt: QWord read FRxSensorsAt write FRxSensorsAt; + property TxSensors: Boolean read FTxSensors write FTxSensors; + property TxSensorsMs: Integer read FTxSensorsMs write FTxSensorsMs; + property TxSensorsAt: QWord read FTxSensorsAt write FTxSensorsAt; + end; + + TTCIClientEvent = procedure(Client: TTCIClient) of object; + TTCICommandEvent = procedure(Client: TTCIClient; const Cmd: string) of object; + + TTCIServer = class + private + FListenSock: TSocket; + FClients: array[0..TCI_MAX_CLIENTS-1] of TTCIClient; + FClientCount: Integer; + FClientLock: TCriticalSection; + FAcceptThread: TThread; + FTickThread: TThread; + FThreadCount: LongInt; // живых клиентских потоков (Interlocked*) + FRunning: Boolean; + FPort: Word; + FBindIP: string; + FOnCommand: TTCICommandEvent; + FOnConnect: TTCIClientEvent; + FOnDisconnect: TTCIClientEvent; + FOnTick: TThreadMethod; + function InitListen: Boolean; + procedure RemoveClient(Client: TTCIClient); + public + constructor Create; + destructor Destroy; override; + + { Настройка слушателя. Применяется при следующем Start. } + procedure Configure(APort: Word; const ABindIP: string); + + function Start: Boolean; + procedure Stop; + function Running: Boolean; + + { Всем клиентам, прошедшим инициализацию. Skip — кого пропустить + (обычно автора изменения не пропускаем: сервер отвечает и ему тоже, + это и есть подтверждение установки). } + procedure Broadcast(const S: string; Skip: TTCIClient = nil); + + { Обход клиентов под локом — для рассылки с индивидуальным периодом. } + procedure EnumClients(Proc: TTCIClientEvent); + + function ClientCount: Integer; + + { Внутреннее (зовётся потоками сервера). } + procedure AcceptLoop; + procedure TickLoop; + procedure HandleClient(Client: TTCIClient); + procedure ThreadDone; // клиентский поток отработал + + property Port: Word read FPort; + property BindIP: string read FBindIP; + property OnCommand: TTCICommandEvent read FOnCommand write FOnCommand; + property OnConnect: TTCIClientEvent read FOnConnect write FOnConnect; + property OnDisconnect: TTCIClientEvent read FOnDisconnect write FOnDisconnect; + property OnTick: TThreadMethod read FOnTick write FOnTick; + end; + +implementation + +type + TTCIAcceptThread = class(TThread) + private FServer: TTCIServer; + protected procedure Execute; override; + public constructor Create(AServer: TTCIServer); + end; + + TTCITickThread = class(TThread) + private FServer: TTCIServer; + protected procedure Execute; override; + public constructor Create(AServer: TTCIServer); + end; + + TTCIClientThread = class(TThread) + private FServer: TTCIServer; FClient: TTCIClient; + protected procedure Execute; override; + public constructor Create(AServer: TTCIServer; AClient: TTCIClient); + end; + +constructor TTCIAcceptThread.Create(AServer: TTCIServer); +begin + inherited Create(True); + FServer := AServer; + FreeOnTerminate := False; +end; + +procedure TTCIAcceptThread.Execute; +begin + FServer.AcceptLoop; +end; + +constructor TTCITickThread.Create(AServer: TTCIServer); +begin + inherited Create(True); + FServer := AServer; + FreeOnTerminate := False; +end; + +procedure TTCITickThread.Execute; +begin + FServer.TickLoop; +end; + +constructor TTCIClientThread.Create(AServer: TTCIServer; AClient: TTCIClient); +begin + inherited Create(True); + FServer := AServer; + FClient := AClient; + FreeOnTerminate := True; +end; + +procedure TTCIClientThread.Execute; +begin + try + FServer.HandleClient(FClient); + finally + FServer.ThreadDone; // Stop ждёт обнуления счётчика перед зачисткой + end; +end; + +{ IPv4 из строки в сетевом порядке. Свой, потому что WebServer держит такой же + в implementation и наружу не отдаёт. } +function TCIParseIPv4(const S: string): LongWord; +var + Oct: array[0..3] of LongWord; + N, i, Start: Integer; + Part: string; +begin + Result := 0; // INADDR_ANY + if (S = '') or (S = '0.0.0.0') then Exit; + N := 0; + Start := 1; + for i := 1 to Length(S) + 1 do + if (i > Length(S)) or (S[i] = '.') then + begin + if N > 3 then Exit; + Part := Copy(S, Start, i - Start); + Oct[N] := LongWord(StrToIntDef(Part, 0)) and $FF; + Inc(N); + Start := i + 1; + end; + if N <> 4 then Exit; + // Сетевой порядок байт: первый октет — младший байт in_addr. + Result := Oct[0] or (Oct[1] shl 8) or (Oct[2] shl 16) or (Oct[3] shl 24); +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + TTCIClient + ═══════════════════════════════════════════════════════════════════════════ } + +constructor TTCIClient.Create(AWs: TWsClient); +begin + inherited Create; + FWs := AWs; + FReady := False; + FRxSensors := False; + FRxSensorsMs := 200; + FTxSensors := False; + FTxSensorsMs := 200; +end; + +function TTCIClient.Send(const S: string): Boolean; +begin + Result := (FWs <> nil) and (FWs.State = wsOpen) and FWs.SendText(S); +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + TTCIServer — жизненный цикл + ═══════════════════════════════════════════════════════════════════════════ } + +constructor TTCIServer.Create; +{$IFDEF WINDOWS} +var WSAData: TWSAData; +{$ENDIF} +begin + inherited Create; + {$IFDEF WINDOWS} + WSAStartup($0202, WSAData); // refcounted: свой вызов на каждый сервер + {$ENDIF} + FListenSock := SOCK_INVALID; + FClientCount := 0; + FClientLock := TCriticalSection.Create; + FPort := TCI_DEFAULT_PORT; + FBindIP := '127.0.0.1'; +end; + +destructor TTCIServer.Destroy; +begin + Stop; + FClientLock.Free; + {$IFDEF WINDOWS} + WSACleanup; + {$ENDIF} + inherited; +end; + +procedure TTCIServer.Configure(APort: Word; const ABindIP: string); +begin + FPort := APort; + FBindIP := ABindIP; +end; + +function TTCIServer.Running: Boolean; +begin + Result := FRunning; +end; + +function TTCIServer.InitListen: Boolean; +var + Addr: {$IFDEF WINDOWS}TSockAddrIn{$ELSE}TInetSockAddr{$ENDIF}; + One: Integer; +begin + Result := False; + {$IFDEF WINDOWS} + FListenSock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + {$ELSE} + FListenSock := fpSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + {$ENDIF} + if FListenSock = SOCK_INVALID then Exit; + + One := 1; + {$IFDEF WINDOWS} + setsockopt(FListenSock, SOL_SOCKET, SO_REUSEADDR, @One, SizeOf(One)); + FillChar(Addr, SizeOf(Addr), 0); + Addr.sin_family := AF_INET; + Addr.sin_port := htons(FPort); + Addr.sin_addr.S_addr := TCIParseIPv4(FBindIP); + if bind(FListenSock, @Addr, SizeOf(Addr)) = SOCKET_ERROR then Exit; + if listen(FListenSock, 5) = SOCKET_ERROR then Exit; + {$ELSE} + fpSetSockOpt(FListenSock, SOL_SOCKET, SO_REUSEADDR, @One, SizeOf(One)); + FillChar(Addr, SizeOf(Addr), 0); + Addr.sin_family := AF_INET; + Addr.sin_port := htons(FPort); + Addr.sin_addr.s_addr := TCIParseIPv4(FBindIP); + if fpBind(FListenSock, @Addr, SizeOf(Addr)) <> 0 then Exit; + if fpListen(FListenSock, 5) <> 0 then Exit; + {$ENDIF} + Result := True; +end; + +function TTCIServer.Start: Boolean; +begin + Result := False; + if FRunning then Exit; + if not InitListen then + begin + if FListenSock <> SOCK_INVALID then + begin + SockClose(FListenSock); + FListenSock := SOCK_INVALID; + end; + Exit; + end; + FRunning := True; + FAcceptThread := TTCIAcceptThread.Create(Self); + TTCIAcceptThread(FAcceptThread).Start; + FTickThread := TTCITickThread.Create(Self); + TTCITickThread(FTickThread).Start; + Result := True; +end; + +procedure TTCIServer.Stop; +var i, Waited: Integer; +begin + if not FRunning then Exit; + FRunning := False; + + // Шаг 1: гасим listen-сокет. SockShutdown обязателен до close — иначе + // fpAccept в accept-потоке не разблокируется (см. WebServer.Stop). + if FListenSock <> SOCK_INVALID then + begin + SockShutdown(FListenSock); + SockClose(FListenSock); + FListenSock := SOCK_INVALID; + end; + + // Шаг 2: будим клиентские потоки, висящие в recv. + FClientLock.Enter; + try + for i := 0 to FClientCount - 1 do + if FClients[i] <> nil then + begin + FClients[i].Ws.State := wsClosed; + SockShutdown(FClients[i].Ws.Socket); + end; + finally + FClientLock.Leave; + end; + + // Шаг 3: свои потоки (клиентские — FreeOnTerminate, ждём их отдельно). + if FAcceptThread <> nil then begin FAcceptThread.WaitFor; FreeAndNil(FAcceptThread); end; + if FTickThread <> nil then begin FTickThread.WaitFor; FreeAndNil(FTickThread); end; + + // Шаг 4: даём клиентским потокам выйти самим. Освобождает клиента ТОТ, + // кто вынул его из массива (RemoveClient в клиентском потоке), — иначе + // Stop освободил бы объект из-под работающего потока. + Waited := 0; + while (FThreadCount > 0) and (Waited < 2000) do + begin + Sleep(10); + Inc(Waited, 10); + end; + + // Вырожденный случай: поток завис (не должно случаться — сокеты закрыты). + // Чистим остатки, чтобы не течь; объекты уже никем не используются. + FClientLock.Enter; + try + for i := 0 to FClientCount - 1 do + if FClients[i] <> nil then + begin + FClients[i].Ws.Free; + FreeAndNil(FClients[i]); + end; + FClientCount := 0; + finally + FClientLock.Leave; + end; +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Приём соединений + ═══════════════════════════════════════════════════════════════════════════ } + +procedure TTCIServer.AcceptLoop; +var + CSock: TSocket; + Addr: {$IFDEF WINDOWS}TSockAddrIn{$ELSE}TInetSockAddr{$ENDIF}; + ALen: {$IFDEF WINDOWS}Integer{$ELSE}TSockLen{$ENDIF}; + Client: TTCIClient; + T: TTCIClientThread; +begin + while FRunning do + begin + ALen := SizeOf(Addr); + {$IFDEF WINDOWS} + CSock := accept(FListenSock, @Addr, @ALen); + {$ELSE} + CSock := fpAccept(FListenSock, @Addr, @ALen); + {$ENDIF} + if CSock = SOCK_INVALID then + begin + if FRunning then Sleep(10); + Continue; + end; + if FClientCount >= TCI_MAX_CLIENTS then + begin + SockClose(CSock); + Continue; + end; + SockSetSndTimeout(CSock, TCI_SEND_TIMEOUT); + Client := TTCIClient.Create(TWsClient.Create(CSock)); + FClientLock.Enter; + try + FClients[FClientCount] := Client; + Inc(FClientCount); + finally + FClientLock.Leave; + end; + InterLockedIncrement(FThreadCount); + T := TTCIClientThread.Create(Self, Client); + T.Start; + end; +end; + +procedure TTCIServer.RemoveClient(Client: TTCIClient); +var i, j: Integer; +begin + if Client = nil then Exit; + if Assigned(FOnDisconnect) then FOnDisconnect(Client); + FClientLock.Enter; + try + for i := 0 to FClientCount - 1 do + if FClients[i] = Client then + begin + for j := i to FClientCount - 2 do FClients[j] := FClients[j + 1]; + FClients[FClientCount - 1] := nil; + Dec(FClientCount); + Break; + end; + finally + FClientLock.Leave; + end; + Client.Ws.Free; // закрывает сокет + Client.Free; +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Клиентский поток: handshake + разбор WS-фреймов + ═══════════════════════════════════════════════════════════════════════════ } + +procedure TTCIServer.HandleClient(Client: TTCIClient); +var + Ws: TWsClient; + R, HeaderEnd: Integer; + Header, HeaderLC, Key, AcceptKey, Response, Text: string; + Raw: array[0..4095] of Byte; + RawLen: Integer; + B0, B1: Byte; + Masked: Boolean; + PayLen, Need, i, j, Consumed, KPos, KEnd: Integer; + Mask: array[0..3] of Byte; + Payload: array of Byte; + Opcode: Byte; + Cmds: TStringList; +begin + Ws := Client.Ws; + RawLen := 0; + + // ── HTTP-запрос: ждём конца заголовков ─────────────────────────────────── + Header := ''; + HeaderEnd := 0; + repeat + R := SockRecv(Ws.Socket, @Raw[RawLen], SizeOf(Raw) - RawLen, 0); + if R <= 0 then begin Ws.State := wsClosed; Break; end; + Inc(RawLen, R); + SetLength(Header, RawLen); + Move(Raw[0], Header[1], RawLen); + HeaderEnd := System.Pos(#13#10#13#10, Header); + until (HeaderEnd > 0) or (RawLen >= SizeOf(Raw)); + + if (Ws.State = wsClosed) or (HeaderEnd = 0) then + begin + RemoveClient(Client); Exit; + end; + + Header := Copy(Header, 1, HeaderEnd + 3); + HeaderLC := LowerCase(Header); + + // Путь не проверяем: клиенты ходят на '/', но протокол его не оговаривает. + if System.Pos('upgrade: websocket', HeaderLC) = 0 then + begin + Response := 'HTTP/1.1 426 Upgrade Required'#13#10 + + 'Content-Length: 0'#13#10'Connection: close'#13#10#13#10; + Ws.SendRaw(Response[1], Length(Response)); + RemoveClient(Client); Exit; + end; + + Key := ''; + KPos := System.Pos('sec-websocket-key: ', HeaderLC); + if KPos > 0 then + begin + Key := Copy(Header, KPos + 19, 100); + KEnd := System.Pos(#13, Key); + if KEnd > 0 then Key := Copy(Key, 1, KEnd - 1); + Key := Trim(Key); + end; + AcceptKey := Base64EncodeBytes(SHA1(Key + TCI_WS_GUID), 20); + Response := 'HTTP/1.1 101 Switching Protocols'#13#10 + + 'Upgrade: websocket'#13#10 + + 'Connection: Upgrade'#13#10 + + 'Sec-WebSocket-Accept: ' + AcceptKey + #13#10#13#10; + if not Ws.SendRaw(Response[1], Length(Response)) then + begin + RemoveClient(Client); Exit; + end; + Ws.State := wsOpen; + + // Пачка инициализации + текущее состояние (§3.1) — дело адаптера. + if Assigned(FOnConnect) then FOnConnect(Client); + + // ── Цикл WS-сообщений ──────────────────────────────────────────────────── + Cmds := TStringList.Create; + try + Ws.BufLen := 0; + while FRunning and (Ws.State = wsOpen) do + begin + R := Ws.Recv; + if R <= 0 then Break; + + while Ws.BufLen >= 2 do + begin + B0 := Ws.BufData[0]; + B1 := Ws.BufData[1]; + Opcode := B0 and $0F; + Masked := (B1 and $80) <> 0; + PayLen := B1 and $7F; + + Need := 2; + if PayLen = 126 then Inc(Need, 2) + else if PayLen = 127 then Inc(Need, 8); + if Masked then Inc(Need, 4); + if Ws.BufLen < Need then Break; + + i := 2; + if PayLen = 126 then + begin + PayLen := (Ws.BufData[2] shl 8) or Ws.BufData[3]; + Inc(i, 2); + end + else if PayLen = 127 then + begin + PayLen := (Ws.BufData[6] shl 24) or (Ws.BufData[7] shl 16) or + (Ws.BufData[8] shl 8) or Ws.BufData[9]; + Inc(i, 8); + end; + + // Фрейм крупнее приёмного буфера TWsClient никогда не соберётся — + // BufLen упрётся в потолок и цикл встанет намертво. Рвём соединение: + // команд такой длины у TCI нет, а бинарные потоки от клиента (TX-аудио) + // мы пока не принимаем. + if Need + PayLen > 4096 then + begin + Ws.State := wsClosed; + Break; + end; + + if Ws.BufLen < Need + PayLen then Break; + + if Masked then + begin + Mask[0] := Ws.BufData[i]; Mask[1] := Ws.BufData[i+1]; + Mask[2] := Ws.BufData[i+2]; Mask[3] := Ws.BufData[i+3]; + Inc(i, 4); + end; + + SetLength(Payload, PayLen); + if PayLen > 0 then + begin + Move(Ws.BufData[i], Payload[0], PayLen); + if Masked then + for j := 0 to PayLen - 1 do + Payload[j] := Payload[j] xor Mask[j and 3]; + end; + + Consumed := i + PayLen; + if Ws.BufLen > Consumed then + Move(Ws.BufData[Consumed], Ws.BufData[0], Ws.BufLen - Consumed); + Ws.BufLen := Ws.BufLen - Consumed; + + case Opcode of + $01: // текст — одна или несколько команд в одном фрейме + begin + SetLength(Text, PayLen); + if PayLen > 0 then Move(Payload[0], Text[1], PayLen); + if Assigned(FOnCommand) then + begin + TCISplit(Text, Cmds); + for j := 0 to Cmds.Count - 1 do + FOnCommand(Client, Cmds[j]); + end; + end; + $02: ; // binary: TX-аудио от клиента — этап 2, пока игнорируем + $08: // close + begin + Ws.State := wsClosed; + Break; + end; + $09: // ping → pong + if PayLen > 0 then Ws.SendWsFrame($0A, Payload[0], PayLen) + else Ws.SendWsFrame($0A, PayLen, 0); + end; + end; + end; + finally + Cmds.Free; + end; + + RemoveClient(Client); +end; + +{ ═══════════════════════════════════════════════════════════════════════════ + Рассылка и обход + ═══════════════════════════════════════════════════════════════════════════ } + +procedure TTCIServer.Broadcast(const S: string; Skip: TTCIClient); +var i: Integer; +begin + if S = '' then Exit; + FClientLock.Enter; + try + for i := 0 to FClientCount - 1 do + if (FClients[i] <> nil) and (FClients[i] <> Skip) and FClients[i].Ready then + FClients[i].Send(S); + finally + FClientLock.Leave; + end; +end; + +procedure TTCIServer.EnumClients(Proc: TTCIClientEvent); +var i: Integer; +begin + if not Assigned(Proc) then Exit; + FClientLock.Enter; + try + for i := 0 to FClientCount - 1 do + if FClients[i] <> nil then Proc(FClients[i]); + finally + FClientLock.Leave; + end; +end; + +procedure TTCIServer.ThreadDone; +begin + InterLockedDecrement(FThreadCount); +end; + +function TTCIServer.ClientCount: Integer; +begin + Result := FClientCount; +end; + +procedure TTCIServer.TickLoop; +begin + while FRunning do + begin + Sleep(TCI_TICK_MS); + if not FRunning then Break; + if (FClientCount > 0) and Assigned(FOnTick) then FOnTick; + end; +end; + +end. diff --git a/doc/TCI Protocol_RU.pdf b/doc/TCI Protocol_RU.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0eba196d3279db597f2bd6bfc468ed87b93d68f4 GIT binary patch literal 482440 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

pC7g3awz(Gn@ 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


f&-*a} zTB?(;ZUe01`L^2^xfU9Mq4|JHRZPI>?`=cZja;aq5=m>S9)fCA)r}qaP#6pr5ll1s z``klv>I9_g`+f9z<;G~87;gXv;ZHf6`6Tez63aVw_s%nlSK@>>jM5!)x_0;w6?c#w zOKC;!DnU2*ns?L!1aF)j4V?98w1Yyt;>xHI=V484W_@PzI7*MUj`cAr@~^E8lsVDZ z7(Rc3l#Neq)vwKcwl>ZMD8@>DRar)9xNj2+fn2TN- zIG{Wh*Xn}x&DlD`p(w+xCK)HRsKp8pL^}ilXp_7UH~$0?v8oU>2~N<_+cFp?F7r2* zzRfYOt$uVQJy;;Rel@EUdcbVyx`@Bw8ioYpKg9N4B1 zP|odd{A1qJvE7z5=EukA;r;Q}GsDX)9P?wsAClMc_SQy0Y70b{-n8Y#LND{fR>-0l za<;pU)09XPZdqU#zud!!#1tMoYVri7?B;M3axiNU&9y~iQmHfcHK`tp}7 z)D5lUNm7bl?im!GS5gQpPj61125B~4qnWSQu=8$XF=CH9F4UsXQ8KtfLd&lU~AB>3DFx1__KW98qX{^}NRebY)x`bLzJ!mXo*87-Wm#+N5D>ck}!BB`jtFIlhYB`7i2sii2|g#F7Bl&cLaN|8!L zlp_P&_C@q=1C2q+z0kp`XI{px^B1wnI3Uw$-Ds8E3+5Ao^E;%R>+?DNR7(~b=UpM? z*Fufx+jl%U2=-X-x_s5~mWrLJtgK@IY(Lv=&_y~>MY^DEW=>FEMzzHTYX_0E`AQ9- zI!bxhU)TtWd4-C3_89^`jKN4xfWhhSQb%+Iusf|4@E2$@_MeOy?)}4HyPB7&A)0PZ zDw_dr{Pl3Hh8XOTiE^@FV0aOiB{<`b`V`_&$xi)oQqp!GzA%@{ES3}1X}Bn0o-n#(H7W<0b=wbD)Scg_Wl_{B5!o47RhoVHM*5t zsiSnN9^Yy=N>7GflVRV-@V=iT-`+1<$kez=8=$%JLAumk$$9BCyQtEt1Dn{wjN`IA z`&eZ2BEKedBmn<$q~0YqNrD_O<%uq(Gs_sFKuMbrGQC=j@%TkycVcZp$?be9HVa{9 zZAcjGq`}(O$?bgD_lXGpU1g|(=Bi185n3sDwhIZ$5CqMIqQ#|1E{FvR4;z3A=5Q=2 z%gZsIc)`G^oNo$5p4HK-_Vj&01BsN^JB`U6^rg=oKM<1QFQ|gEj=B6-GT6W9W@p|!_axlZfAQ6*NmbZ zg=h~zaT_~#x1e)vZ6~8ssOA!%a+&u>bb*SkrlVKTtcF|#msT}-J_?Jfi!8DDfy-$8 z<3SdAJ`(dr=J-g>(q$yK8EI0l)d6fgXM!wqd?W@5P4JMbM}#Al%*g3QXVdNjDdzZQ z%&U)#2glNPzt+iIe|@+~T>BD*656%=kq@S*mn&HeG1

eKw(Qu4K<)dUCb4DtN!! z03dYk7lq(1+GF_1(n}j4lfeq`jF3;kjepAUjfhWc1~DaF~9@uLlmW!aErR4RF?oMA^Ie5wWY`5~bt zddE7sEfVS$J+u|t)#(^bn(nlBql)iZMvI&4ye#@s(XcVs+H~@m`rcF41x4qeYpIs( zwPdkVbWf*W$0xNHiD@0yuD0$4u9%O*!21zN9k)0!QT?xEa|>-U5(U3PE>0GIf$0Ll zwi%zoYHgC8;}1L21pq?EC@_dD%VrD$);KmVBic1&kO)v%=99M8>O`}K#L&)od>^8w zwsJwK+_y4!)gYFO@B}7Ks;PexoTlHF#JB1(Dss3|L;R}OF6ξ%8V@h17063mYIa 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 @;U3 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 literal 0 HcmV?d00001 diff --git a/doc/TCI.md b/doc/TCI.md new file mode 100644 index 0000000..3ef7a0c --- /dev/null +++ b/doc/TCI.md @@ -0,0 +1,221 @@ +# TCI в EWSDR — статус реализации + +Ветка разработки: `feature/tci-protocol`. +Дата последнего обновления: 2026-08-17. + +Эталон протокола — «Протокол TCI, версия 2.0» Expert Electronics +(`doc/TCI Protocol_RU.pdf`, 12 января 2024). EWSDR выступает **сервером** +(как ExpertSDR3): порт слушаем мы, клиенты — логгеры, скиммеры, программы +цифровых видов, внешние усилители и коммутаторы. + +--- + +## 1. Архитектура + +``` +TCI-клиенты ──WebSocket──► TTCIServer ──► TTCIAdapter ──► TRadioController +логгер/скиммер/цифра транспорт команды + ядро + уведомления +``` + +| Файл | Назначение | +|---|---| +| `TCIProtocol.pas` (~380 строк) | Чистый слой протокола: разбор `имя:арг1,арг2;`, сборка строк, экранирование `^ ~ *`, словарь видов связи, пересчёт громкости/порога в дБ. Зависит только от RTL + `RadioModes`. | +| `TCIServer.pas` (~660 строк) | WebSocket-сервер: accept-поток, поток на клиента, HTTP-Upgrade, разбор фреймов, рассылка, тик 20 мс. Сокеты и фреймы переиспользованы из веб-подсистемы (`WebUtils`, `WsClient`). | +| `TCIAdapter.pas` (~1100 строк) | Мост к `TRadioController`: реализация команд, пачка инициализации, уведомления об изменениях состояния, измерители. | + +Принципы те же, что у CAT (см. `doc/CAT_STATUS.md`): + +- **TCI — равноправный клиент контроллера.** Никаких обращений к `MainForm`; + единственное исключение — стор спотов `TDXSpotStore`, который передаётся + адаптеру ссылкой (команды `SPOT`/`SPOT_DELETE`/`SPOT_CLEAR` кладут споты в + ту же базу, что и DX-кластер). +- **Потоки.** Геттеры читают поля контроллера напрямую из потока клиента; + сеттеры пишут параметр в scratch-поля под `FLock` и зовут + `FController.Invoke(SyncXxx)` — исполнение в потоке контроллера + (GUI = `TThread.Synchronize`). +- **Синхронизация клиентов.** Изменение любого поля контроллера приходит в + `OnState` (multicast-подписка `AddStateListener`) и рассылается всем + подключённым — как того требует §3.5 спецификации. Отвечающий на команду + клиент дополнительно получает прямой ответ. + +### 1.1 Настройки + +Секция `tci` в корне `settings.json`: + +```json +"tci": { "enabled": false, "port": 40001, "bind_addr": "127.0.0.1" } +``` + +UI — вкладка **Advanced → TCI Server** (галка, порт, интерфейс). В протоколе +**нет авторизации**: открытый наружу порт означает полный доступ к трансиверу, +поэтому умолчание слушает только петлю. + +### 1.2 Маппинг модели + +| TCI | EWSDR | +|---|---| +| приёмник (`TRX_COUNT`) | панадаптер: 0 = главный тракт, 1.. = доп. DDC-паны. Число = `BackendCaps.MaxPans` | +| канал A/B (`CHANNEL_COUNT` = 2) | у приёмника 0 — VFO A / VFO B; у панов 1.. — первый и второй слайс пана | +| `DDS` | центр панадаптера (`SetCenter` / `SetPanDDCFreq`) | +| `IF` | смещение канала от центра панорамы | +| `VFO` | абсолютная частота канала | +| передатчик (`arg1` у TRX/TUNE/DRIVE) | всегда один — главный тракт | + +--- + +## 2. Что реализовано + +### 2.1 Инициализация (§4.1) + +`PROTOCOL`, `DEVICE`, `RECEIVE_ONLY`, `TRX_COUNT`, `CHANNEL_COUNT`, +`VFO_LIMITS`, `IF_LIMITS`, `MODULATIONS_LIST`, `READY`. + +`READY` шлётся **после** полного дампа состояния: клиент, дождавшийся его, +уже знает всё. Границы частот берутся из `BackendCaps`; пока устройство не +подключено — 10 кГц…30 МГц. `IF_LIMITS` = ±sample rate/2, пересылается при +смене частоты дискретизации. + +Список видов связи: `am,sam,dsb,lsb,usb,cw,nfm,wfm,digl,digu,dmr,fmraw`. +`dmr`/`fmraw` — наше расширение (протокол расширяемый, §1.4). `CWL`/`CWU` +схлопываются в `cw`; при установке `cw` боковая сохраняется, если уже +телеграф, иначе выбирается по частоте (ниже 10 МГц — CWL). + +### 2.2 Двунаправленное управление (§4.2) + +Полностью проведено в контроллер: + +| Команда | Куда легло | +|---|---| +| `START` / `STOP` | `SetRun` | +| `DDS` | `SetCenter` / `SetPanDDCFreq` | +| `IF`, `VFO` | `SetVfoA/B`, `SetSliceTarget` | +| `MODULATION` | `SetMode` / `SetSliceMode` | +| `TRX` | `SetMOX` | +| `TUNE` | `SetTune` | +| `DRIVE` | `SetDrive` | +| `TUNE_DRIVE` | `FTXSettings.TUNLevel` через `SetTXSettings` | +| `SPLIT_ENABLE` | `SetSplit` | +| `RX_FILTER_BAND` | `SetFilterEdges` / `SetSliceFilter` | +| `VOLUME`, `MUTE` | `SetVolume`, `SetMute` (дБ ↔ 0..100) | +| `RX_MUTE`, `RX_VOLUME` | громкость/мьют слайса | +| `MON_VOLUME`, `MON_ENABLE` | `SetTXMonVolume`, `SetRxMuteOnTx` | +| `AGC_MODE` | `off`→Off, `fast`→Fast, `normal`→Medium | +| `AGC_GAIN` | `SetAGCTop` (AGC-T) | +| `RX_NR_ENABLE`, `RX_NB_ENABLE`, `RX_ANF_ENABLE` | `SetNR/SetNB/SetANF`, для панов — `SetSliceDSP` | +| `LOCK` | `SetVfoLock` | +| `SQL_ENABLE`, `SQL_LEVEL` | FM-шумоподавитель; дБ (-140..0) ↔ порог 0..100 | +| `CW_MACROS_SPEED`, `CW_KEYER_SPEED` | `TCWSettings.Speed` | +| `CW_MACROS_DELAY` | `TCWSettings.RFDelayMS` | + +### 2.3 Однонаправленное управление (§4.3) + +`TX_ENABLE` (по `BackendCaps.HasTX` + `TXProhibited`), `CW_MACROS_SPEED_UP/DOWN`, +`SPOT`, `SPOT_DELETE`, `SPOT_CLEAR` (в `TDXSpotStore`, спот виден на всех +панадаптерах), `RX_SENSORS_ENABLE`, `TX_SENSORS_ENABLE` (период — на клиента), +`IQ_SAMPLERATE`, `AUDIO_SAMPLERATE`, `AUDIO_STREAM_*`, `TX_STREAM_AUDIO_BUFFERING` +(значения принимаются и подтверждаются; сами потоки — этап 2). + +### 2.4 Уведомления (§4.4, §4.5) + +`RX_CHANNEL_SENSORS` + устаревшая `RX_SENSORS` (S-метр в дБм, период 30…1000 мс +на клиента), `TX_SENSORS`, `TX_FREQUENCY`, `VFO_LOCK`, `APP_FOCUS` +(активация/деактивация главного окна), `RX_CLICKED_ON_SPOT` + устаревшая +`CLICKED_ON_SPOT` (клик по подписи спота на любом панадаптере), +`CALLSIGN_SEND` (после `CW_MSG`). + +### 2.5 Телеграф (§3.2) + +`CW_MACROS`, `CW_MSG`, `CW_MACROS_STOP`, `CW_TERMINAL`. + +Текст приводится к тому, что понимает передатчик текста ewsdr (`CWXSend`): +экранирование `^ ~ *` снимается, `CALL$N` разворачивается в N повторов +позывного, префикс/суффикс `_` считаются пустыми. **Не поддержано:** шаг +скорости внутри текста (`<` / `>`) и слитная передача аббревиатур (`|SK|`) — +эти символы просто снимаются, потому что `TCWSender` работает на одной +скорости и не знает прос-знаков. Доотправка позывного (`cw_msg:arg1;`) +игнорируется: уже отданный в очередь текст не редактируется. + +--- + +## 3. Осознанные заглушки («эхо») + +Значения принимаются, хранятся в адаптере и рассылаются клиентам — так +синхронизация между несколькими клиентами остаётся честной, но на радио они +не влияют, потому что соответствующего тракта в EWSDR нет: + +| Команда | Причина | +|---|---| +| `RIT_ENABLE`, `RIT_OFFSET`, `XIT_ENABLE`, `XIT_OFFSET` | расстройки RX/TX в контроллере нет вообще | +| `RX_BIN_ENABLE` | псевдостерео не реализовано | +| `RX_ANC_ENABLE`, `RX_APF_ENABLE`, `RX_DSE_ENABLE`, `RX_NF_ENABLE` | таких блоков в тракте нет | +| `RX_NB_PARAM` | параметры NB в WDSP наружу не выведены | +| `RX_BALANCE` | баланса каналов у слайса нет | +| `DIGL_OFFSET`, `DIGU_OFFSET` | смещения цифровых мод не реализованы | +| `RX_CHANNEL_ENABLE` | канал B главного приёмника — это VFO B, он есть всегда; создание второго слайса на пане по TCI — этап 2 | +| `SET_IN_FOCUS` | окно программы не поднимаем | + +Отдельно: у `TX_SENSORS` второй аргумент — уровень микрофона; измерителя +микрофона в EWSDR нет, шлём нижнюю границу шкалы (-60 дБм), чтобы клиент не +рисовал случайные значения. Третий аргумент (RMS) и четвёртый (пик) отдаём +одинаковыми — в телеметрии платы одно значение forward power. + +У `TRX` третий аргумент (источник сигнала `tci`/`mic1`/…) игнорируется: +аудио по TCI ещё нет, модуляция берётся из выбранного в программе входа. + +--- + +## 4. Этап 2 — бинарные потоки (§3.4) + +Не реализовано ничего из потоков; команды управления ими принимаются, но +данные не идут. Что нужно сделать: + +1. **Заголовок блока** уже описан — `TTCIStreamHeader` в `TCIProtocol.pas` + (16 × uint32 + сэмплы). +2. **`RX_AUDIO_STREAM`** — нужен multicast-тап RX-аудио в контроллере. + Сейчас есть только `OnAudioConsume` — одиночный перехват, которым владеет + веб-адаптер (он же глушит локальный звук). Для TCI нужен именно тап + «послушать, не забирая», по образцу `AddStateListener`. +3. **`TX_AUDIO_STREAM` + `TX_CHRONO`** — приём бинарных фреймов от клиента + (сейчас `TCIServer` их отбрасывает; приёмный буфер `TWsClient` — 4 КБ, под + 16 КБ блоков его придётся растить) и подача в TX-тракт наравне с + веб-микрофоном (`PushMicSamples`). +4. **`IQ_STREAM`** — тап сырого IQ в `TWDSPEngine.PushIQItemToDSP` (как у + декодера маяка), с децимацией до `IQ_SAMPLERATE` (48/96/192/384 кГц). +5. **`LINEOUT_STREAM` + `LINE_OUT_RECORDER_*`** — запись в WAV/MP3. + +Также в очереди: `RX_CHANNEL_ENABLE` как реальное создание/удаление второго +слайса пана и `SET_IN_FOCUS`. + +--- + +## 5. Проверено + +Стендом (WS-клиент на сыром сокете, без внешних библиотек): + +- **Транспорт:** handshake, маска входящих фреймов, несколько команд в одном + фрейме, регистронезависимость, экранированный текст, ping/pong, игнорирование + бинарных фреймов, рассылка всем клиентам, чистая остановка сервера с живым + клиентом (потоки дренируются, зависаний нет). +- **Сквозной прогон** с настоящим `TRadioController` (движки созданы, железо не + подключено): пачка инициализации из 57 строк со всеми обязательными + командами и `READY` в конце; `VFO`, `MODULATION` (`cw` на 7 МГц дал CWL), + `RX_FILTER_BAND`, `DRIVE`, `VOLUME`, `MUTE`, `AGC_GAIN`, `LOCK`, + `CW_MACROS_SPEED`, `SPOT`, `RIT_*` — состояние контроллера после прогона + совпало с посланным; чтение (`vfo:0,1;`) отвечает; `RX_SENSORS_ENABLE:true,100` + даёт поток `rx_channel_sensors` с заданным периодом. +- **Устойчивость:** исключение в обработке команды не рвёт соединение — клиенту + уходит `tci_error:<команда>,<сообщение>;`, остальные команды продолжают + работать (проверено на контроллере без движков, где `SetMode`/`SetCWSettings` + падают с AV на неинициализированном `FNetwork`). + +Сборка: `lazbuild -B --ws=qt6 ewsdr.lpr` и `./build-ewsdrd.sh` (демон собирается, +TCI в его граф пока не заведён — юниты LCL-free, подключается одной строкой в +`ewsdrd.lpr`, как web). + +**На реальном железе и с реальным клиентом (Log4OM/N1MM/WSJT-X/CW Skimmer) не +проверялось.** + +Ответ на команду-установку клиент получает дважды: прямым ответом и рассылкой +из `OnState`. Это осознанно — дубли идемпотентны, а рассылка нужна для тех +случаев, когда значение поменял не клиент, а оператор.