docs: the source-plugin framework, the --source options and the source-kinds probe
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
5cee00aaee
commit
4d859d6a37
6 files changed
+96
-11
No files matched your search
@@ -27,6 +27,7 @@ Options: `--server`, `--port`, `--multicast`, `--interface`, `--buffer-mb`
|
||||
window the toolbar offers, default 600), `--holdoff` (default trigger hold-off),
|
||||
`--recv-buffer`, `--plots` (the number of stacked plots to start with, 1..8; rows are
|
||||
added and removed from the **Layout editor** afterwards), `--relative-time` (see below),
|
||||
`--source NAME` and the repeatable `--source-opt k=v` (the source kind and its settings; see "Data sources" below),
|
||||
`--capture-packets N` (see "Packet capture" below), `--renderer NAME` (GTK's renderer:
|
||||
`cairo`, `gl` or `vulkan`; `cairo` is the software preset that exports both
|
||||
`GSK_RENDERER` and `LIBGL_ALWAYS_SOFTWARE` before GTK initialises — see the SSH
|
||||
@@ -98,13 +99,30 @@ src/event_series.hpp an immutable captured event as a plot::data::Series
|
||||
src/ui.* the GTK4 window: toolbar, trigger panel, signal panel, plot box
|
||||
```
|
||||
|
||||
Threading: one producer thread owns the `udps_client_t` and calls
|
||||
`udps_client_poll()`; the GTK main thread owns every widget and the GL contexts.
|
||||
Threading: one producer thread owns the data source (the UDPStreamer client is the built-in
|
||||
one) and calls `poll()`; the GTK main thread owns every widget and the GL contexts.
|
||||
They share `ScopeModel` under one mutex, which the producer takes once per DATA
|
||||
frame and the GUI thread takes once per frame around binding the traces.
|
||||
Samples cross the boundary through `plot::data::RingBuffer` (single producer,
|
||||
single consumer), never through the lock.
|
||||
|
||||
## Data sources
|
||||
|
||||
What udpscope shows is fed by a *source kind*; the connection chooser's **Source type** row picks one and
|
||||
swaps in that kind's own connection form. The built-in kind is **UDPS**, the UDPStreamer client this
|
||||
document describes everywhere else, and it is the default: `--server`, `--port`, `--multicast` and
|
||||
`--interface` populate its entries, and the same thing is spelled `--source udps --source-opt server=...`.
|
||||
`--help` lists the registered kinds. A second kind, `probe` (a synthetic sine with one panel), is registered
|
||||
only when `UDPSCOPE_PROBE_SOURCE_KINDS` is set, and exists only for the self-check.
|
||||
|
||||
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.
|
||||
|
||||
Planned, each as its own sub-project: a flat UDP kind, the MCC E-1608 and ABScope. ABScope has more than one
|
||||
timebase, so it will change the frame and the data path together rather than fit the present single-timebase
|
||||
frame.
|
||||
|
||||
## The x axis is relative to now
|
||||
|
||||
**A live axis is fixed at `[-window, 0]`, with the newest sample at 0.** That is what a bench
|
||||
|
||||
Reference in new issue
Block a user