fix(ui): show DMR status without replacing PLL

This commit is contained in:
2026-07-14 21:05:59 +03:00
parent 9f828f747f
commit 8b28986fec
2 changed files with 49 additions and 16 deletions
+14 -5
View File
@@ -418,6 +418,7 @@ type
procedure UpdateTXMeters;
procedure UpdateTXControlAvailability;
procedure UpdateStatusField7; // поле 7: PLL (HPSDR) или beacon (Pluto)
procedure UpdateDMRStatus; // поле 8: только при активном DMR
procedure UpdateStatusField3; // поле 3: Supply (HPSDR) или Temp/RSSI (Pluto)
function BeaconStatusText: string; // компактный статус QO-100 beacon lock
function DMRStatusText: string; // sync/type/polarity DMR front-end
@@ -1463,6 +1464,7 @@ begin
for i := 0 to FILT_COUNT - 1 do StyleButton(BtnFilter[i], i = FController.FFilter);
SyncSpecViewFreq; // иначе полоса фильтра рисуется под старый режим
UpdateTXControlAvailability;
UpdateDMRStatus;
end;
rfFilter:
begin
@@ -2984,6 +2986,7 @@ begin
SetStatusText(5, 'TX idle');
SetStatusText(6, 'SEQ --');
SetStatusText(7, 'PLL --');
UpdateDMRStatus;
if FSpecView <> nil then
FSpecView.ADCOverloadVisible := False;
if PbSpectrum <> nil then
@@ -3518,6 +3521,7 @@ procedure TMainForm.UpdateTXMeters;
// в TRadioController.ApplyHPStatus.
begin
UpdateStatusField7; // PLL (openHPSDR) или статус beacon lock (Pluto)
UpdateDMRStatus; // отдельное динамическое поле DMR
UpdateStatusField3; // Supply (openHPSDR) или Temp/RSSI (Pluto)
end;
@@ -3623,11 +3627,6 @@ procedure TMainForm.UpdateStatusField7;
// Поле 7 статус-бара. openHPSDR — PLL-lock (как прежде). Pluto в трансвертере —
// статус QO-100 beacon lock (у Pluto нет PLL-телеметрии); Pluto без XVTR — пусто.
begin
if FController.FMode = MODE_DMR then
begin
SetStatusText(7, DMRStatusText);
Exit;
end;
if FController.IsPluto then
begin
if FController.FCurrentXvtr >= 0 then SetStatusText(7, BeaconStatusText)
@@ -3639,6 +3638,16 @@ begin
else SetStatusText(7, 'PLL?');
end;
procedure TMainForm.UpdateDMRStatus;
begin
if StatusPanel = nil then Exit;
StatusPanel.SetStatusVisible(8, FController.FMode = MODE_DMR);
if FController.FMode = MODE_DMR then
SetStatusText(8, DMRStatusText)
else
SetStatusText(8, '');
end;
procedure TMainForm.OnWidebandCB(ADCIndex: Integer;
const Samples: array of SmallInt; Count: Integer);
begin