mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +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)
|
||||
PLUTO_TX_OFF = -89.75; // макс. аттенюация AD9361 — TX практически выключен
|
||||
|
||||
// Детект второго антенного входа (тела ниже — нужны до Connect).
|
||||
function BoardHasSecondRxPort(const Model: string): Boolean; forward;
|
||||
// Детект доступности антенного мультиплексора (тело ниже — нужно до Connect).
|
||||
function DebugAttrExists(Dev: Piio_device; const Attr: string): Boolean; forward;
|
||||
|
||||
type
|
||||
@@ -614,10 +613,10 @@ begin
|
||||
// сохранёнки/фолбэка ProbeURI ('AD936x SDR') и не содержать имени платы.
|
||||
PV := iio_context_get_attr_value(FCtx, 'hw_model');
|
||||
if PV <> nil then FDevice.Model := string(PV);
|
||||
// 1R1T-образ: RX-мультиплексор AD9361. Гейт по МОДЕЛИ — у стокового Pluto
|
||||
// второй вход никуда не разведён (кремний двухканальный, а SMA один), так что
|
||||
// селектор там показывать нельзя: он дал бы «мёртвую» антенну.
|
||||
FRxMuxAvail := (not FRx2Avail) and BoardHasSecondRxPort(FDevice.Model) and
|
||||
// 1R1T-образ: RX/TX-мультиплексор AD9361. Определяем по реально
|
||||
// доступным debug-атрибутам, а не по hw_model: у обычного Pluto второй
|
||||
// канал могли вывести аппаратно, не меняя строку модели.
|
||||
FRxMuxAvail := (not FRx2Avail) 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-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;
|
||||
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;
|
||||
var Buf: array[0..63] of AnsiChar;
|
||||
begin
|
||||
|
||||
Reference in New Issue
Block a user