add Alex setup

This commit is contained in:
2026-05-14 18:52:50 +03:00
parent ec596bb0c8
commit aea9f02df8
4 changed files with 559 additions and 52 deletions
+27 -1
View File
@@ -159,6 +159,7 @@ type
FAudioOutDevName: string; // текущее имя выходного устройства
FAudioInDevName: string; // текущее имя входного устройства (TX mic)
FTXSettings: TTXSettings; // полный TX-конфиг (загружается per-MAC)
FAlexSettings: TAlexSettings; // per-band antenna/routing config (Alex board)
FWDSPReady: Boolean; // True когда WDSP открыт и работает
// ---- State ----
@@ -560,6 +561,7 @@ type
const SerPort: array of string;
const SerBaud, SerDataBits, SerStopBits, SerParity: array of Integer;
TcpEnabled: Boolean; TcpPort: Integer);
procedure OnAlexSettingsChange(const A: TAlexSettings);
// -------------------------------------------------------------------------
procedure BtnWfAGCClick(Sender: TObject);
procedure BtnWfNFClick(Sender: TObject);
@@ -1173,8 +1175,9 @@ begin
FNetwork.OnHPStatus := OnHPStatusCB;
FNetwork.OnDDCIQ := OnDDCIQCB;
FNetwork.OnMicPacket := OnMicPacketCB;
// Дефолты TX (на случай если устройство ещё не выбрано).
// Дефолты TX и Alex (на случай если устройство ещё не выбрано).
TSettingsManager.DefaultTX(FTXSettings);
TSettingsManager.DefaultAlex(FAlexSettings);
BuildUI;
StyleSpanButton(BtnSpan48k, FSampleRate = 48000);
@@ -3333,6 +3336,7 @@ begin
begin
SaveCurrentBand;
FSettings.SaveGlobal(FDevMAC, MakeGlobalSettings);
FSettings.SaveAlex(FDevMAC, FAlexSettings);
end;
FSettings.SaveStartupPreview(FVfoA, FVfoB, FSampleRate);
FSettings.Save;
@@ -3467,6 +3471,9 @@ begin
CATApplySettings(G_Settings);
// TX-настройки per-device — отдельная JSON-секция "tx"
FSettings.LoadTX(FDevMAC, FTXSettings);
// Alex-настройки per-device (антенны/маршрутизация)
FSettings.LoadAlex(FDevMAC, FAlexSettings);
FNetwork.SetAlexConfig(FAlexSettings);
FTXSpecRefLevel := FTXSettings.TXSpecRefLevel;
FTXSpecRange := FTXSettings.TXSpecRange;
if FTXSettings.TXSpecGridStep > 0 then
@@ -4482,6 +4489,10 @@ procedure TMainForm.ApplyMOX(Active: Boolean);
var
WasTransmitting: Boolean;
begin
// Safety: block TX on bands marked DoNotTx in Alex config
if Active and FDevConnected
and FAlexSettings.DoNotTx[EnsureRange(FCurrentBand, 0, 10)] then
Exit;
WasTransmitting := FTransmitting;
FTransmitting := Active;
FDUCPendingCount := 0;
@@ -5437,6 +5448,18 @@ begin
end;
end;
procedure TMainForm.OnAlexSettingsChange(const A: TAlexSettings);
begin
FAlexSettings := A;
if FNetwork.Connected then
FNetwork.SetAlexConfig(A);
if FDevConnected then
begin
FSettings.SaveAlex(FDevMAC, A);
FSettings.Save;
end;
end;
procedure TMainForm.TrkVolumeChange(Sender: TObject);
begin
FVolume := TrkVolume.Position;
@@ -5721,9 +5744,12 @@ begin
SF.OnCATChange := OnCATSettingsChange;
SF.OnThemeChange := SetLightTheme;
SF.OnTXChange := OnTXSettingsChange;
SF.OnAlexChange := OnAlexSettingsChange;
end;
SF := TSettingsForm(FSettingsForm);
SF.LoadTXSettings(FTXSettings);
SF.LoadAlexSettings(FAlexSettings,
IfThen(FNetwork.Connected, FNetwork.Device.BoardType, FPendingBoardType));
SF.LoadPASettings(FPAMaxPower, FPABandCal);
SF.LoadCATSettings(
FCATLastGlobal.CATSerialEnabled,