docs: the TCPStreamer source kind, the client's TCP mode, and its probes
This commit is contained in:
1 parent
3dad65c487
commit
a65f953f17
5 files changed
+110
-7
No files matched your search
@@ -327,6 +327,27 @@ delivers one frame per datagram. The source is connected on the first valid data
|
||||
was verified on a loopback group (`239.255.42.99` joined on `127.0.0.1`, although this machine's `lo` does not
|
||||
carry the `MULTICAST` flag); a real network, its switches and IGMP were not exercised.
|
||||
|
||||
The fourth built-in kind is **TCPStreamer** (`--source tcps`), a receiver for the MARTe2 `TCPStreamer`
|
||||
datasource, standalone or through a shared `TCPStreamService`. Both speak the UDPStreamer framing over a TCP
|
||||
connection, so it is the UDPS client in a TCP mode: the same CONFIG and DATA, the same channels, calibration and
|
||||
timing. The form takes the server (default 127.0.0.1), the port (44500) and an optional **stream name**: leave
|
||||
it empty for a standalone `TCPStreamer`, which starts sending on connect; name the stream for a
|
||||
`TCPStreamService`, which wants a `SUBSCRIBE` first (the client sends one only when a name is set). On the
|
||||
command line these are `--source tcps --source-opt server=... --source-opt port=... --source-opt stream=...`.
|
||||
The source is disconnected after 2 s of silence or a closed connection and reconnects every 0.5 s; a stream
|
||||
whose frames are more than 2 s apart therefore reconnects continually, as UDPS does. It is verified against
|
||||
`tools/mock_tcpstreamer.py`, not against a MARTe2 application. Its limits:
|
||||
|
||||
- **One stream per connection.** A multiplexed `SUBSCRIBE` list (`a,b,c`) is refused by the form, because a
|
||||
source is single-timebase; merge streams on the server with `TCPStreamJoin` and name the result.
|
||||
- **No packet capture.** The capture is of the UDP socket; the button stays disabled.
|
||||
- **A gap is reported at once.** TCP is ordered, so there is no reorder window: a counter gap is a server-side
|
||||
drop and is counted as lost immediately.
|
||||
- **A frame is at most `UDPS_MAX_DATAGRAM_BYTES` (about 65 KB)**, which the server's `MaxPayloadSize` default of
|
||||
60000 satisfies.
|
||||
- **After a reconnect to a server whose time base restarted** the app prints `the clock stalled at ...`
|
||||
warnings, exactly as for a restarted UDPS stream.
|
||||
|
||||
A session file written before kinds existed has no `source_kind`, and is read as UDPS; a UDPS file is
|
||||
written exactly as before. A kind's capability panels (for instance a source's own controls) appear as
|
||||
pages of the side stack, and are insensitive rather than hidden while no source is connected.
|
||||
@@ -3299,6 +3320,10 @@ silence timeout and then resumes, which is the EMI case end to end.
|
||||
exactly faithful in `strict` mode, and the only reading of the wire that does
|
||||
not invent samples in `accumulate` mode. The info popup and the CONFIG dump on
|
||||
stderr report the element counts.
|
||||
- **The TCPStreamer source takes one stream per connection and has no packet capture.** A multiplexed
|
||||
`SUBSCRIBE` list is not supported (merge on the server with `TCPStreamJoin`), the capture button stays
|
||||
disabled, a gap is reported at once (no reorder window) and a frame is limited to about 65 KB; see "Data
|
||||
sources".
|
||||
- **The event window can be shorter than the buffer.** The trigger latches a window
|
||||
of the event-span selection; the ring holds far more, so with trigger mode off the
|
||||
rest is scrollable history.
|
||||
|
||||
Reference in new issue
Block a user