From b00c0d02a0f66568f7ca822263fbc923bf982863 Mon Sep 17 00:00:00 2001 From: Uladzimir Karpenka Date: Sat, 16 May 2026 21:00:20 +0300 Subject: [PATCH] Fix Alex XVTR DDC In: block bits 8+11 when transverter not active CalcAlex0: Alex.RxOnly[band]=3 (XVTR checkbox in Antenna tab) now sets XVTR DDC In only when XvtrActive=True (FXvtrEnable). Matches Thetis Alex.cs behaviour: "do not use XVTR ant port if not using transverter". Co-Authored-By: Claude Sonnet 4.6 --- HPSDRNetwork.pas | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/HPSDRNetwork.pas b/HPSDRNetwork.pas index 418f3e7..fa1731b 100644 --- a/HPSDRNetwork.pas +++ b/HPSDRNetwork.pas @@ -1134,7 +1134,8 @@ function CalcAlex0(RXFreqHz, TXFreqHz: Double; const Alex: TAlexSettings; XvtrRxAnt: Byte = 0; XvtrUseRxDDCIn: Boolean = False; - XvtrDisablePA: Boolean = False): LongWord; + XvtrDisablePA: Boolean = False; + XvtrActive: Boolean = False): LongWord; var txf: Double; BandIdx: Integer; @@ -1237,8 +1238,11 @@ begin or $00000800; // bit 11: Bypass relay 2: Result := Result or $00000400 // bit 10: Ext2 or $00000800; // bit 11: Bypass relay - 3: Result := Result or $00000100 // bit 8: XVTR DDC In - or $00000800; // bit 11: Bypass relay + // XVTR DDC In только когда трансвертер активен — иначе порт молчит + // (аналог Thetis Alex.cs: "do not use XVTR ant port if not using transverter") + 3: if XvtrActive then + Result := Result or $00000100 // bit 8: XVTR DDC In + or $00000800; // bit 11: Bypass relay end; end; end; @@ -1405,7 +1409,8 @@ begin begin Alex0 := CalcAlex0(FCurrentRXFreq, FCurrentTXFreq, FIsTransmitting, IsOrion2, FAlexConfig, - FXvtrRxAntOverride, FXvtrUseRxDDCIn, FXvtrDisablePA); + FXvtrRxAntOverride, FXvtrUseRxDDCIn, FXvtrDisablePA, + FXvtrEnable); Buf[1432] := (Alex0 shr 24) and $FF; Buf[1433] := (Alex0 shr 16) and $FF; Buf[1434] := (Alex0 shr 8) and $FF;