rust-bac
Rust BACnet/IP workspace with a no_std core encoder/decoder, async BACnet/IP transport, high-level client API, and CLI tools.
Crates
crates/rustbac-core: BACnet encoding, NPDU/APDU, types, and service payloads.crates/rustbac-datalink: BACnet/IP datalink (BVLC/BIP), BBMD/FDR helpers.crates/rustbac-bacnet-sc: BACnet/SC WebSocket transport adapter (ws/wss backend wiring).crates/rustbac-client: high-level async client API.crates/rustbac-tools: CLI binaries (whois,whohas,readprop,writeprop,subcov,readrange,readfile,writefile,dcc,reinit,timesync,ackalarm,alarmsummary,enrollsummary,eventinfo,eventnotify,readbdt,writebdt,readfdt,deletefdt,createobj,deleteobj,addlist,removelist,listen,privatetransfer,simulator,walkdevice).
Quick Start
Current Highlights
- Who-Is / I-Am discovery
- Who-Has / I-Have object discovery
- Read/Write Property
- Read/Write Property Multiple
- ReadRange (by-position, by-sequence, by-time)
- Atomic Read File (stream + record)
- Atomic Write File (stream + record)
- Create Object / Delete Object
- Add List Element / Remove List Element
- Subscribe COV and Subscribe COV Property
- COV notification handling (confirmed + unconfirmed)
- Event notification handling (confirmed + unconfirmed)
- Event/Alarm services:
- AcknowledgeAlarm
- GetAlarmSummary
- GetEnrollmentSummary
- GetEventInformation
- Device management services:
- DeviceCommunicationControl
- ReinitializeDevice
- Time synchronization services:
- TimeSynchronization
- UTCTimeSynchronization
- Segmented ComplexAck reassembly
- Duplicate segmented ComplexAck tolerance during reassembly
- Segmented confirmed-request transmit (for oversized confirmed requests, configurable window + bounded retransmit retries)
- Confirmed-service receive loops tolerate transient invalid frames while awaiting responses
- Foreign Device Registration + BBMD table operations (BDT/FDT)
- ConfirmedPrivateTransfer (vendor-specific service invocation)
- Device walk (enumerate all objects and properties on a device)
- Simulated BACnet device for testing (
SimulatedDevice) - Async notification listener for COV and event notifications (
NotificationListener) - BBMD/FDR admin CLI tools (
readbdt,writebdt,readfdt,deletefdt) - BACnet/SC websocket transport (
BacnetScTransport,BacnetClient::new_sc) - Typed remote BACnet error detail mapping (class/code when present)
- Golden packet fixtures in
crates/rustbac-core/tests/golden_packets.rs - Golden corpus fixture loader test in
crates/rustbac-core/tests/golden_corpus.rs(loadsfixtures/golden/*.hex)
Delivery Docs
docs/BIBBS.md: current BIBBs coverage mapdocs/INTEROP_MATRIX.md: interop execution matrix templatedocs/INTEROP_RESULTS.md: latest automated interop matrix run outputdocs/INTEROP_RUNBOOK.md: step-by-step completion checklist for BACnet/IP + BACnet/SC hardeningdocs/INTEROP_RESULTS_LIVE.md: live simulator/device run results
Live Interop Command
MSRV
- Rust
1.75.0(pinned byrust-toolchain.toml)