* Refactored the BACnet/SC datalink initialization order by moving certificate file checks and hub connection registration to occur after datalink initialization
* Replaced stdlib rand() with platform-specific cryptographically secure random functions (RtlGenRandom for Windows, getrandom for Linux, arc4random_buf for BSD) to generate UUID and VMAC addresses, preventing duplicates that broke connections
* Enabled conditional debug output in BACnet/SC components when BUILD=debug is specified
* Added a new getter API function Timer_State_Change_Value_Get() to the timer object that returns state-change values by copying them to a caller-provided buffer, providing a safer alternative to the existing Timer_State_Change_Value() function which returns a direct pointer to internal data.
* Fixed compiler warning: ‘calloc’ sizes specified with ‘sizeof’ in the earlier argument and not in the later argument [-Wcalloc-transposed-args]
* Fixed compile error found in pipeline build.
* Fixed pre-commit
* 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.
* Secured event and authentication decoding by removing deprecated functions.
* Added extended, discrete-value, double-out-of-range, signed-out-of-range, unsigned-out-of-range, change-of-characterstring, change-of-status-flags, change-of-reliability, and change-of-timer event notification encode, decode, and unit testing with #ifdef disabled by default.
* 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.
* Converted device object test to use common read-write property test. Extended the basic BACnet device object example API.
* Created BACnet/IP and COV test mocks to enable device object testing with less dependencies.
* Fixed Lighting_Command to ignore write priority and use its own.
* Fixed BACnetLightingOperation reserved range.
* Refactor overridden into the lighting command module. Added Overridden status flags API. Added Lighting Output API to implement a momentary override to the output that is cleared at the next lighting command. Integrated lighting command overridden behavior into the lighting output object.
* Added Trim_Fade_Time, High_End_Trim, Low_End_Trim, Last_On_Value and Default_On_Value properties to lighting output.
Added TRIM_ACTIVE flag to lighting command. Added Last_On_Value and Default_On_Value to lighting command for restore and toggle.
* Fixed AddListElement and RemoveListElement which were checking the wrong return value from Device object.
* Fixed decoding of ListElement Tag 0: Object ID instance.
* Fixed Notification_Class_Add_List_Element() and Notification_Class_Remove_List_Element() element counter index, and empty slot detection.
* Added bacnet_recipient_device_set() and bacnet_recipient_address_set() API
* Added unit test coverage for Notification Class object.
* 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
* 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.
* Fixed GetEvent usage of linked list by initializing next in all the examples and unit test.
* Secured GetEventInformation encoders by accepting NULL for APDU for determining the size, and exploit the NULL APDU for size checking during encoding. Secured the GetEventInformation decoders and removed the use of deprecated decoder API.
* Extended some BACnet enumerations from 135-2024 protocol-revision 25-30.
* Changed usage of _FIRST and _LAST to _MIN and _MAX in some enumerations to be consistent.
* Added object type and services supported BACnetBitString sizes for protocol revision 25-30
*Added new BACnetPropertyIdentifier, BACnetEngineeringUnits, BACnetEventState, BACnetRestartReason, BACnetLifeSafetyMode, BACnetLifeSafetyOperation, BACnetLifeSafetyState, BACnet_Services_Supported, BACnetLightingOperation, BACnetBinaryLightingPV, BACnetNetworkPortCommand, BACnetAuthenticationDecision, BACnetAuthorizationPosture, BACnetFaultType, BACnetPriorityFilter, BACnetResultFlags, and BACnetSuccessFilter enumerations.
* Added BACnet text for BACnetLifeSafetyMode, BACnetLifeSafetyOperation, BACnetRestartReason, BACnetNetworkType, BACnetNetworkNumberQuality, BACnetNetworkPortCommand, BACnetAuthenticationDecision, BACnetAuthorizationPosture, BACnetFaultType, BACnetPriorityFilter, BACnetSuccessFilter, and BACnetResultFlags.
* Fixed BVLC Write Broadcast Distribution Table for protocol revision 17 and later.
* Added check for Network Port object bbmd-accept-fd-registrations property in BBMD handler.
* Added bvlc_foreign_device_table_decode() function and unit test.
* Added BDT and FTD write property to network port for IPv4
* Changed win32 port of localtime to use secure OS API functions when compiled with MSVC
* Changed all the sprintf to use snprintf instead in BSC tests to ensure null string endings.
* Fixed WriteProperty error code for PROP_FD_BBMD_ADDRESS and PROP_FD_SUBSCRIPTION_LIFETIME properties.
* Fixed dead-code warning after enabling all datalinks for basic network port object using the property list as the R/W checking for the port type.
* Fixed IPv6 handler to ignore original-broadcast when registered as a foreign-device
* Fixed IPv6 to leave multicast when registering as foreign device.
* Added unit test while reading all object properties to flag properties not in the property-list.
* Added enumeration for last-property used in unit testing.
* Added missing reliability property in the basic multistate output object example.
* Removed polarity property in binary value object as it is not standard.
* Changed BACnetARRAY index validation into ReadProperty, ReadPropertyMultiple, WriteProperty, and WritePropertyMultiple handlers.
* Changed the basic and example objects after refactoring BACnetARRAY index validation into ReadProperty, ReadPropertyMultiple, WriteProperty, and WritePropertyMultiple handlers.
* Added BACnet application decoder that understands that an array element of zero is an unsigned integer tagged value. Fixes RP and RPM apps when reading the array element zero of arrays.