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: wire Application_Software_Version and Firmware_Revision to real values
  • 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:40
…values

Both properties were hardcoded const strings ("1.0.0") in common/constants.go
and never updated as the example's real version advanced (same bug found and
fixed in the sibling BACnetProfileExample-B-SCHUB-CPP v1.1.13 via a real
device read with CAS BACnet Explorer).

Go's const cannot hold a runtime-only value (the stack's own version) or
reference a value from a package that imports it back (common cannot import
main, which imports common), so ApplicationSoftwareVersion and
FirmwareRevision moved from const to package-level var in
common/constants.go, with start-up placeholder defaults. main.go's run() now
sets both once, right after printVersion() confirms the cgo-linked native
library works, before the socket is bound or any callback is registered:
ApplicationSoftwareVersion <- appVersion; FirmwareRevision <- built from
bacnet.GetAPI{Major,Minor,Patch,Build}Version() (the same 4 calls
printVersion() already uses for the banner) - it names the underlying
platform, not this app.

Bumped appVersion to 1.0.1. Verified with `go build -o bacnet-b-ss-go.exe .`
(the README's documented build command - clean, no errors) and a real
ReadProperty via bacpypes3 against the running device:
Application_Software_Version = "1.0.1", Firmware_Revision = "6.0.21.0".

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. appVersion bumped
1.0.1 -> 1.0.2.

gofmt -w re-aligned common/constants.go's const block after the longer
value changed column widths. `go build ./...` still fails on the
pre-existing, unrelated vendored-adapter header issue
(submodules/cas-bacnet-stack/adapters/golang/CASBACnetStackAdapter.go:
CASBACnetStackDLL.h not found) noted in an earlier session - not
introduced by this change. Verified instead with `gofmt -l` (clean)
and `go vet ./common/...` (clean).

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 0261172 into main Sep 24, 2026
3 checks passed
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