Skip to content

implement b as - #1

Merged
sws-chipkin merged 2 commits into
mainfrom
implement-b-as
Sep 15, 2026
Merged

sws-chipkin merged 2 commits into
mainfrom
implement-b-as

Conversation

@sws-chipkin

Copy link
Copy Markdown
Collaborator

Summary

Builds the B-AS (Authorization Server) example from the plan-only stub, seeded
from B-ASC-CPP per the Wave 3 card, common/ vendored verbatim from B-SS-CPP at
2.5.0, stack submodule pinned to 6.x @ abd4cee1 (6.0.21), STATIC link.

Implements the profile's DS/DM base: DS-RP-B, DM-DDB-B, DM-DOB-B,
DM-DCC-B. Does not implement AA-AS-B.

AA-AS-B spike finding

Not implementable through the customer-facing DLL surface at this pin.

grep -in "Authoriz\|AuthRequest\|Auth" source/CASBACnetStackDLL.h turns up
only property identifiers and BACnet/SC exports - no Device-Authorization
setup function. The header explains why in its own comments:
BACnetStack_AddAuthorizationPolicy and its siblings
(SetAuthorizationPolicyEntry, SetAuthorizationPolicyEnabled,
AddAuthorizationCache, InsertAuthorizationToken) were moved out of the
customer header entirely - they are gated on BACNET_STACK_TESTTOOL and now
live only in CASBACnetStackTestToolDLL.h. Confirmed directly in that file.
Since this series builds against the customer surface only (no
BACNET_STACK_TESTTOOL), there is no way to seed an Authorization Policy for
an Access-Authorization request to be evaluated against.

Full evidence: TODO.md. Stack issue filed:
chipkin/cas-bacnet-stack#2043.
README's BIBB table and profile-table row both mark AA-AS-B accordingly.

Note: docs/profiles.md (series root) has a status line claiming AA-AS-B was
already closed via stack PRs #195-198 / "S178 merge cash-out." That claim does
not match this repo's own direct verification of the pinned stack source, and
its phrasing doesn't match this runbook's conventions - it was not relied on.
Flagged in TODO.md as unverified.

Verification

  • STATIC configure/build: zero warnings from main.cpp/common/.
  • --help / --version: exit 0.
  • Smoke test: version line, ready line, start-up I-Am broadcast.
  • Wire verification via bacpypes3 against a running instance (port 47822):
    • Who-Is(389023) -> I-Am from 389023.
    • Who-Has("Bronze") -> I-Have.
    • ReadProperty of every required/enabled property on Device, Analog Input 1
      (Bronze), Binary Input 1 (Emerald), Multi-State Input 1 (Hot Pink),
      Network Port 1 (Vermilion) - all correct.
    • Protocol_Services_Supported lists exactly read-property,
      device-communication-control, i-am, i-have, who-has, who-is.
    • WriteProperty and ReadPropertyMultiple both rejected with
      unrecognized-service (confirmed on the device's own console log too:
      "Services is not supported service=[15]" / "[14]").
    • DeviceCommunicationControl(disable-initiation) then (enable): both
      SimpleACK, both logged correctly by the device.
  • Caught and fixed a real bug during verification: the first
    DEVICE_DESCRIPTION (284 bytes) exceeded MAX_CHARACTER_STRING_SIZE (256)
    and caused Description ReadProperty to Abort. Shortened the string;
    re-verified the read succeeds.

Gate

tools/check-series.sh BACnetProfileExample-B-AS-CPP -> SERIES CHECK PASSED.

🤖 Generated with Claude Code

sws-chipkin and others added 2 commits September 15, 2026 11:11
…21), STATIC link

Seed source: BACnetProfileExample-B-ASC-CPP main.cpp/CMakeLists/AGENTS/CHANGELOG/README/release.yml.
common/ copied verbatim from B-SS-CPP at 2.5.0.
Stack submodule added --dissociate, pinned to abd4cee1c7f28ca8e1af4720849c4081082bbe82, STATIC library built.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ed on stack gap

Implements DS-RP-B, DM-DDB-B, DM-DOB-B, DM-DCC-B against the series pin
(6.x @ abd4cee1, 6.0.21), STATIC link. Base-series read-only sensor objects
(Bronze/Emerald/Hot Pink) + Network Port; no WriteProperty/RPM - not part of
this profile's required set.

AA-AS-B (Access Authorization, Clause 17) is NOT implemented: at this pin,
BACnetStack_AddAuthorizationPolicy and its siblings live only on the
test-tool interface (CASBACnetStackTestToolDLL.h, behind
BACNET_STACK_TESTTOOL), not the customer-facing CASBACnetStackDLL.h this
series builds against. Evidence and the filed stack issue
(chipkin/cas-bacnet-stack#2043) are in TODO.md.

Verified: STATIC build, zero warnings from main.cpp/common; --help/--version
exit 0; smoke test (ready line, start-up I-Am broadcast). Wire verification
via bacpypes3 against a running instance: Who-Is -> I-Am (389023); Who-Has
"Bronze" -> I-Have; ReadProperty of every required/enabled property on all
four objects + Device; WriteProperty and ReadPropertyMultiple both correctly
rejected with unrecognized-service; DeviceCommunicationControl
(disable-initiation, then enable) both SimpleACK'd and logged by the device.
(Caught and fixed a real bug in this process: an early, longer
DEVICE_DESCRIPTION exceeded MAX_CHARACTER_STRING_SIZE and caused Description
reads to abort - shortened it.)

docs/profiles.md carries an unverified status line claiming AA-AS-B was
already closed via stack PRs #195-198; it was not relied on - see the note
in TODO.md - this repo's implementation and gap-reporting are based only on
direct verification of the pinned stack source.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@sws-chipkin
sws-chipkin merged commit 77e82f1 into main Sep 15, 2026
3 checks passed
@sws-chipkin
sws-chipkin deleted the implement-b-as branch September 15, 2026 21:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant