Updated local storage
This commit is contained in:
1 parent
30db44eaa0
commit
2218aed839
10 files changed
+548
-5
No files matched your search
@@ -46,6 +46,8 @@ src/acquisition.* the UDPStreamer client, the producer thread, frame decoding
|
||||
src/trigger.* the trigger configuration and the producer-side state machine
|
||||
src/plot_host.* the one plot::Figure, its rows' traces and cursors, the x link group
|
||||
src/export.* the visible range as a table, and the .npy / .csv writers
|
||||
src/layout_store.* the per-source session layout file (TOML), written and read back
|
||||
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
|
||||
```
|
||||
|
||||
@@ -56,6 +58,41 @@ 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.
|
||||
|
||||
## The session layout file
|
||||
|
||||
What you arranged is remembered per data source, in
|
||||
`~/.config/udpscope/<host>_<port>.toml` (`$XDG_CONFIG_HOME` is honoured; the
|
||||
host's unsafe characters are replaced with `_`). The file holds the display
|
||||
window, the row layout and which signal each of a row's slots plots, and the
|
||||
per-signal gain and offset:
|
||||
|
||||
```toml
|
||||
window_s = 2
|
||||
plots = 1
|
||||
|
||||
[[plot]]
|
||||
signals = ["Ch1", "", "", ""]
|
||||
|
||||
[[calibration]]
|
||||
name = "Ch1"
|
||||
gain = 2
|
||||
offset = 0.5
|
||||
```
|
||||
|
||||
It is written (400 ms after the last change, and flushed on close) whenever the
|
||||
window, the layout, a drop or a calibration changes, and applied once, when the
|
||||
first CONFIG names the signals -- signal *names* are the identity, because a
|
||||
CONFIG renumbers and an enable/disable rebuilds the channel list. Signals the
|
||||
file plots are enabled on load, since a restored plot nobody acquires would come
|
||||
back blank. It is plain TOML and safe to edit; a malformed file loads whatever
|
||||
parsed rather than refusing to start. Writes go to a sibling temp file and are
|
||||
renamed over the target, so a crash mid-write leaves the old layout.
|
||||
|
||||
The same reason the window control is a fixed-width label in the header bar
|
||||
(see the DPI/relayout notes in `ui.cpp`) is why the bar's `window` control does
|
||||
not expand: a header-bar child that expands is measured into the title's centre
|
||||
box, so the control stretched to the title and every window resize moved it.
|
||||
|
||||
## How the spec maps onto the code
|
||||
|
||||
**One buffer of `N+1` slices, plus frozen event snapshots.** `ScopeModel`
|
||||
|
||||
Reference in new issue
Block a user