LagerBox and a page of its own. Handles are
cheap and do no network traffic until you call a method. The box resolves and
validates the net name on every request, so a typo fails loudly.
Instrument nets
Addressed by the net name you gave them withlager nets add.
Box-level capabilities
These drive the box’s own hardware, so they take no net name and have noname().
Two handles that behave differently
Almost every constructor above returns a handle immediately and infallibly. Two do not:lager.uart(name)?returns aResult— it opens a Socket.IO session and starts streaming right away, so it can fail at construction.lager.scope(name)returns a value, not a borrow.Scopehas no lifetime and no async twin, because the box has no endpoint for it to talk to yet.
Discovery
NetRecord carries:
- the name
- the role
- the instrument
- the pin or channel
- the VISA or device address
- any role-specific saved params
- the net’s safety limits
Not yet available
Scope is a documented stub, and there is no logic-analyzer handle at all: the box
has no HTTP endpoint for scope or logic capture yet. Rotation and Actuate nets serve
provisioning flows rather than test-time net access, and the crate deliberately
leaves them out. The work list is in
MISSING_ENDPOINTS.md.
