mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
fix(pluto): enable antenna switch for stock model
This commit is contained in:
+5
-22
@@ -201,8 +201,7 @@ const
|
|||||||
TX_FIR_CUT = 40000; // частота среза анти-имидж ФНЧ, Гц (покрывает SSB/NFM/AM/data)
|
TX_FIR_CUT = 40000; // частота среза анти-имидж ФНЧ, Гц (покрывает SSB/NFM/AM/data)
|
||||||
PLUTO_TX_OFF = -89.75; // макс. аттенюация AD9361 — TX практически выключен
|
PLUTO_TX_OFF = -89.75; // макс. аттенюация AD9361 — TX практически выключен
|
||||||
|
|
||||||
// Детект второго антенного входа (тела ниже — нужны до Connect).
|
// Детект доступности антенного мультиплексора (тело ниже — нужно до Connect).
|
||||||
function BoardHasSecondRxPort(const Model: string): Boolean; forward;
|
|
||||||
function DebugAttrExists(Dev: Piio_device; const Attr: string): Boolean; forward;
|
function DebugAttrExists(Dev: Piio_device; const Attr: string): Boolean; forward;
|
||||||
|
|
||||||
type
|
type
|
||||||
@@ -614,10 +613,10 @@ begin
|
|||||||
// сохранёнки/фолбэка ProbeURI ('AD936x SDR') и не содержать имени платы.
|
// сохранёнки/фолбэка ProbeURI ('AD936x SDR') и не содержать имени платы.
|
||||||
PV := iio_context_get_attr_value(FCtx, 'hw_model');
|
PV := iio_context_get_attr_value(FCtx, 'hw_model');
|
||||||
if PV <> nil then FDevice.Model := string(PV);
|
if PV <> nil then FDevice.Model := string(PV);
|
||||||
// 1R1T-образ: RX-мультиплексор AD9361. Гейт по МОДЕЛИ — у стокового Pluto
|
// 1R1T-образ: RX/TX-мультиплексор AD9361. Определяем по реально
|
||||||
// второй вход никуда не разведён (кремний двухканальный, а SMA один), так что
|
// доступным debug-атрибутам, а не по hw_model: у обычного Pluto второй
|
||||||
// селектор там показывать нельзя: он дал бы «мёртвую» антенну.
|
// канал могли вывести аппаратно, не меняя строку модели.
|
||||||
FRxMuxAvail := (not FRx2Avail) and BoardHasSecondRxPort(FDevice.Model) and
|
FRxMuxAvail := (not FRx2Avail) and
|
||||||
Assigned(iio_device_debug_attr_write) and
|
Assigned(iio_device_debug_attr_write) and
|
||||||
DebugAttrExists(FPhy, 'adi,1rx-1tx-mode-use-rx-num') and
|
DebugAttrExists(FPhy, 'adi,1rx-1tx-mode-use-rx-num') and
|
||||||
DebugAttrExists(FPhy, 'adi,1rx-1tx-mode-use-tx-num') and
|
DebugAttrExists(FPhy, 'adi,1rx-1tx-mode-use-tx-num') and
|
||||||
@@ -759,22 +758,6 @@ begin
|
|||||||
for k := 0 to TX_FIR_TAPS - 1 do begin FTxDlI[k] := 0; FTxDlQ[k] := 0; end;
|
for k := 0 to TX_FIR_TAPS - 1 do begin FTxDlI[k] := 0; FTxDlQ[k] := 0; end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function BoardHasSecondRxPort(const Model: string): Boolean;
|
|
||||||
// Есть ли у платы физический разъём RX2. Кремний AD9361/AD9363 двухканальный на
|
|
||||||
// ЛЮБОЙ плате, включая стоковый Pluto, — но у Pluto второй канал никуда не выведен,
|
|
||||||
// поэтому переключать на него нельзя (антенны там нет). Список плат с двумя RX SMA.
|
|
||||||
const
|
|
||||||
BOARDS: array[0..4] of string = ('libresdr', 'antsdr', 'pluto+', 'plutoplus', 'e200');
|
|
||||||
var
|
|
||||||
M: string;
|
|
||||||
i: Integer;
|
|
||||||
begin
|
|
||||||
Result := False;
|
|
||||||
M := LowerCase(StringReplace(Model, ' ', '', [rfReplaceAll]));
|
|
||||||
for i := Low(BOARDS) to High(BOARDS) do
|
|
||||||
if Pos(BOARDS[i], M) > 0 then Exit(True);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function DebugAttrExists(Dev: Piio_device; const Attr: string): Boolean;
|
function DebugAttrExists(Dev: Piio_device; const Attr: string): Boolean;
|
||||||
var Buf: array[0..63] of AnsiChar;
|
var Buf: array[0..63] of AnsiChar;
|
||||||
begin
|
begin
|
||||||
|
|||||||
+2
-2
@@ -3263,8 +3263,8 @@ end;
|
|||||||
|
|
||||||
procedure TSettingsForm.SetAntennaBackend(IsAD936x, HasAntSwitch: Boolean);
|
procedure TSettingsForm.SetAntennaBackend(IsAD936x, HasAntSwitch: Boolean);
|
||||||
// Переключает вкладку Antenna: Alex-таблица (openHPSDR) либо таблица разъёмов
|
// Переключает вкладку Antenna: Alex-таблица (openHPSDR) либо таблица разъёмов
|
||||||
// AD936x. HasAntSwitch=False (стоковый Pluto, один разъём) — Alex-таблица тоже
|
// AD936x. HasAntSwitch=False (прошивка не даёт доступа к мультиплексору) —
|
||||||
// не нужна: показываем пустую вкладку с поясняющим подзаголовком.
|
// Alex-таблица тоже не нужна: показываем пустую вкладку с поясняющим подзаголовком.
|
||||||
begin
|
begin
|
||||||
FLoading := True;
|
FLoading := True;
|
||||||
try
|
try
|
||||||
|
|||||||
Reference in New Issue
Block a user