fix(autocall): a late decode belongs to its own period
A decoder sends a period's decodes in a burst, and stragglers follow — a deep decode a second behind the rest. The sweeper judged the burst and CLEARED the buffer, so the straggler opened a fresh one under the same period key and was judged on its own: the ladder applied to a handful of late arrivals with the other thirty stations of that period nowhere in sight, and often after the reply to the burst had already put us on the air, where nothing can act on it at all. The buffer now outlives the judgement. A period stays open until a decode stamped with the NEXT slot arrives; a straggler appends to it and the period is judged again, whole. Judged once per period otherwise — acDirty says whether anything new has come in — and the same flag now answers the dead-band case that the cleared buffer used to stand for.
This commit is contained in:
@@ -789,6 +789,11 @@ type App struct {
|
||||
acLastJudge time.Time
|
||||
// acTXPeriod is the last transmit period already counted — see autoCallNoteTX.
|
||||
acTXPeriod string
|
||||
// acJudged is the last period key each receiver has been judged on, and
|
||||
// acDirty says decodes have arrived for it since. Together they let a period
|
||||
// be judged AGAIN when a straggler turns up, with the whole period in hand.
|
||||
acJudged map[string]string
|
||||
acDirty map[string]bool
|
||||
// What the decodes panel is SHOWING, and whether it is publishing at all.
|
||||
// The panel owns the filters; this is its answer, not a second copy of them.
|
||||
acVisible map[string]bool
|
||||
|
||||
Reference in New Issue
Block a user