bacnet_ops/lib.rs
1//! The UI-free operations core of the `bacnet` tool, shared by its one-shot
2//! commands, its terminal UI and its MCP server (#2064).
3//!
4//! Everything here works on a [`BACnetClient`](bacnet_client::client::BACnetClient)
5//! and plain data, with no terminal, no ratatui and no MCP dependency, so
6//! every front end reads targets, values and devices the same way and
7//! obeys the same request limits:
8//!
9//! - [`bbmd`]: B/IP broadcast management tables as plain data, the survey
10//! that follows them and the consistency check over them;
11//! - [`class`]: what each command does to a device (read, write or device
12//! management), the table the front ends' safety levels share;
13//! - [`target`] and [`destination`]: the target grammar (`192.168.1.10`,
14//! `1234`, `2:1234`, `bip6:0x0004D2`, `mstp:5`, ...) and how a target
15//! becomes a service destination, routed when it must be;
16//! - [`parse`]: the object, property and value grammar (`ai:1`,
17//! `present-value[3]`, `72.5@8`);
18//! - [`format`](mod@format) and [`label`]: values as display text, and how objects,
19//! properties and priorities are named;
20//! - [`limits`]: the global request-rate cap, the one-request-per-device
21//! gate, rates per network and per-caller accounts;
22//! - [`decode`]: frames, NPDUs and APDUs decoded into summaries and
23//! field trees, with no traffic;
24//! - [`engine`]: the read operations (properties, the object list, a device
25//! summary, trend log pages and alarms), Who-Is and the BBMD table reads
26//! over those limits;
27//! - [`watch`]: the watch hub, one managed COV subscription or poller per
28//! point however many listeners share it, holding the latest values;
29//! - [`safety`]: the write-safety core the TUI and the MCP server share:
30//! levels, tiers, previews, the ledger, the audit log, the workspace lock
31//! and the engine half of a write (#2068).
32
33pub mod bbmd;
34pub mod class;
35pub mod decode;
36pub mod destination;
37pub mod engine;
38pub mod format;
39pub mod label;
40pub mod limits;
41pub mod parse;
42pub mod safety;
43pub mod target;
44pub mod watch;