Commit Graph

179 Commits

Author SHA1 Message Date
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 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 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
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 83fc4b351e Implement parsing for BACnetSpecialEvent in bacapp and add unit tests (#1290) 2026-04-01 16:27:36 -04:00
Steve Karg b8dd89b879 Feature/structured view object subordinate list add remove (#1283) 2026-03-27 15:08:37 -05:00
Steve Karg d562374f53 Fixed javadoc header in bvlc-pico. Added ports/pico to CHANGELOG. 2026-03-25 08:55:04 -05:00
Steve Karg 45541659e2 Updated CHANGELOG for recent changes. 2026-03-20 17:12:40 -05:00
Steve Karg 91090d3ff8 Add octet string buffer duplication functions and refactor related structures (#1266)
* Add new functions for duplicating and copying octet string buffers.

* Move and update octet string value object structure with description string and add object-name and description WriteProperty handling using strdup. Add functional tests to ensure the correctness of the new features.
2026-03-18 13:13:00 -05:00
Steve Karg 1c9af1632b Fixed FQDN hostname limit in minimal hostnport implementation (#1263) 2026-03-16 17:16:27 -05:00
Steve Karg a755a8db4d Feature/octetstring value and length api (#1264)
* feat: add octetstring_length_value_same function for length and content comparison

* feat: add tests for characterstring UTF-8 validation

* feat: add tests for octetstring_init_ascii_epics validation

* feat: add test for bacnet_strdup string duplication validation

* feat: add utf8_isvalid test cases

* feat: add octet string value API for present-value octet-string value and length, and out-of-service properties
2026-03-16 17:04:23 -05:00
Steve Karg 3637149363 docs: add latest changes to CHANGELOG. 2026-03-12 10:23:51 -05:00
Steve Karg f525e7c484 Bugfix/read-range-address-list-encode (#1149)
* Fix: Corrected `rr_address_list_encode` to properly handle the end of the address cache and added a new test case to validate ReadRange operations near the cache limit.
2026-03-12 09:05:04 -05:00
Steve Karg 07bfc7c61c Fix Trend Log ReadRangeACK BY_SEQUENCE where an incorrect FirstSequence is sometimes returned. (#1150) 2026-03-12 08:13:04 -05:00
Steve Karg a5f2b2b125 Add property_list_read_only_member function to check for READ-ONLY properties (#1258) 2026-03-11 07:17:30 -05:00
Steve Karg fda63eb1aa Changed COV FSM handler to stay IDLE until there is a valid subscriber. (#1257) 2026-03-09 13:39:57 -05:00
Steve Karg 926bc17801 Feature/writable structured view object lists (#1256)
* Added WriteProperty handler in the Structured View object with handling for object-name, description, node-subtype, node-type, default-subordinate-relationship, represents, subordinate-list, subordinate-annotations, subordinate-node-types, and subordinate-relationships in the basic Structured View object.

* Changed Structured View character strings for object-name, description, and node-subtype to use dynamic strings to support WriteProperty.

* Added characterstring_utf8_valid(), characterstring_utf8_strdup() and write_property_characterstring_utf8_strdup() for UTF-8 string duplication.

* Added write property tests for array handling and validation of array index values
2026-03-06 10:23:42 -06:00
Steve Karg 8c47e8c9a3 Added array size parameter in BACnet array write handlers avoid a duplicate decoding operation. Avoid duplicate checking of array size in object handlers. (#1253) 2026-03-05 10:15:47 -06:00
Steve Karg b17a7c6084 Add bacnet_strdup function to replace POSIX strdup and update bacfile to use it (#1251) 2026-03-04 07:14:25 -06:00
Steve Karg 70914cf4d8 Fixed Device Management-Backup and Restore-B functionality to keep configuration files during the restore operation. (#1250) 2026-03-03 14:26:13 -06:00
Steve Karg 7535953235 Prevent deletion of backup files during restore process (#1249) 2026-03-03 11:37:21 -06:00
Steve Karg 1e9347f8f3 Bugfix/backup restore failure timeout (#1247)
* Added backup failure timeout functionality and related methods in device management

* Fixed STARTBACKUP to hold at PERFORMING_A_BACKUP per spec, not IDLE.

* Added error handling for reinitialization during restore process to prevent accidental delete of all objects.

* Added some missing Create/Delete object functions. Formatting.

* Fixed Program object type in bacnet_device.c module.
2026-02-27 10:33:10 -06:00
Steve Karg 1437a68ce1 Add CreateObject and DeleteObject for Octet String and Positive Integer Values (#1246)
* Added CreateObject and DeleteObject for basic Octet String Value and Positive Integer Value objects.

* Changed PositiveInteger present-value datatype to BACNET_UNSIGNED_INTEGER.
2026-02-26 16:25:03 -06:00
Steve Karg 24587dfc27 Add PROP_TIMER_RUNNING to writable properties and implement Timer_Running_Set functionality (#1245) 2026-02-26 11:26:42 -06:00
Steve Karg a70ce07507 Secure BACnet decoders and service requests (#1244)
* Secured BACnetAssignedAccessRights decoder.

* Secured BACnetPropertyState decoder.

* Secured BACnetCredentialAuthenticationFactor decoder.

* Secured BACnetEventState change-of-state [1] SEQUENCE decoder.

* Secured I-Have-Request service decoder.

* Secured Add/Remove ListElement service request decoder.

* Secured ConfirmedPrivateTransfer-Request and UnconfirmedPrivateTransfer-Request decoders.

* Secured ReadPropertyMultiple-Request and -Ack decoders.

* Secured TimeSynchronization-Request decoder.

* Secured WritePropertyMultiple service decoders

* Secured Trend Log object TL_fetch_property() function.

* Secured ReadProperty-Ack decider,

* Refactor BACnet time sync recipient handling by moving timesync linked list structure into bacdest where the recipient encoder and decoder already existed.

* Secured decoding of BACnetPropertyState.

* Secured decoding in the LifeSafetyOperation-Request service.

* Secured BACnetAuthenticationFactor decoding in the Credential Data Input object.

* Fixed WriteProperty decoder to avoid read buffer overrun.  Improved WriteProperty error reporting by adding specific reject codes during decoding similar to WritePropertyMultiple. Deduplicated the WriteProperty handling of abort, reject and error codes.

* Added BACNET_STACK_DEPRECATED_DISABLE guards around all of the deprecated decoding functions to ensure they are not used except intentionally for legacy code bases.

* Changed version to 1.5.0.rc5 for security fix tracking in branch.
2026-02-26 10:48:25 -06:00
Steve Karg cf4f62f7e0 Added Who-Is-Router process for Notification Class recipient unknown router addresses. (#1243)
* Added Who-Is-Router-To-Network process in basic Notification Class when recipient address is missing the router MAC address.

* Added buffer_length parameter to octet string buffer decode functions

* Fixed BACnet address handling for I-Am-Router address updating the recipient list address for the next hop router.

* Changed VMAC encoding and decoding to use octet string buffer API to reduce stack RAM.
2026-02-25 09:58:38 -06:00
Steve Karg e11cd319da Add initialization and unpacking functions for BACnet Character String buffer decoder. (#1242) 2026-02-24 21:15:29 -06:00
Steve Karg 578f507125 Secure the BVLC decoders by replacing deprecated primitive and complex data decoders. (#1241) 2026-02-20 10:30:46 -06:00
Steve Karg 8209673c43 Add Host-N-Port minimal encode and decode (#1239)
* Added Host-N-Port minimal encode and decode which utilizes the octet string buffer and character string buffer encode and decode API.
2026-02-20 08:55:40 -06:00
Steve Karg 4597dfe7ef Added API for extending the basic Device object and children with proprietary properties for ReadProperty and WriteProperty services. (#1238)
* Added callback API for extending the basic Device object and children with proprietary properties for ReadProperty and WriteProperty services. The callback API includes a function to get the specific proprietary property list for any specific object instance in the device, functions to handle the ReadProperty or WriteProperty of the proprietary property.

* Added a new property_list_function typedef to proplist.h for proprietary property list callbacks

* Removed the object-specific proprietary property implementation from the Loop object

* Added test coverage in the Device test validating the proprietary property API usage
2026-02-20 06:57:05 -06:00
Steve Karg 2874dcea5e Add octet and character string buffer codecs to used with fixed size buffers that are not declared as BACNET_OCTET_STRING or BACNET_CHARACTER_STRING. (#1237) 2026-02-19 13:52:23 -06:00
Steve Karg b931226135 Updated CHANGELOG for pull-request #1230 2026-02-17 09:54:46 -06:00
Steve Karg 6bd2b42334 Add Create & Delete to Accumulator object (#1234)
* Added CreateObject and DeleteObject for basic Accumulator objects.
 
* Added WriteProperty handling for object-name, scale, out-of-service, units, and max-pres-value.
2026-02-17 08:31:00 -06:00
Steve Karg c9f2836025 Add BACnet reinitialized state names and parser (#1228) 2026-02-13 10:23:25 -06:00
Steve Karg 4cc8067c86 WriteProperty decoding length underflow (#1231)
When decoding the optional priority context tag in wp_decode_service_request(), the code passes apdu_len - apdu_size to bacnet_unsigned_context_decode instead of apdu_size - apdu_len. Similar typo in bacnet_action_command_decode().
2026-02-13 08:44:39 -06:00
Steve Karg 9330c47a34 Remove BACFILE dependency in RAM file systems and add mock file object functions for testing (#1227) 2026-02-12 17:15:31 -06:00
Steve Karg 7e13980899 Updated CHANGELOG for recent changes. 2026-02-09 16:25:50 -06:00
Steve Karg 420c74635c Updated CHANGELOG for recent pull-request. 2026-02-06 21:05:54 -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 94e79efead Bugfix/example-app-uevent-event-parsing (#1221)
* Added Send_UEvent_Notify_Device function for device-specific unconfirmed event notifications.

* Fixed event_notify_parse() loop index to start from zero.

* Added device ID binding support in the UEvent command-line application.

* Fixed the UEvent command-line application help output.

* Fixed initialization of event data in the UEvent command-line application by adding static CharacterString for message text and handling the failure case.
2026-02-05 13:41:56 -06:00
Steve Karg edff06a9c0 Fix You-Are-Request encoding and decoding to use object-id instead of unsigned. (#1220) 2026-02-05 08:10:45 -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 577ecf8d7f Added handling for abort and reject errors in Write Property service (#1216) 2026-02-02 13:54:26 -06:00
Steve Karg 59218819c1 Added end-of-blink callback for warn-off and warn-relinquish lighting commands (#1214)
* Added Blink.Callback and Blink.Priority to support end-of-blink actions for WARN_OFF/WARN_RELINQUISH. The Blink.Callback is invoked when a blink sequence ends or when a new command interrupts a WARN_OFF/WARN_RELINQUISH in progress.

* Added Lighting Output (LO) WARN_OFF/WARN_RELINQUISH post-egress priority array handling using the Blink.Callback
2026-01-29 16:03:55 -06:00
Steve Karg 20f402f5b6 Fix lighting output commands for warn-off and warn-relinquish (#1212)
* Fixed lighting output object lighting-commands for warn-off and warn-relinquish when blink-warn notification shall not occur.

* Fixed timer object task to initiate a write-request at expiration.

* Added channel and timer object write-property observers in blinkt app to monitor internal writes.

* Added vacancy timer command line argument in blinkt app for testing initial timer object vacancy time for lights channel.
2026-01-28 06:39:02 -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
Steve Karg 2b59aa1a99 Add RGB pixel and brightness APIs, update Blinkt example (#1210)
* Added API to get the RGB pixel and brightness values from the blinkt interface.

* Fixed Channel object for Color object present-value which does not use coercion.

* Added API to the color-RGB library to convert from ASCII CSS color name to X,Y and brightness.

* Converted the Blinkt example app to use the basic-server.  Added a default color name command line option --color that accepts CSS color names. Set the color and brightness at startup.

* Added vacancy timer for lights using timer object defaulted to 30m and started at startup.
2026-01-27 07:34:32 -06:00
Steve Karg 4924a57ccc Add enumeration text lookup for BACnet types (#1209)
* Added enumeration text lookup for BACnetAuthenticationStatus, BACnetAuthorizationMode, BACnetAccessCredentialDisable, BACnetAccessCredentialDisableReason, BACnetAccessUserType, BACnetAccessZoneOccupancyState, BACnetWriteStatus, BACnetIPMode, BACnetDoorValue, BACnetMaintenance, BACnetEscalatorFault, BACnetEscalatorMode, BACnetEscalatorOperationDirection, BACnetBackupState, BACnetSecurityLevel, BACnetLiftCarDirection, BACnetLiftCarDoorCommand, BACnetLiftCarDriveStatus, BACnetLiftCarMode, BACnetLiftFault, BACnetLiftGroupMode, BACnetAuditLevel, BACnetAuditOperation, BACnetSCHubConnectorState, BACnetSCConnectionState, BACnetNodeRelationship, BACnetAction, BACnetFileAccessMethod, BACnetLockStatus, BACnetDoorAlarmState, BACnetDoorStatus, BACnetDoorSecuredStatus, and BACnetAccessEvent.

* Created BINARY_PV_MAX with the same semantic meaning as one more than the last valid enumeration, and deprecated MAX_BINARY_PV usage in the examples.

* Reduced code size by using bactext_property_states_strtoul() instead of individual API for each enumations.
2026-01-24 16:11:25 -06:00
Steve Karg 81c42566a7 Enhance C89 compatibility by replacing strtof and strtold with strtod in conversion functions (#1207) 2026-01-21 12:12:06 -06:00
Steve Karg 3a0878a254 Add API for writable object property lists (#1206)
Added a new API for writable property lists across all the basic example object types, preparing for the introduction of a Writable_Property_List property in every object in a future BACnet standard revision.

The lists can be used by backup and restore feature to automatically choose the object property values in the backup that can be restored via internal WriteProperty directly from BACnet CreateObject services with  List of Initial Values. 

Updated existing device object examples to include these writable property lists.
2026-01-21 10:02:21 -06:00