diff --git a/MainForm.pas b/MainForm.pas index 66b6ac5..05147f6 100644 --- a/MainForm.pas +++ b/MainForm.pas @@ -330,6 +330,9 @@ type Count: Integer); procedure OnWDSPOpenDone(Success: Boolean); procedure DoConnectDevice(const Dev: THPSDRDevice); + // Старт с уже выбранным устройством (preload rate + WDSP open + connect). + // Переиспользуется десктоп-диалогом и web-оверлеем — без модального диалога. + procedure StartWithDevice(const Dev: THPSDRDevice); // DSP/Audio callbacks (вызываются из рабочих потоков) procedure OnAudioReady(const Left, Right: array of Single; Count: Integer); @@ -3561,12 +3564,7 @@ end; procedure TMainForm.BtnStartStopClick(Sender: TObject); var - i: Integer; Dev: THPSDRDevice; - PreG: TGlobalSettings; - PreBands: array[0..CFG_BAND_COUNT-1] of TBandSettings; - PreloadRate: Integer; - FoundByIP: Boolean; AutoIP: string; begin if FController.FNetwork.Connected then @@ -3637,11 +3635,24 @@ begin end; end; - // Создаём запись устройства из IP + BoardType из диалога если есть + // Создаём запись устройства из IP + BoardType (из диалога/autostart) и стартуем. FillChar(Dev, SizeOf(Dev), 0); Dev.IPAddress := FPendingIP; Dev.BoardType := FPendingBoardType; + StartWithDevice(Dev); +end; +procedure TMainForm.StartWithDevice(const Dev: THPSDRDevice); +// Запуск с уже выбранным устройством — общий путь для десктоп-диалога и +// web-оверлея (без модального диалога). Подбор sample rate до WDSP, открытие +// WDSP (async) и подключение. +var + PreloadRate: Integer; + FoundByIP: Boolean; + i: Integer; + PreG: TGlobalSettings; + PreBands: array[0..CFG_BAND_COUNT-1] of TBandSettings; +begin // Подбираем sample rate до открытия WDSP, чтобы не делать двойной Open: // 1) Open на 192k, 2) сразу ChangeSampleRate+Open ещё раз. // Если устройство уже было обнаружено (есть MAC) и есть сохранённый профиль,