Commit Graph

115 Commits

Author SHA1 Message Date
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
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 05027855ef Fixed conditional compilation of mstp.c and mstptext.c based on BACDL_MSTP option (#1229)
* Changed mstp.c and mstptext.c to be conditionally included using CMake generator expression
* Files are now only compiled when BACDL_MSTP is enabled

Signed-off-by: kimhyeongjun <hjun1.kim@samsung.com>
2026-02-13 08:40:09 -06:00
Steve Karg 5724959132 Removed ifdef BACFILE where no longer needed. (#1225) 2026-02-12 08:42:35 -06:00
Steve Karg 1d1cf9bfac Feature/create object initial value backup (#1223)
* Added example Device object and property value backup using create-object list-of-initial-values and writable properties. Initiated using ReinitializeDevice with STARTBACKUP command. Added backup and restore required properties to the Device object.

* Fixed fwrite parameters in bacfile_posix_write_stream_data to return the correct number of bytes written.

* Added Device Management-Backup and Restore-B (DM-BR-B) conversion to Wireshark PCAP format command line utility in apps/dmbrcap which decodes and provides a view of the binary backup file.
2026-02-06 16:54:10 -06:00
Steve Karg 8cd1d82d81 Add segmentation support functions (#1218)
* Added segmentation support functions and example changes, but no support for segmentation in the TSM or APDU handlers.
2026-02-04 17:03:13 -06:00
Steve Karg b6d895ccf0 Update BACnet protocol revision and enhance lighting output handling (#1211)
* Changed apps to build at protocol-revision 28 to be able to use the lighting output special values by default.

* Fixed blinkt app server name and removed the device.c module which was no longer needed.

* Added debug prints for lighting-output object for present-value and lighting-command property values which may be out-of-range.
2026-01-27 10:45:28 -06:00
Patrick Grimm 2f6132b13e Fix mstp on bsd port (#1193)
* fix mstp on macos NS_PER_S is 1s and 0ns

* fix compile on freebsd

* port bsd: add compile warnings and comments

* port bsd: limit pthred prio to OS defined min/max value
e.g. FreeBSD min=0 max=31

* port bsd: fix clangformat
2025-12-24 18:50:29 -06:00
Steve Karg 380540635c Refactored BACnetShedLevel encoding, decoding, and printing into separate file. Added unit testing. (#1187)
* Refactored BACnetShedLevel encoding, decoding, and printing into separate file.  Added unit testing.

* Added API to load control object for shed-level, start-time, duty-window, full-duty-baseline, and enable.

* Fixed bacapp sprintf for shed level and host-n-port found in scan build.
2025-12-12 08:32:42 -06:00
Steve Karg 2a6c251803 Revert "Added segmentation support for server reply. (#974)"
This reverts commit 3ea710f92f.
2025-11-17 22:26:50 -06:00
Steve Karg 3ea710f92f Added segmentation support for server reply. (#974)
Added segmentation support for server devices for some services. Configure BACNET_SEGMENTATION_ENABLED=1 to include in the library, and adjust BACNET_MAX_SEGMENTS_ACCEPTED for maximum number of segments.
2025-11-15 13:33:36 -06:00
Steve Karg 51358e83f9 Changed version to 1.5.0.rc1 2025-11-15 13:07:41 -06:00
Steve Karg 0682428c86 Released version 1.4.2 on 15-Nov-2025. 2025-11-15 12:52:22 -06:00
Steve Karg 74972bd025 Added a basic creatable loop object with PID control (#1141)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-13 16:11:19 -06:00
Steve Karg 4e52f26823 Added Audit Log and Time Value objects to basic device. (#1128)
* Added ListElement service callback for storing data.  

* Added Audit Log and Time Value objects to basic device.

* Added Audit Log object to Makefile and CMake builds.
2025-11-06 14:10:07 -06:00
Steve Karg 4dd13cf199 Added basic timer object, internal state machine, and unit tests (#1123)
* Added basic timer object, internal state machine, and unit tests

* Added BACnetTimerStateChangeValue encode, decode, parse, print, and diff with unit tests

* Changed handler of add/remove list element to check if the property is a BACnetLIST

* Added BACnetLIST utility for handling WriteProperty to a list.

* Fixed outlier ReadProperty object handlers to return zero when the RP parameter is NULL.
2025-11-05 15:11:45 -06:00
Steve Karg ad5a43042c Added MS/TP datalink option to BACnet basic server example. (#1077) 2025-08-25 11:02:43 -05:00
Steve Karg 3f8b8b5619 Added dynamic and static RAM file systems to use with file objects. (#1058)
* Added dynamic RAM file system to use with basic bacnet file object.

* Added static RAM file system to use with basic bacnet file object.

* Added check for read-only during AtomicWriteFile service API for BACnet File object.

* Change stm32f4xx example to use static RAM file system.

* Fixed bacfile_count() function return type
2025-08-08 15:35:13 -05:00
Steve Karg 1bebd6ac81 Refactored the bacnet file object to be storage agnostic with callbacks. (#1056) 2025-08-01 09:58:07 -05:00
Steve Karg f31193998c Add BACnet Zigbee VMAC table and unit test. (#1054) 2025-07-31 08:57:53 -05:00
Alonso Cárdenas 66bb52e7f0 Fixed issues on FreeBSD with CMake build for BSC and IPv6 datalinks. (#1046) 2025-07-16 09:48:50 -05:00
Steve Karg 5072fb5913 Feature/add who am i and you are services (#1024)
* Added Who-Am-I-Request encoding, decoding, unit tests, and command line application bacwhoami.

* Added You-Are-Request encoding, decoding, unit tests, and command line application bacyouare.

* Added Who-Am-I with Who-Is and You-Are handling into the example server application when run as device 4194303.
2025-06-23 10:49:59 -05:00
Ryan Mulder cb7ef20485 Fixed Linux MS/TP 76800 bitrate for Linux 2.6.20+ circa 2007 and added get/set API for config. (#1007) 2025-05-29 08:54:12 -05:00
Steve Karg 54dbf9d140 Changed dlenv to support multiple datalinks via environment variable. (#966) 2025-04-16 12:04:18 -05:00
Steve Karg c111154993 Updated CHANGELOG for v1.4.1 release on April 11, 2025. Happy birthday to me! 2025-04-11 21:19:21 -05:00
Steve Karg 6f7f3649a5 Bugfix/read range trend log buffer (#947)
* Fixed ReadRange app to read and pretty-print a Trend Log log-buffer
2025-03-25 10:32:11 -05:00
Steve Karg f1ea03647f Bugfix/bacmini-updates-with-program-object-and-cmake (#941)
* Added bacmini example app with minimal analog and binary objects  (#934)

* Fixed bacmini app build for Makefile and CMake

* Changed the folder for bacmini application to server-mini

---------

Co-authored-by: Ben Bartling <ben.bartling@gmail.com>
2025-03-13 17:18:47 -05:00
Steve Karg 4df896b820 Feature/basic-program-object (#940)
* Added basic Program object and unit test.

* Integrate the basic Program object with example applications.
2025-03-13 15:51:37 -05:00
Steve Karg b0a26cf2cd Changed BACnet app example server-basic name (#935) 2025-03-03 09:10:04 -06:00
Steve Karg 3e480f41e2 Ported bacnet-basic from zephyr project to create basis for mini example. (#933) 2025-02-27 15:49:29 -06:00
RJ Vandermate f0461078ba Fixed CMakeLists routing option (#874)
* If BAC_ROUTING was turned off, the gateway app wasn't deselected
2024-12-12 09:16:46 -06:00
Steve Karg fd3be47d86 Feature/date time mstimer clock (#861)
* Added daylight savings time calculation module with unit testing.

* Added datetime daylight savings time and clock API

* Added basic datetime_local() clock using mstimer as basis and time-sync option.  Integrated clock with ports/stm32f4xx example.
2024-11-24 11:20:25 -06:00
Steve Karg 776b212995 Removed strcasecmp and strncasecmp because they are non-standand C functions. (#858) 2024-11-21 12:29:08 -06:00
Steve Karg 51c915a5da Bugfix/lighting output dimming refactor (#855)
* Refactored lighting command operations from the lighting output object, and added unit testing. Integrated the result back into lighting-output object.
2024-11-13 15:24:25 -06:00
Steve Karg f332225b19 Release/version 1.4.0 candidate (#758) 2024-11-04 07:40:17 -06:00
Steve Karg cf77abac9b Feature/bacnet secure connect hub (#818)
* Added BACnet Secure Connect datalink.

* Added BACnet/SC hub application
---------

Co-authored-by: Kirill Neznamov <kirill.neznamov@dsr-corporation.com>
Co-authored-by: Mikhail Antropov <michail.antropov@dsr-corporation.com>
Co-authored-by: Ondřej Hruška <ondra@ondrovo.com>
Co-authored-by: Patrick Grimm <patrick@lunatiki.de>
2024-11-04 07:05:26 -06:00
Steve Karg 3329dff337 Added WriteGroup service and Channel object interfaces (#829) 2024-10-25 10:43:29 -05:00
Steve Karg dcf79b038f Enabled BACnetARRAY checking when using proplist.c and added to apps/epics (#823) 2024-10-23 13:54:48 -05:00
Patrick Grimm d3de5c9491 fix missing router-mstp in cmake (#820) 2024-10-21 07:53:32 -05:00
Patrick Grimm b9de08cf60 Feature/router bsd (#821)
* fix router compile warnings declaration-after-statement overlength-strings

* router disable PRINT(debug_level)

* ports rename dlmstp_[linux|bsd] to dlmstp_port

* copy ports/linux/dlmstp_port.c ports/bsd/dlmstp_port.c

* copy ports/linux/dlmstp_port.c ports/bsd/dlmstp_port.c

* fix typedef in bip_get_local_address_ioctl

* copy ports/linux/dlmstp_port.c ports/bsd/dlmstp_port.c

* add bsd support for router app

* fix clang __attribute__ optimize dont work
clang O2/O3/Os are also not working

* fix pre-commit

* fix bsd SO_BINDTODEVICE is not available

* add brew install libconfig for app router and bsd

* fix BACDL_MSTP test on macOS

* remove old comments
2024-10-21 07:53:01 -05:00
Patrick Grimm a71d4b95eb Fix/router ipv6 test (#806)
* fix app router-ipv6: duplicate symbol
Makefile use Device_Object_Instance_Number from device-client.c (Device_Object_Instance_Number is not in bacnet.a from Makefile)

Cmake use Device_Object_Instance_Number from libbacnet-stac.a:device.c

This fix #778

* test ipv6
2024-10-14 07:55:04 -05:00
Patrick Grimm 385c6bbd5d fix app router-ipv6 cmake (#800)
remove not existing router-ipv6.h
2024-10-09 06:15:56 -05:00
Patrick Grimm 7178120176 fix app router cmake (#799)
Don't use return.
a) this is an if else
b) all apps below this would not be build
2024-10-08 12:54:53 -05:00
Patrick Grimm 9d5c3ec515 fix app router cmake (#794)
add missing port/linux/dlmstp_linux.c used by mstpmodule.c
2024-10-04 13:48:40 -05:00
Patrick Grimm 712dda8bbe fix server app doesn't work with BAC_ROUTING (#783) 2024-10-04 13:47:52 -05:00
Patrick Grimm 90dcd9dca1 win32: fix ethernet and bip6 (#774)
Switch from WinPcap ton npcap.
Include npcap sdk in cmake
add libs for ipv6 in cmake
fix ethernet uninitialized var
2024-10-04 13:46:34 -05:00
Patrick Grimm 93afcfe062 fix duplicated ports/bsd/bip-init.c (#781) 2024-09-24 16:23:38 -05:00
Patrick Grimm e451b3dc26 add uci include and lib for cmake (#779) 2024-09-23 11:52:27 -05:00
Patrick Grimm 55a242361d add ether support for mac os x (#775)
Depends on pcap (e.g. with Wireshark)
build with
#cmake .. -G"CodeBlocks - Unix Makefiles" -DBACDL_ETHERNET=ON -DBACDL_BIP=OFF -DBAC_ROUTING=OFF
run as normal user (not root) like Wireshark
2024-09-23 11:51:13 -05:00
Patrick Grimm a0ffd96f8f Fixed cmake dependencies to build readbdt, readfdt and router-ipv6 if BACDL_BIP=OFF (#777) 2024-09-23 09:52:36 -05:00