From 3612f32199b95e8fcf720482efeae29461f0f607 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Wed, 24 Jun 2026 11:59:11 +0300 Subject: [PATCH] fix: web connect on GUI resolves device Kind/URI (Pluto vs HPSDR) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SyncWebConnect (web-коннект на десктопной GUI) собирал устройство сам только из IP+BoardType, оставляя Kind=0 (=bkHPSDR) и пустые URI/Serial. Из-за этого сохранённый Pluto подключался как openHPSDR → UDP discovery → Hardware Timeout (web при этом оптимистично показывал connected / Unknown Board). Десктоп-путь и демон уже шли через ResolveDevice. Теперь SyncWebConnect тоже зовёт FController.ResolveDevice(IP) — единый резолв (восстанавливает Kind/URI/Serial/BoardType/MAC из стора по IP или URI) для всех трёх входов. Co-Authored-By: Claude Opus 4.8 --- MainForm.pas | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/MainForm.pas b/MainForm.pas index 525c042..43dc0e4 100644 --- a/MainForm.pas +++ b/MainForm.pas @@ -4992,24 +4992,13 @@ end; procedure TMainForm.SyncWebConnect; var Dev: THPSDRDevice; - i: Integer; begin if FController.FNetwork.Connected then Exit; // уже подключены - FillChar(Dev, SizeOf(Dev), 0); - Dev.IPAddress := FWebSyncStr1; - // BoardType (тип платы не определяется при Connect — только из discovery/saved): - // сначала найденное устройство (есть и MAC для preload), иначе сохранённое по IP - // — как десктоп берёт FPendingBoardType из GetSavedBoardType. - i := FController.FDeviceStore.FindDiscoveredByIP(FWebSyncStr1); - if i >= 0 then - Dev.BoardType := FController.FDeviceStore.Discovered(i).BoardType - else - for i := 0 to FController.FDeviceStore.SavedCount - 1 do - if FController.FDeviceStore.Saved(i).IPAddress = FWebSyncStr1 then - begin - Dev.BoardType := FController.FDeviceStore.Saved(i).BoardType; - Break; - end; + // Восстанавливаем Kind/URI/Serial/BoardType/MAC из стора (discovered/saved) по + // IP или URI — как десктоп-путь и демон (ConnectTo(ResolveDevice(...))). Без этого + // saved Pluto коннектился с Kind=0 (=bkHPSDR) → UDP discovery → Hardware Timeout, + // хотя web оптимистично показывал "connected / Unknown Board". + Dev := FController.ResolveDevice(FWebSyncStr1); StartWithDevice(Dev); end;