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().
A handle that behaves differently
Every constructor above returns a handle immediately and infallibly, except one.lager.uart(name)? returns a Result. It opens a Socket.IO session and starts
streaming right away, so it can fail at construction.
Custom-driver nets
A custom driver installed on the box (box software 0.59.0 or later) declares its own role and actions.CustomNet has one method for them:
command(action, params) returns the action’s value, or null when it has none.
lager.status()?.capabilities lists the installed roles in net_command_roles when
custom_drivers is set. A driver failure arrives as Error::Box with the box’s
status: 409 (busy), 503 (unavailable), 504 (timed out) or 502 (the driver failed).
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
There is no logic-analyzer handle, andScope does not capture traces: the box has no
HTTP endpoint for logic or trace 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.
