mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
fix(dmr): block MOX and tune on receive mode
This commit is contained in:
+18
-4
@@ -416,6 +416,7 @@ type
|
||||
|
||||
// Public UI update (called from sync objects)
|
||||
procedure UpdateTXMeters;
|
||||
procedure UpdateTXControlAvailability;
|
||||
procedure UpdateStatusField7; // поле 7: PLL (HPSDR) или beacon (Pluto)
|
||||
procedure UpdateStatusField3; // поле 3: Supply (HPSDR) или Temp/RSSI (Pluto)
|
||||
function BeaconStatusText: string; // компактный статус QO-100 beacon lock
|
||||
@@ -1362,6 +1363,7 @@ begin
|
||||
(FController.FTxSliceId = 0);
|
||||
ApplySpecViewGridFromState; // сетка спектра под активный тракт
|
||||
RefreshTxIndicators; // TX-бейджи флагов (какой слайс передаёт)
|
||||
UpdateTXControlAvailability;
|
||||
end; // (DUC-очередь сбрасывает SetMOX)
|
||||
rfTuning:
|
||||
StyleButton(BtnTUN, FController.FTuning);
|
||||
@@ -1374,7 +1376,7 @@ begin
|
||||
InhibitSleep;
|
||||
BtnStartStop.Caption := 'STOP';
|
||||
StyleButton(BtnStartStop, True);
|
||||
BtnMOX.Enabled := True;
|
||||
UpdateTXControlAvailability;
|
||||
UpdateAddPanButton; // «⊞» доступна только в Run
|
||||
ResizeSpectrumPanels;
|
||||
RestorePanWorkspace; // паны+слайсы прошлой сессии
|
||||
@@ -1384,7 +1386,7 @@ begin
|
||||
UninhibitSleep;
|
||||
BtnStartStop.Caption := 'START';
|
||||
StyleButton(BtnStartStop, False);
|
||||
BtnMOX.Enabled := False;
|
||||
UpdateTXControlAvailability;
|
||||
// Снимок панов уже сделан хуком OnBeforeStop=SavePanWorkspace (до
|
||||
// гашения DDC в StopRunning). Здесь только разрешаем повторный
|
||||
// restore на следующем старте.
|
||||
@@ -1460,6 +1462,7 @@ begin
|
||||
FController.FFilterBW := SavedFilterBW;
|
||||
for i := 0 to FILT_COUNT - 1 do StyleButton(BtnFilter[i], i = FController.FFilter);
|
||||
SyncSpecViewFreq; // иначе полоса фильтра рисуется под старый режим
|
||||
UpdateTXControlAvailability;
|
||||
end;
|
||||
rfFilter:
|
||||
begin
|
||||
@@ -1945,6 +1948,7 @@ begin
|
||||
BtnTUN := MakeBtn(PanelTX, 'TUN',
|
||||
LeftPanelButtonLeft(LEFT_W, 4, 1), 16,
|
||||
LeftPanelButtonWidth(LEFT_W, 4, 1), BTN_SM, BtnTUNClick);
|
||||
UpdateTXControlAvailability;
|
||||
|
||||
BtnDUP := MakeBtn(PanelTX, 'DUP',
|
||||
LeftPanelButtonLeft(LEFT_W, 4, 0), 44,
|
||||
@@ -3369,7 +3373,7 @@ begin
|
||||
UninhibitSleep;
|
||||
FController.FNetwork.SetRunAndFreq(False, XvtrTranslate(FController.FCenterFreq), XvtrTranslate(FController.FCenterFreq), 0);
|
||||
SetRadioOfflineStatus('Hardware timeout');
|
||||
BtnMOX.Enabled := False;
|
||||
UpdateTXControlAvailability;
|
||||
Exit;
|
||||
end;
|
||||
// После первого пакета — следим чтобы поток не прерывался более 3 сек
|
||||
@@ -3381,7 +3385,7 @@ begin
|
||||
UninhibitSleep;
|
||||
FController.FNetwork.SetRunAndFreq(False, XvtrTranslate(FController.FCenterFreq), XvtrTranslate(FController.FCenterFreq), 0);
|
||||
SetRadioOfflineStatus('Connection lost');
|
||||
BtnMOX.Enabled := False;
|
||||
UpdateTXControlAvailability;
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
@@ -3516,6 +3520,16 @@ begin
|
||||
UpdateStatusField3; // Supply (openHPSDR) или Temp/RSSI (Pluto)
|
||||
end;
|
||||
|
||||
procedure TMainForm.UpdateTXControlAvailability;
|
||||
var Allowed: Boolean;
|
||||
begin
|
||||
if (BtnMOX = nil) or (BtnTUN = nil) or (FController = nil) then Exit;
|
||||
Allowed := FController.FRunning and
|
||||
(FController.ActiveTXMode <> MODE_DMR);
|
||||
BtnMOX.Enabled := Allowed;
|
||||
BtnTUN.Enabled := Allowed;
|
||||
end;
|
||||
|
||||
procedure TMainForm.UpdateStatusField3;
|
||||
// Поле 3 статус-бара. openHPSDR — supply V/A (HP status). Pluto — температура
|
||||
// чипа и RSSI приёмника (нет PA → supply неприменим). Значения берём из
|
||||
|
||||
Reference in New Issue
Block a user