mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
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:
+5
-16
@@ -4992,24 +4992,13 @@ end;
|
|||||||
procedure TMainForm.SyncWebConnect;
|
procedure TMainForm.SyncWebConnect;
|
||||||
var
|
var
|
||||||
Dev: THPSDRDevice;
|
Dev: THPSDRDevice;
|
||||||
i: Integer;
|
|
||||||
begin
|
begin
|
||||||
if FController.FNetwork.Connected then Exit; // уже подключены
|
if FController.FNetwork.Connected then Exit; // уже подключены
|
||||||
FillChar(Dev, SizeOf(Dev), 0);
|
// Восстанавливаем Kind/URI/Serial/BoardType/MAC из стора (discovered/saved) по
|
||||||
Dev.IPAddress := FWebSyncStr1;
|
// IP или URI — как десктоп-путь и демон (ConnectTo(ResolveDevice(...))). Без этого
|
||||||
// BoardType (тип платы не определяется при Connect — только из discovery/saved):
|
// saved Pluto коннектился с Kind=0 (=bkHPSDR) → UDP discovery → Hardware Timeout,
|
||||||
// сначала найденное устройство (есть и MAC для preload), иначе сохранённое по IP
|
// хотя web оптимистично показывал "connected / Unknown Board".
|
||||||
// — как десктоп берёт FPendingBoardType из GetSavedBoardType.
|
Dev := FController.ResolveDevice(FWebSyncStr1);
|
||||||
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;
|
|
||||||
StartWithDevice(Dev);
|
StartWithDevice(Dev);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user