fix: web connect on GUI resolves device Kind/URI (Pluto vs HPSDR)

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 <noreply@anthropic.com>
This commit is contained in:
2026-06-24 11:59:11 +03:00
co-authored by Claude Opus 4.8
parent fa6a804331
commit 3612f32199
+5 -16
View File
@@ -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;