Open
Conversation
Expose BBMD Broadcast Distribution Table (BDT) and Foreign Device Table (FDT) read operations, plus Who-Is-Router-To-Network discovery through all layers: transport, network, client, and Python bindings. - NetworkLayer now supports broadcast channel for network-layer messages (I-Am-Router-To-Network, etc.) instead of silently dropping them - AnyTransport delegates read_bdt/read_fdt to BIP transport - BACnetClient gains who_is_router_to_network(), read_bdt(), read_fdt() - Python bindings add BdtEntry, FdtEntry, RouterInfo types - Example script demonstrates BBMD scanning and router discovery Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a bvll-test binary and Dockerfile that exercises read_bdt,
read_fdt, and who_is_router_to_network against a live multi-building
BACnet campus with two BBMDs and a router. Validated on the
hvacnetwork_building1 podman network:
- Read BDT: OK (2 entries — both BBMDs listed with correct masks)
- Read FDT: OK (0 entries — expected, no foreign devices registered)
- Who-Is-Router-To-Network: OK (no routers on BIP subnet; simulator
handles routing internally via bacpypes3 virtual networks)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Owner
|
I just saw this. I'm merging a bunch of fixes into dev and will probably push those to main. Let me see where these changes stand after those get into the dev branch. These might have been picked up in the pass I did last night. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
NetworkLayernow optionally forwards network messages (I-Am-Router-To-Network, Who-Is-Router, etc.) via abroadcastchannel instead of silently dropping them. Opt-in vianetwork_messages()beforestart().read_bdt()andread_fdt()exposed throughAnyTransportandBACnetClient, allowing inspection of BBMD Broadcast Distribution Tables and Foreign Device Tables.who_is_router_to_network()broadcasts the request and collectsI-Am-Router-To-Networkresponses for a configurable duration, returning structuredRouterInforesults.BdtEntry,FdtEntry, andRouterInfotypes with full type stubs. All three new client methods are available from Python.examples/python/bbmd_scanner.pydemonstrates scanning for BBMDs and discovering routers on a live network.bvll-testbinary + Dockerfile for testing against a live multi-building campus network.Test results
Validated against a podman-based campus network with two buildings, two BBMDs (bacpypes3-based ACL BBMDs), a cross-subnet router, and HVAC simulators:
cargo checkcargo testCampus network topology
Test plan
cargo checkpassescargo testpassesmaturin developand example script🤖 Generated with Claude Code