mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
chore(tx): детектор голодания снят — всплесков не видно, вернём при нужде
Прибор из b173b7f отработал своё на этом заходе: всплески не появляются, и
держать его в тракте нет причин. Снято ровно то, что тот коммит поставил:
юнит TxHealth.pas, замеры простоев в отправителе DUC (обе ветки), публикация
контекста пейсинга из планировщика TCI, счёт бита HPS_FIFO_EMPTY, вызовы
TxHealthService в таймере UI и цикле демона, индикатор «·сухо N» в статусной
строке и секция G стенда.
Вернуть — реверсом этого коммита; опора детектора и правило его устройства
(в тракте передачи ничего, кроме записи в память) записаны в
test/hpsdr/README.md, чтобы не восстанавливать рассуждение заново.
Проверено: test/tci 262/262, test/cat 50/50, GUI (--ws=qt6) и демон собираются.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bkwwyj7xVRrqnSVEseTRfV
This commit is contained in:
+1
-23
@@ -51,7 +51,7 @@ uses
|
||||
HPSDRProtocol, HPSDRNetwork, RadioBackend, PlutoBackend, IIOBindings,
|
||||
WDSPEngine, AudioOutput, AudioInput, BeaconDecoder, BeaconFEC, DMRDecoder,
|
||||
Settings, ChannelStore, FMRepeater, BoardUtils, DeviceStore, CWMorse, CWKeyer,
|
||||
CWDecoder, TxHealth;
|
||||
CWDecoder;
|
||||
|
||||
// Панадаптеры (этап 3): потолок MAX_PANS живёт в WDSPEngine (общий для
|
||||
// движка/контроллера/UI). Фактический лимит бэкенда — Caps.MaxPans (Pluto=1).
|
||||
@@ -1864,11 +1864,6 @@ begin
|
||||
FHPpPLL := (Status.StatusBits and HPS_PLL_LOCKED) <> 0;
|
||||
FHPpHWPTT := (Status.StatusBits and HPS_PTT) <> 0;
|
||||
FHPpOverload := Status.ADCOverload;
|
||||
// ★Жалоба самого радио: бит «DUC FIFO пуст». Поле ГЛУБИНЫ FIFO (байты 35-36)
|
||||
// на этой прошивке статично и веры ему нет, а бит мы не читали вовсе —
|
||||
// если прошивка его заполняет, это независимый свидетель голодания.
|
||||
if FTransmitting and ((Status.StatusBits and HPS_FIFO_EMPTY) <> 0) then
|
||||
TxHealthFifoEmpty;
|
||||
// Состояние ключа/манипулятора в разъёме трансивера (сетевой поток).
|
||||
// Касание обрывает программную передачу — как в Thetis/pihpsdr («key hit»
|
||||
// останавливает CAT CW), иначе оператор не может вклиниться. ★Обрываем по
|
||||
@@ -6297,7 +6292,6 @@ end;
|
||||
procedure TRadioController.SetMOX(On_: Boolean);
|
||||
var
|
||||
WasTransmitting: Boolean;
|
||||
TxhSrc: Integer;
|
||||
begin
|
||||
// DMR support is receive-only. This guard also covers CAT, web and hardware
|
||||
// PTT. FM RAW is a flat external-modem transmit path.
|
||||
@@ -6432,19 +6426,6 @@ begin
|
||||
if FTransmitting and FDisplayDuplex then
|
||||
FDSPEngine.SetDisplaySourceTX(False);
|
||||
end;
|
||||
// Детектор голодания очереди TX: фронт «в эфир» открывает передачу для
|
||||
// счётчиков. Стоит ПОСЛЕ блока движка — источник модуляции решается там.
|
||||
// Ввода-вывода тут нет и быть не может: журнал пишет потребитель (таймер UI /
|
||||
// цикл демона), см. TxHealth.pas.
|
||||
if FTransmitting and (not WasTransmitting) then
|
||||
begin
|
||||
if FTCIMicActive then TxhSrc := txhSrcTCI
|
||||
else if FWebMicActive then TxhSrc := txhSrcWeb
|
||||
else if Assigned(FDSPEngine) and (FDSPEngine.TXMicSource = txmsSoundCard) then
|
||||
TxhSrc := txhSrcCard
|
||||
else TxhSrc := txhSrcRadio;
|
||||
TxHealthPtt(True, TxhSrc);
|
||||
end;
|
||||
// Сетевая PTT-последовательность TX-off: сначала снимаем PTT, затем реле RX.
|
||||
if (not FTransmitting) and Assigned(FNetwork) and FNetwork.Connected and FNetwork.Running then
|
||||
begin
|
||||
@@ -6462,9 +6443,6 @@ begin
|
||||
// (оператор держит T/R руками) — вооружение обязано пойти за этой кнопкой.
|
||||
SyncCWKeyer;
|
||||
Changed(rfTransmitting);
|
||||
// Передача кончилась — складываем сводку в память. Диск не трогаем (★прошлый
|
||||
// прибор писал дамп ровно здесь и тем самым прикрывал гонку в пейсинге).
|
||||
if WasTransmitting and (not FTransmitting) then TxHealthPtt(False, 0);
|
||||
end;
|
||||
|
||||
procedure TRadioController.SetTune(On_: Boolean);
|
||||
|
||||
Reference in New Issue
Block a user