* 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.
* 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.
* Added Device_Object_Functions_Find() API to enable override of basic object API function.
* Added Device_Object_Functions() API to return basic object API table of functions for all objects.
* Fixed units property declaration in basic Analog Input header file to be uint16_t instead of uint8_t.
* Added range checking of units property in example objects WriteProperty handler.
* 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 the lighting command RAMP TO ramp rate to always clamp within 0.1 and 100.0 to avoid endless rate of 0.0.
* Fixed the use of default fade, ramp, or step when those optional parameters are missing from lighting command.
* Fixed compiler warning format '%u' expects argument of type 'unsigned int', but argument 4 has type 'uint32_t' {aka 'long unsigned int'} [-Werror=format=] by casting or increasing format specifier size and casting. Increased the size of the name string to handle larger possible integers.
* Fixed copied code that no longer needs static function scope variables for text names.
* 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
* Linux MS/TP:
* dlmstp_init:
* Maximize thread priority if permitted
* MSTP_Put_Receive/dlmstp_receive:
* Use a buffer so incoming frames are not dropped during bursts
* dlmstp_receive:
* Make timeout optional
* MSTP_Get_Reply:
* Lock the mutex before using the PDU Queue
* Iterate over all queued replies to find a match (instead of only checking the first)
* Sleep for a millisecond before checking again to wait for the application provide a reply
* RS485_Check_UART_Data:
* Ensure waiter is initilized before using with select
* Ensure bytes are read before adding to FIFO
TSM:
* Add log when `datalink_send_pdu` fails for consistency with all other `datalink_send_pdu` calls
dlenv_maintenance_timer:
* Fix Tx/Rx labels in MSTP statitistics print
* don't log on queued requests
* 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
* Added Egress_Time integration during the blink-warn and warn-relinquish lighting operations.
* Added writable properties lighting-command-default-priority, egress-time, blink-warn-enable, and relinquish-default.
* Added missing API defined in header into ports/win32/dlmstp.c module, added a PDU queue and refactored receive thread, and refactored MS/TP timing parameters.
* Added missing API defined in header into ports/linux/dlmstp.c module, and refactored MS/TP timing parameters.
* Added missing API defined in header into ports/bsd/dlmstp.c module, and refactored MS/TP timing parameters.
* Reduce default MS/TP APDU to 480 to avoid extended frames by default.