Skip to content

Series sync: version fields, common/ 3.0.0, device rename, release-asset fix (v1.0.2) - #2

Merged
sws-chipkin merged 3 commits into
mainfrom
fix-device-version-properties
Sep 24, 2026
Merged

sws-chipkin merged 3 commits into
mainfrom
fix-device-version-properties

Conversation

@sws-chipkin

Copy link
Copy Markdown
Collaborator

Brings main up to v1.0.2 with the series-wide changes made locally since the last merge:

  • Fix stale hardcoded Application_Software_Version and Firmware_Revision
  • chore: rename Device from "Rainbow" to "Chipkin Example B-SS"
  • ci: upload one copy of each release asset (fix duplicate-name publish failure)

Summary:

  • Version fields: Application_Software_Version and Firmware_Revision now report the real app and stack versions (C++ repos).
  • common/ synced to 3.0.0, which merges the B-BC and B-SCHUB forks (C++ repos).
  • Device renamed from the series placeholder "Rainbow" to "Chipkin Example ", so examples can be told apart on one network. docs/objects.json and PICS are updated to match.
  • Release workflow: the publish job now uploads one copy of each asset name. Duplicate doc files from the two platform artifacts made the upload fail part-way (seen on B-SCHUB v1.1.18); the same fix is already merged in B-SCHUB #12 and B-BC #20.

Each rebuild was version-bumped and live-verified locally at commit time (startup banner shows the new Device name). See CHANGELOG.md.

🤖 Generated with Claude Code

sws-chipkin and others added 3 commits September 22, 2026 01:27
The Device object's Application_Software_Version (12) and
Firmware_Revision (44) were hardcoded "1.0.0" consts that never tracked
reality - the same class of bug just found and fixed in the sibling
BACnetProfileExample-B-SCHUB-CPP example by someone reading a real device
with CAS BACnet Explorer and noticing the reported version didn't match
the running build.

Application_Software_Version now reads APP_VERSION directly, the same
constant --version's own banner uses, so it can't drift from reality
again. Firmware_Revision is now built once at start-up in main(), right
after the native library loads, from the CAS BACnet Stack's own
BACnetStack_GetAPIMajorVersion/MinorVersion/PatchVersion/BuildVersion -
the same four calls cas_example_helper::print_version already makes for
the start-up banner - and stored in STATE.firmware_revision, following
the existing once_cell-backed Mutex<DeviceState> pattern already used for
other start-up-resolved fields (e.g. the Network Port's IP addressing).
Firmware_Revision was never meant to be this example's own version; it
names the platform underneath the app.

Bumped the app to 1.0.1 (Cargo.toml + APP_VERSION) and added a
CHANGELOG.md entry.

Verified with a real BACnet ReadProperty (bacpypes3) against the running
device: Application_Software_Version = "1.0.1", Firmware_Revision =
"6.0.21.0" (matching the CAS BACnet Stack version printed in the
start-up banner).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Every example in the series announced the identical Object_Name
"Rainbow" for its Device object, so two examples running on the same
subnet were indistinguishable by name. Renamed to "Chipkin Example
B-SS" (the series' BACnet profile code) so devices are identifiable
on the network; sub-object names are unchanged. docs/colour-table.md
(series root, not in this repo) updated to match. APP_VERSION/crate
version bumped 1.0.1 -> 1.0.2.

Verified: `cargo build --release` clean, and a live run confirms "FYI:
Device 389001 (\"Chipkin Example B-SS\") ready."

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… failure)

Every platform artifact carries the same docs (README.md, LICENSE,
TUTORIAL.md, ...), and the publish job handed all of them to
softprops/action-gh-release with `files: artifacts/**/*`. Uploading two
assets with the same name makes the action fail part-way ("Not Found"
updating asset metadata) and leaves a draft release behind -
BACnetProfileExample-B-SCHUB-CPP v1.1.18 hit exactly this.

The publish job now flattens the downloaded artifacts into release/,
keeping one copy of each file name, and fails loudly if two files share
a name but differ. Same asset set as before, each name once. Applied
series-wide (the release job is a shared template, checked by
tools/check-series.sh check 11).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sws-chipkin
sws-chipkin merged commit 34426d0 into main Sep 24, 2026
3 checks passed
@sws-chipkin
sws-chipkin deleted the fix-device-version-properties branch October 16, 2026 16:22
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