mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
chore(tx): сняты зонды трассировки — пейсинг проверен на железе
Всплесков на передаче нет, инструмент своё отработал и больше не нужен в горячем пути. Снято ровно то, что ставилd209697, и ничего сверх: * удалён юнит TxTrace.pas (кольцо + сброс дампа + TraceInit); * TCIAdapter: точки съёма маркеров и TX-аудио, поля FTxTraceLast/FTxTraceAudio; * HPSDRNetwork: DUC-DRY/DUC-RUN и переменная DryFrom (жила только для них), вместе с ними ушли из uses TxTrace и PlatformUtils — их добавлял тот же коммит, MonotonicUs в этом файле больше нигде не встречается; * RadioController: PTT-метка в SetMOX и сброс дампа на снятии PTT; * TraceInit из ewsdr.lpr и ewsdrd.lpr. Каждая удалённая строка стояла под `if TraceOn` — вычислений, от которых зависит тракт, в них не было. ★PlatformUtils.MonotonicUs НЕ тронут: на нём абсолютные дедлайны планировщика TX, это не отладка. Скрипт разбора test/hpsdr/txtrace_scan.py оставлен, формат дампа не менялся; в README стенда записан рецепт возврата зондов изd209697. Проверено: lazbuild --ws=qt6 и build-ewsdrd.sh собираются, test/tci 260/260, test/cat 50/50 — те же числа, что и с зондами. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bkwwyj7xVRrqnSVEseTRfV
This commit is contained in:
+1
-21
@@ -44,7 +44,7 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, DateUtils, Math, SyncObjs,
|
||||
RadioController, RadioBackend, WDSPEngine, Settings, PlatformUtils,
|
||||
DXSpotStore, TCIProtocol, TCIServer, TCIStreams, TxTrace;
|
||||
DXSpotStore, TCIProtocol, TCIServer, TCIStreams;
|
||||
|
||||
const
|
||||
// ★Приёмник TCI: 0 — главный тракт (каналы A/B = VFO A/B), N — слайс СЛОТА
|
||||
@@ -242,8 +242,6 @@ type
|
||||
FTxLeadKeep: Integer; // ★он же, но ПЕРЕЖИВАЮЩИЙ конец передачи
|
||||
FTxLeadRate: Integer; // частота, при которой аванс измерен
|
||||
FTxLeadLowUs: Int64; // с какого момента оценка держится НИЖЕ аванса
|
||||
FTxTraceLast: Int64; // приборы: время прошлого маркера
|
||||
FTxTraceAudio: Int64; // приборы: время прошлого блока аудио
|
||||
FTxLastRxUs: Int64; // когда пришёл прошлый блок (границы пачек)
|
||||
// Рабочие буферы разбора TX-блока. Полем, а не на стеке: развёрнутый в
|
||||
// 48 кГц блок — это сотни килобайт, и класть их в стек потока клиента
|
||||
@@ -3754,7 +3752,6 @@ begin
|
||||
|
||||
TCIFillHeader(H, tstTXChrono, Rx, Rate, ST, Q, Chans);
|
||||
Client.SendBinNow(H);
|
||||
if TraceOn then TR(trkNote, -4, Q, Rx);
|
||||
end;
|
||||
|
||||
procedure TTCIAdapter.TxPublishLead(Rate: Integer);
|
||||
@@ -3843,7 +3840,6 @@ begin
|
||||
try
|
||||
if not Active then
|
||||
begin
|
||||
if TraceOn and FTxRunning then TR(trkNote, -3, Round(FTxInFlight), 0);
|
||||
FTxRunning := False;
|
||||
FServer.TxTickPeriodMs := 0;
|
||||
Exit;
|
||||
@@ -3886,7 +3882,6 @@ begin
|
||||
(TCI_TX_LEAD_MAX_MS * Rate) div 1000);
|
||||
if LeadWant > FTxLead then
|
||||
begin
|
||||
if TraceOn then TR(trkNote, -2, LeadWant, FTxLead);
|
||||
FTxLead := LeadWant;
|
||||
FTxLeadLowUs := 0;
|
||||
TxPublishLead(Rate);
|
||||
@@ -3899,7 +3894,6 @@ begin
|
||||
if FTxLeadLowUs = 0 then FTxLeadLowUs := NowUs
|
||||
else if NowUs - FTxLeadLowUs > TCI_TX_LEAD_DOWN_MS * 1000 then
|
||||
begin
|
||||
if TraceOn then TR(trkNote, -2, LeadWant, FTxLead);
|
||||
FTxLead := LeadWant;
|
||||
FTxLeadLowUs := NowUs;
|
||||
TxPublishLead(Rate);
|
||||
@@ -3946,7 +3940,6 @@ begin
|
||||
begin
|
||||
// Прощаем ровно один квант и начинаем выдержку заново: поздний ответ
|
||||
// безопасен, он уведёт долг в минус и сам притормозит выдачу.
|
||||
if TraceOn then TR(trkNote, -1, Round(FTxInFlight), FTxWindowQ);
|
||||
FTxInFlight := Max(0, FTxInFlight - Q);
|
||||
// ★Срок сдвигаем НА выдержку, а не на «сейчас». Зависших кредитов может
|
||||
// быть несколько, и прощение по одному за выдержку живого времени
|
||||
@@ -3984,13 +3977,6 @@ begin
|
||||
FTxInFlight := FTxInFlight + Q;
|
||||
TxNoteRequest(NowUs);
|
||||
Inc(Sent);
|
||||
if TraceOn then
|
||||
begin
|
||||
if FTxTraceLast = 0 then FTxTraceLast := NowUs;
|
||||
TR(trkChrono, Q, Round(FTxOwed - FTxInFlight),
|
||||
Integer(NowUs - FTxTraceLast));
|
||||
FTxTraceLast := NowUs;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
FTxLock.Leave;
|
||||
@@ -4104,12 +4090,6 @@ begin
|
||||
FTxProgressUs := NowUs;
|
||||
FTxArmed := True;
|
||||
TxNoteReply(NowUs);
|
||||
if TraceOn then
|
||||
begin
|
||||
if FTxTraceAudio = 0 then FTxTraceAudio := NowUs;
|
||||
TR(trkTxAudio, Integer(NowUs - FTxTraceAudio), Integer(H.DataLength), k);
|
||||
FTxTraceAudio := NowUs;
|
||||
end;
|
||||
|
||||
if (FTxInterp = nil) or (FTxInRate <> Rate) then
|
||||
begin
|
||||
|
||||
Reference in New Issue
Block a user