Skip to main content

Crate bacnet_ops

Crate bacnet_ops 

Source
Expand description

The UI-free operations core of the bacnet tool, shared by its one-shot commands, its terminal UI and its MCP server (#2064).

Everything here works on a BACnetClient and plain data, with no terminal, no ratatui and no MCP dependency, so every front end reads targets, values and devices the same way and obeys the same request limits:

  • bbmd: B/IP broadcast management tables as plain data, the survey that follows them and the consistency check over them;
  • class: what each command does to a device (read, write or device management), the table the front ends’ safety levels share;
  • target and destination: the target grammar (192.168.1.10, 1234, 2:1234, bip6:0x0004D2, mstp:5, …) and how a target becomes a service destination, routed when it must be;
  • parse: the object, property and value grammar (ai:1, present-value[3], 72.5@8);
  • format and label: values as display text, and how objects, properties and priorities are named;
  • limits: the global request-rate cap, the one-request-per-device gate, rates per network and per-caller accounts;
  • decode: frames, NPDUs and APDUs decoded into summaries and field trees, with no traffic;
  • engine: the read operations (properties, the object list, a device summary, trend log pages and alarms), Who-Is and the BBMD table reads over those limits;
  • watch: the watch hub, one managed COV subscription or poller per point however many listeners share it, holding the latest values;
  • safety: the write-safety core the TUI and the MCP server share: levels, tiers, previews, the ledger, the audit log, the workspace lock and the engine half of a write (#2068).

Modules§

bbmd
B/IP broadcast management (Annex J) as plain data: BBMD table rows, what reading a table gave, the breadth-first survey that follows each BDT to the BBMDs it lists, and the consistency matrix over the tables read (matrix). The TUI’s Network screen and the MCP server’s network map share it; Engine reads the tables.
class
What each command does to a device: read, write or device management (#972). One table serves the one-shot commands and the TUI’s safety levels (#964), so a command can’t be guarded in one front end and not in another.
decode
BACnet frames decoded for people: what the TUI’s capture screen and the MCP server’s bacnet_decode tool show, with no network traffic.
destination
Turn a Target into a service destination.
engine
The read operations every front end shares, over one client and one set of request limits.
format
The one value formatter the TUI, the one-shot CLI and the MCP server share: property values as read, turned into the text the browser, the watch list, the write previews and the CLI’s tables show, and into the typed Datum the CLI’s JSON carries.
label
How objects, properties and command priorities are named in text, the same in every front end: enumerations in kebab case, objects as analog-input 1 (decision D4 of #1887).
limits
The session’s request limits.
parse
Object/property shorthand parsing for integrators.
safety
The write-safety core every front end shares (#964, #2068; docs/design/tui.md section 5, docs/design/mcp.md section 7): session levels, confirmation tiers, previews, the ledger, the audit log and the workspace lock, with the engine half of a write.
target
The target grammar shared by the one-shot commands and the TUI, and the way each transport’s MAC addresses are shown so they read back.
watch
The watch hub (#2067): one managed BACnet subscription or poller per point, however many listeners share it.