chore(tci): mark the transmit passes and count every frame type

The first transmit test came back with a log that said nothing, which is
the one answer that cannot be read: either no transmit frames arrived, or
they arrived and went unlogged.

So each pass is now bounded by a line of its own, and every stream type is
counted without limit. A pass that reports 'receive audio: 240, and
nothing else' is a result — it says the radio sends no chrono unless
something more is asked of it — where a log with no transmit lines was
merely a silence. The forty-frame logging budget is also handed back to
the transmit types on each pass, since it was always spent on receive
audio long before anyone got round to keying.

The start line says whether the receive stream is even open, because a
radio with nothing streaming has no reason to send chrono, and that is the
likeliest reason the first attempt saw nothing.
This commit is contained in:
2026-08-25 23:03:14 +02:00
parent f50bbc005c
commit 95e57fb812
2 changed files with 88 additions and 12 deletions
+9
View File
@@ -444,7 +444,16 @@ func (t *TCI) handle(msg string) {
}
case "trx":
if get(0) == "0" {
was := t.tx
t.tx = get(1) == "true"
// Said out loud, every time. The transmit side of TCI can only be
// written from a log of a real transmission, and the first one came
// back without a single line to say whether the radio had even been
// keyed — which left the interesting question, why no transmit
// frames, indistinguishable from nobody having pressed anything.
if was != t.tx {
t.noteTXTransition(t.tx)
}
}
case "tx_enable":
if get(0) == "0" {