3807 Commits

Author SHA1 Message Date
Tony b1f4389f31 feat: add support for external object table in device management
BACnet/SC linux tests / job_bsc_tests_linux (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
GCC / bip-apps (push) Has been cancelled
GCC / bip-no-bbmd-apps (push) Has been cancelled
GCC / bip-client-bbmd-apps (push) Has been cancelled
GCC / gateway (push) Has been cancelled
GCC / bacnet-sc-hub (push) Has been cancelled
GCC / router (push) Has been cancelled
GCC / router-ipv6 (push) Has been cancelled
GCC / router-mstp (push) Has been cancelled
GCC / bip6 (push) Has been cancelled
GCC / mstp (push) Has been cancelled
GCC / ethernet (push) Has been cancelled
GCC / ports-arm-makefile (push) Has been cancelled
GCC / ports-arm-cmake (push) Has been cancelled
GCC / ports-avr (push) Has been cancelled
GCC / ports-lwip (push) Has been cancelled
GCC / mingw (push) Has been cancelled
GCC / piface (push) Has been cancelled
GCC / blinkt (push) Has been cancelled
GCC / gtk-discover (push) Has been cancelled
GCC / ports-esp32 (push) Has been cancelled
Quality / pre-commit (push) Has been cancelled
Quality / scan-build (push) Has been cancelled
Quality / splint (push) Has been cancelled
Quality / cppcheck (push) Has been cancelled
Quality / flawfinder (push) Has been cancelled
Quality / codespell (push) Has been cancelled
Quality / unittest (push) Has been cancelled
Quality / unittest-secure-connect (push) Has been cancelled
CMake / build (macOS-latest, root) (push) Has been cancelled
CMake / build (macOS-latest, test) (push) Has been cancelled
CMake / build (ubuntu-latest, root) (push) Has been cancelled
CMake / build (ubuntu-latest, test) (push) Has been cancelled
CMake / build (windows-latest, root) (push) Has been cancelled
Signed-off-by: Tony <tonylu@tony-cloud.com>
2026-05-04 03:14:10 +08:00
Steve Karg bf5dac2471 refactor: initialize Device_Reinitialize_Data at runtime and clean up unused variables in Device_Configuration_Files_Value (#1325)
BACnet/SC linux tests / job_bsc_tests_linux (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
GCC / bip-apps (push) Has been cancelled
GCC / bip-no-bbmd-apps (push) Has been cancelled
GCC / bip-client-bbmd-apps (push) Has been cancelled
GCC / gateway (push) Has been cancelled
GCC / bacnet-sc-hub (push) Has been cancelled
GCC / router (push) Has been cancelled
GCC / router-ipv6 (push) Has been cancelled
GCC / router-mstp (push) Has been cancelled
GCC / bip6 (push) Has been cancelled
GCC / mstp (push) Has been cancelled
GCC / ethernet (push) Has been cancelled
GCC / ports-arm-makefile (push) Has been cancelled
GCC / ports-arm-cmake (push) Has been cancelled
GCC / ports-avr (push) Has been cancelled
GCC / ports-lwip (push) Has been cancelled
GCC / mingw (push) Has been cancelled
GCC / piface (push) Has been cancelled
GCC / blinkt (push) Has been cancelled
GCC / gtk-discover (push) Has been cancelled
GCC / ports-esp32 (push) Has been cancelled
Quality / pre-commit (push) Has been cancelled
Quality / scan-build (push) Has been cancelled
Quality / splint (push) Has been cancelled
Quality / cppcheck (push) Has been cancelled
Quality / flawfinder (push) Has been cancelled
Quality / codespell (push) Has been cancelled
Quality / unittest (push) Has been cancelled
Quality / unittest-secure-connect (push) Has been cancelled
CMake / build (macOS-latest, root) (push) Has been cancelled
CMake / build (macOS-latest, test) (push) Has been cancelled
CMake / build (ubuntu-latest, root) (push) Has been cancelled
CMake / build (ubuntu-latest, test) (push) Has been cancelled
CMake / build (windows-latest, root) (push) Has been cancelled
2026-04-30 12:19:50 -05:00
Steve Karg 9f4c34f23a refactor: update license documentation for javadoc style and remove unused LGPL-2.1 file 2026-04-30 10:35:08 -05:00
Steve Karg ab48db3720 docs: update CHANGELOG with recent feature additions, bug fixes, and port removals 2026-04-30 10:14:20 -05:00
Hyeongjun Kim b9dc173c57 Support routed virtual device backup/restore reinitialization (#1320)
* Support routed virtual device backup restore reinitialization

Allow routed virtual devices to accept ReinitializeDevice so Backup and Restore
states can be handled per device. Gateway behavior remains unchanged, and
DeviceCommunicationControl remains disabled for virtual devices.

Virtual-device COLDSTART, WARMSTART, and ACTIVATE_CHANGES requests now return
OPTIONAL_FUNCTIONALITY_NOT_SUPPORTED instead of being acknowledged.

* Cover routed device backup restore test variants

Add routed-device tests for ReinitializeDevice service approval, DCC blocking,
virtual-device unsupported reinitialize states, per-device Backup/Restore state,
and backup timeout countdown behavior.

Build device tests in four compile-time variants so BAC_ROUTING and
BACNET_BACKUP_RESTORE are covered in both enabled and disabled combinations.

* Keep routed device variant tests in CTest

Register each optional device test build as its own CTest build/run pair so BAC_ROUTING and BACNET_BACKUP_RESTORE variants keep the existing fixture-based build-before-run behavior without changing the top-level test CMake file.

Constraint: Top-level test/CMakeLists.txt remains unchanged to preserve the existing test registration convention
Confidence: high
Scope-risk: narrow
Tested: cmake -S test -B /tmp/bacnet-stack-test-cmake-pr1320
Tested: ctest --test-dir /tmp/bacnet-stack-test-cmake-pr1320 -R '^test_device(_.*)?$' --output-on-failure -j4
Not-tested: Full repository CTest suite

* Ensure Backup/Restore has real configuration-file storage

Centralize reinitialize state storage so routed devices and the default device use the same access path. Enforce BACNET_BACKUP_FILE_COUNT as a positive Backup/Restore invariant, while preserving BACNET_BACKUP_RESTORE guards for no-backup builds.

Constraint: BACNET_BACKUP_RESTORE performs backup and restore through Configuration_Files[0].
Rejected: Preserve BACNET_BACKUP_FILE_COUNT=0 support | it leaves only state/property handling without a usable backup file.
Confidence: high
Scope-risk: moderate
Directive: Guard no-backup builds with BACNET_BACKUP_RESTORE, not BACNET_BACKUP_FILE_COUNT.
Tested: ctest --test-dir test/build -R '^(build_device|test_device|build_device_backup_restore|test_device_backup_restore|build_device_bac_routing|test_device_bac_routing|build_device_bac_routing_backup_restore|test_device_bac_routing_backup_restore)$' --output-on-failure
Tested: cmake --build build --target server gateway gateway2 bacbasic
Not-tested: Runtime BACnet client backup/restore exchange

---------

Signed-off-by: kimhyeongjun <hjun1.kim@samsung.com>
Co-authored-by: OmX <omx@oh-my-codex.dev>
2026-04-30 09:05:14 -05:00
Steve Karg 1f75040b5c Revert/remove unmaintained ports 2026 (#1324)
* Removed unmaintained ports/uip folder

* Removed unmaintained ports/arduino_uno folder

* Removed unmaintained ports/pic18* folders and references.

* Removed unmaintained ports/rx62n folder.
2026-04-30 08:54:06 -05:00
Steve Karg 755233298b feat: add Last_Restart_Reason property support to Device object (#1323) 2026-04-29 13:36:23 -05:00
Steve Karg fe74113318 bugfix: add null pointer check for value when resetting device identifier in bacdevobjpropref (#1321)
* fix: add null pointer check for value when resetting device identifier in bacdevobjpropref

* test: add regression test for bacnet_device_object_reference_decode with null value pointer
2026-04-29 07:27:19 -05:00
Steve Karg d53d9ea371 bugfix: change lighting command update notifications to use scaled physical values using min/max actual value. (#1315) 2026-04-27 16:43:04 -05:00
Steve Karg ce875c004b Bugfix/lighting command off to off behavior (#1314) 2026-04-25 10:10:30 -05:00
Steve Karg 8188231f31 bugfix: fix lighting command refresh logic in trim set functions (#1313) 2026-04-24 16:43:20 -05:00
Leunar Kalludra f616a8cc68 bip: decouple broadcast destination port from bind port (#1311)
Co-authored-by: Leunar Kalludra <Leunar.Kalludra@de.bosch.com>
2026-04-24 06:40:32 -05:00
Steve Karg 8607b241e9 docs: update CONTRIBUTING.md for clarity and consistency in guidelines 2026-04-22 07:26:04 -05:00
Steve Karg 5e8cabfdb2 Update SECURITY.md to reflect issued CVE. 2026-04-22 07:25:36 -05:00
Steve Karg 167044e164 Update CHANGELOG for recent changes and fixes 2026-04-22 07:24:45 -05:00
Steve Karg 2cf4772ec8 Fixed EPICS values for recipient list, empty lists, and authentication factors (#1310)
* Add BACnet authentication factor support with comparison functions and text strings and parsing

* Fix MyReadPropertyAckHandler to allow zero length for empty property list

* Fix rp_ack_fully_decode_service_request to handle empty recipient list

* Enhance PrintReadPropertyArray to handle empty lists with improved output formatting

* Refactor command line argument handling for target-address to accept dotted IP if offered.

* This commit introduces the inclusion of `authentication_factor.c` and `authentication_factor_format.c` in the CMakeLists.txt files for multiple BACnet tests to fix the broken test builds.

* Refactor bacapp.c for improved readability and documentation; streamline code formatting and enhance function comments.

* Fix return value assignment in bacapp_snprintf_value for authentication format

* Enhance help message to clarify target MAC or IP address format and improve readability

* Implement memory management for ReadProperty ACK service requests and improve error handling in decoding
2026-04-21 22:31:51 -05:00
Steve Karg d16865ff29 fix: ensure COV subscriptions are initialized before processing SubscribeCOV requests (#1309) 2026-04-21 15:03:23 -05:00
Steve Karg d8b439895f Update SECURITY.md to reflect supported versions, add new CVE, and improve vulnerability reporting guidelines 2026-04-21 07:06:06 -05:00
Steve Karg ff894b074d Update CHANGELOG for recent changes and fixes 2026-04-21 06:32:41 -05:00
Steve Karg 9edf957366 Feature/lighting output and command loose coupling (#1306)
* Refactor lighting output and lighting command structure for loose coupling.  Add locking callbacks in lighting command.

* Enhance lighting command handling with locking mechanism

- Added locking and unlocking functionality to critical sections in lighting command functions to ensure thread safety.
- Introduced new functions `lighting_command_lock` and `lighting_command_unlock` for explicit locking.
- Updated existing functions to utilize the new locking mechanism, preventing concurrent access issues.
- Refactored notification and clamping functions to support locking, ensuring data integrity during operations.
- Added getter and setter functions with internal locking to access the lighting command data
2026-04-20 16:17:40 -05:00
Steve Karg 1c3506403d Fix BBMD_Result handling to avoid false positive error message when no registration is requested. (#1305) 2026-04-20 11:52:44 -05:00
Steve Karg b9149dd639 Refactor/cov subscriptions encoding decoding test (#1296)
* Add BACnetRecipientProcess type encoding and decoding functions with associated tests

* Refactor COV subscription encoding and decoding functions to reduce code size and reuse existing unit tested functions.

* Refactor COV subscription handling to simplify error checking
2026-04-20 10:53:55 -05:00
KANG HYEONSEOK 52561f2336 Optimize COV Subscriptions using keylist (#1295)
* Added performance optimization in COV Subscriptions using keylist

* Add memory exhaustion check to Keylist_Data_Add, fix CheckArraySize return value
- Keylist_Data_Add: return -1 when node allocation fails
- CheckArraySize: return false instead of true when calloc fails (typo)
2026-04-20 06:34:25 -05:00
Steve Karg 6a10cc643e chore: bump version to 1.6.0-rc1 and add contributing guidelines 2026-04-19 06:59:01 -05:00
Steve Karg b8be746884 docs: update release script instructions to include pushing tags and mirroring to SourceForge 2026-04-16 11:40:57 -05:00
Steve Karg 61a7a53bea chore: release version 1.5.0 and update documentation for additional tools and environment variables 2026-04-16 10:35:39 -05:00
Steve Karg ba2d357784 Fix decode functions for signed integers to prevent undefined behavior by using unsigned values (#1300) 2026-04-10 06:23:17 -05:00
jenahn0630 f8bbc0b006 Fix Bug: Update RS485 baud rate configuration to use dlmstp_baud_rate(mstp_port) instead of shared data enum value (#1294) 2026-04-08 16:36:21 -05:00
Steve Karg 7536c6b6fa Fix type limits for uint32_t in sscanf and printf across multiple files (#1298) 2026-04-08 16:35:31 -05:00
Steve Karg ad89cba29b Add additional writable properties to OctetString and fix write property to present-value priority 6 logic. (#1297) 2026-04-07 16:31:27 -05:00
Steve Karg e77e070d90 Fix type definitions for inner_tag and object_instance when uint32_t is defined as long unsigned int instead of unsigned int (#1293)
* Fix type definitions in bacapp.c for inner_tag and object_instance when uint32_t is defined as long unsigned int instead of unsigned int

* Change DNET_list type from int to int32_t across multiple files to avoid compiler warnings when int32_t is defined as long int instead of int.
2026-04-06 11:51:36 -05:00
Kato Gangstad 589a61b287 esp32: replace port with PlatformIO implementation and add CI build (#1292) 2026-04-06 08:33:17 -05:00
Steve Karg 3d668f2f96 Bugfix/special event read property write property (#1291)
* Fixed special-event to print priority for the RP and RPM and EPICS example apps.

* Improved error message for tag value parsing in WP example app.

* Added BACnet property array parsing function to handle property string name in RPM example app.

* Added unit test to validate BACnet special event with multiple time-value pairs
2026-04-02 09:09:49 -04:00
Steve Karg a8e2b53aa0 Reverted unsigned decorator to BACNET_MAX_INSTANCE and BACNET_MAX_OBJECT constants since they are compared to signed values in some use cases which then fails when unsigned is promoted. 2026-04-01 22:28:05 -04:00
Steve Karg 83fc4b351e Implement parsing for BACnetSpecialEvent in bacapp and add unit tests (#1290) 2026-04-01 16:27:36 -04:00
Hyeongjun Kim 236250492e Fixed off-by-one bug in gateway main() causing duplicate I-Am broadcast (#1289)
When Routed_Device_Index reached MAX_NUM_DEVICES, Get_Routed_Device_Object()
returned NULL without updating iCurrent_Device_Idx, causing Send_I_Am() to
broadcast the previous device's I-Am again.

* Initialize Routed_Device_Index to 1 (first routed device index)
* Move increment after Send_I_Am() to prevent out-of-bounds access

Signed-off-by: kimhyeongjun <hjun1.kim@samsung.com>
2026-03-31 09:44:08 -04:00
Hyeongjun Kim f408b6eb7f Add multi-device support for BACnet gateway routing (#1279)
* Expanded Object_List to Object_List[MAX_NUM_DEVICES] array to support per-device objects for virtual remote devices
* Added multi-device iteration for COV handler, device timer, and intrinsic reporting
* Added apps/gateway2 demo application
* When MAX_NUM_DEVICES == 1, behavior is identical to the original implementation
* Conditional compilation with macros ensures no impact on non-gateway applications

---------

Signed-off-by: Hyeongjun Kim <hjun1.kim@samsung.com>
Co-authored-by: haemeok-kang <haemeok.kang@samsung.com>
2026-03-30 15:16:17 -04:00
Steve Karg b8dd89b879 Feature/structured view object subordinate list add remove (#1283) 2026-03-27 15:08:37 -05:00
Steve Karg 6f3d25b5ba Refactor CMakeLists.txt to replace BIG_ENDIAN definition with BACNET_BIG_ENDIAN to fix missing function in builds. (#1284) 2026-03-27 14:40:21 -05:00
Steve Karg 326a47b688 Remove push and pull_request triggers, keeping only workflow_dispatch for macOS CI tests 2026-03-27 14:38:00 -05:00
Steve Karg e695d399b0 Change macOS runner from macos-15-intel to macos-14-large for CI workflow 2026-03-27 14:28:49 -05:00
Steve Karg 40932a39db Update macOS runner version to macos-15-intel for CI workflow 2026-03-27 14:25:45 -05:00
Hyeongjun Kim fa6dc86ee4 Added INTRINSIC_REPORTING CMake option to enable intrinsic reporting at build time (#1275)
Signed-off-by: kimhyeongjun <hjun1.kim@samsung.com>
2026-03-26 15:37:02 -05:00
Hyeongjun Kim 5ec8f27487 Fixed missing keylist.h include in objects.h for OS_Keylist type dependency (#1277)
Signed-off-by: kimhyeongjun <hjun1.kim@samsung.com>
2026-03-26 15:26:50 -05:00
Steve Karg d562374f53 Fixed javadoc header in bvlc-pico. Added ports/pico to CHANGELOG. 2026-03-25 08:55:04 -05:00
Testimony 17e94092a1 Add Raspberry Pi Pico port (#1232)
* Add Raspberry Pi Pico port
- Adds BACnet/IP with abstracted network layer
- Adds BACnet MS/TP support using RS485/UART
- Includes README with examples

* Add Pico 2 MS/TP demo, CI, and docs
2026-03-25 08:22:09 -05:00
Ping 5eda68d381 Add void *context field to service data structures (#1265) 2026-03-23 12:22:28 -05:00
dependabot[bot] cbf716f61b Bump microsoft/setup-msbuild from 2 to 3 (#1271)
Bumps [microsoft/setup-msbuild](https://github.com/microsoft/setup-msbuild) from 2 to 3.
- [Release notes](https://github.com/microsoft/setup-msbuild/releases)
- [Commits](https://github.com/microsoft/setup-msbuild/compare/v2...v3)

---
updated-dependencies:
- dependency-name: microsoft/setup-msbuild
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-23 08:03:02 -05:00
Hyeongjun Kim b7abd5016e Fixed missing BACNET_STACK_EXPORT macro for PositiveInteger_Value_Count() function declaration (#1273)
Signed-off-by: kimhyeongjun <hjun1.kim@samsung.com>
2026-03-23 08:02:17 -05:00
Steve Karg d3b0a9577b Add lighting_command_refresh() unit test (#1269)
* Add lighting_command_refresh() unit test

* Add tests for lighting output writable property list and warn relinquish behavior
2026-03-20 17:34:00 -05:00