fixed issue on udpstreamer trigger logic

This commit is contained in:
Martino Ferrari
2026-08-28 16:53:17 +02:00
parent 1c61e814c0
commit 044ce57ba3
170 changed files with 16958 additions and 24036 deletions
+18 -5
View File
@@ -58,11 +58,15 @@
* CONSUMING signal, where UDPSourceSession.cpp:538 and :516 key it on the
* time-signal index, so signals sharing a time signal share an offset there and
* not here — immaterial, since the mapping they compute is the same. And a
* FIRST_SAMPLE/LAST_SAMPLE signal whose time signal is absent falls through to
* rule 4 rather than using its declared rate; that is a malformed CONFIG, and
* spanning arrivals is the more honest answer than trusting a rate whose anchor
* never arrived. Neither this list nor the three above is closed: any other
* difference you find is unexamined, not sanctioned.
* FIRST_SAMPLE/LAST_SAMPLE signal of DECLARED ARRAY shape whose time signal is
* absent falls through to rule 4 rather than using its declared rate; that is a
* malformed CONFIG, and spanning arrivals is the more honest answer than
* trusting a rate whose anchor never arrived. Note the shape qualifier: an
* accumulated SCALAR is declared with one element, so a frame that carries no
* time signal for it routes to rule 3, which does use the declared rate — the
* normal case, since Accumulate flushes per signal on a timer. Neither this list
* nor the three above is closed: any other difference you find is unexamined,
* not sanctioned.
*/
#pragma once
@@ -100,7 +104,16 @@ private:
std::vector<double>& tsOut);
struct SigState {
/** Rules 1 and 2: maps the TIME SIGNAL's epoch onto the wall clock. */
ClockOffset offset;
/** Rule 3's hrt branch, which maps a different epoch — accProdSec counts
* from this signal's first usable packet, not from whatever zero the
* time signal uses. One signal can reach both: a declared scalar with
* FIRST_SAMPLE takes rule 2 in frames where its time signal carries an
* element and rule 3 in frames where it does not, which Accumulate's
* per-signal timer flushing makes ordinary. Sharing one ClockOffset
* across the two forces a re-latch on every alternation. */
ClockOffset accOffset;
double lastPacketWall = 0.0;
bool lastPacketValid = false;
/** Raw ticks, not seconds — see the comment in the samplingRate == 0