Skip to main content
Each net type has a handle obtained from 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 with lager nets add.

Box-level capabilities

These drive the box’s own hardware, so they take no net name and have no name().

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
See Client and Box for the rest of the discovery surface.

Not yet available

There is no logic-analyzer handle, and Scope 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.