BACnet Server API Revision History (BACnet 2020 Version 1 Revision 25)
Version 6.0.105 - 14 March 2025
Possible crash when service request cancel is called.
Unhandled exeption when a readProperty request is made with an empty APDU
Audit source and target are reversed when an audit log notification is raised.
Cache fallback to readProperty atfter an abort PDU request is not working as expected.
Added support for DoubleOutOfRange, SignedeOutOfRange and UnsignedOutOfRange in the event enrolment object
Added support for ChangeOfStatusFlags and ChangeOfDiscreteValue in the event enrolment object
Added support for ChangeOfTime and AccessEvent to the event enrolment object
The AuditReporter object is using the incorrect data type for uditPriorityFilter, it should be a bit string.
Added a new enum for BACnetObjectSelectorChoice
Implemented the destination options and detination attributes in BACnet/SC
The Device and Object Identifier properties are switched in the Audit Log Query by Target request.
Added the destination address to unconfirmed pdu message indications.
Added the destination address to a new callback for audit notifications.
Added the recipient address to the unconfirmed messsage structure
Added a new callback called callback_service_override_unconfirmed_audit_notification_ex_fn which includes the destination address
Implemented new features to audit reporting.
Updated the required properties in the audit log objects.
When operating as a BBMD, it does not forword the packets in the broadcast distribution table to the correct recipients.
The invokeId is not transferred in audit notifications.
Added comment, user-id and user-role to the writeProperty service request, this will be used to support target audit notifications.
Possible crash when the auditReporter object is removed.
Audit notifications do not work when an object is created at runtime.
Network discovery not working for direct connections, broadcast messages will now be sent as unicast messages when a hub connection does not exist.
The WhoAmI and YouAre services are not fully implemented
Unhandled exception in send unconfirmed request
Version 6.0.104 - 5 February 2025
Added support for Audit logging
Crash when creating a new operational certificate.
Possible crash when an object supports the value source property and it is removed at runtime.
When disable routing is set and mutiple BACnet/IP ports are configure the communication may not start under high load conditions.
Implemented ValueSource support to all object callback functions
Some array properties do not fire a change event when writtem to.
Added a new helper function bacnapi_is_property_a_list() to determine if a property is defined as a List.
addListElement service returns an error when writing to properties of the LifeSafetyZone and LifSafetyPoint.
Incorrect subscription quantity reported in the cache module.
Optimised the cache module by reducing the number of items processed within each device per scan.
Added a new config parameter called maxNetworkLayerMessagesProcessesPerCycle which limits the number onetwork messages that will be processed in a single scan.
Increased the size of network layer stacks to handle a sudden burst of network messages.
Limit the number of messages the cache puts onto the application layer stack to prevent messages from being lost.
Added config parameters for maxLowPrioritySendMessageQty, maxHighPrioritySendMessageQty and maxLowPriorityProcessMessageQty.
Version 6.0.103 - 20 December 2024
After calling GetArrayOfBACnetSCFailedConnectionRequest, GetArrayOfBACnetSCHubFunctionConnection or GetArrayOfBACnetSCDirectConnection from the CBACnetAny object the array size returns -1
Version 6.0.101 - 4 November 2024
Revised the cache module to use readPropertyMultiple requests to determine the device capabilities.
Incorrect subscription quantity reported in the cache module.
AddListElement service returns an error when writing to properties of the LifeSafetyZone and LifSafetyPoint.
Added a new helper function bacnapi_is_property_a_list() to determine if a property is defined as a List.
Some array properties do not fire a change event when writtem to.
Added a new api call to discard changes from the network port.
When disable routing is set and mutiple BACnet/IP ports are configure the communication may not start under high load conditions.
Version 6.0.100 - 10 October 2024
SubscribeCOV Service requests are not cancelled when a point is resubscribed before the service completes.
Service cancellation causes pending requests to timeout.
Added a new abort error code to indicate when a service has been cancelled.
Cache optimisation after performance testing.
COV notifications are incorrectly queued. When there is a high frequenncy of COV notifications some are not sent.
Added new config parameters /bacnetip/writerThreadSendQueueLimit /bacnetip/writerThreadSendDela and /bacnetip/writerThreadSleepTime to BACnet/IP when useMultipleThreads is set to true.
Don't resend an ubsubscribeCOV request when a resubscription has been made.
Sent packets are not logged when useMultipleThreads is set to true.
Max parallel requests are not working in the cache module.
The out of service mechanism for Analog/Binary and Multistate points is not working correctly.
Added additional logging to writePropertyMultiple requests.
The minumim/maximum reconnect validation for BACnet/SC is not working correctly.
After a VMAC collision the BACnet/SC layer does not regenerate a new VMAC address.
Version 6.0.99 - 4 September 2024
When the reliability property is changed an event notification is not sent.
Incorrect operation of VMAC collision in the BACnet/SC driver.
Removed compiler warnings from unit tests.
Possible memory found after valgrind testing.
Added additional logging to writePropertyMultiple requests.
Version 6.0.98 - 9 August 2024
After a VMAC collision the BACnet/SC layer does not regenerate a new VMAC address.
Version 6.0.97 - 8 August 2024
Added BACnet/SC helper classes to bacnet template library.
Version 6.0.96 - 6 August 2024
The initial settings for the BACnet/SC port are not set.
The minumim/maximum reconnect validation for BACnet/SC is not working correctly.
Version 6.0.95 - 2 August 2024
Possible memory leak in the message stack when confirmed requests are sending events.
Incorrect log level set for async request message.
Added support for ARM x64.
Version 6.0.94 - 30 July 2024
Removed compiler warnings.
Added support for ARM x64.
Version 6.0.93 - 14 July 2024
When disable routing is active the API does not send a whoIsRouterToNetwork message for dynamic binding.
Renamed BACnetOptionalPriorityFilterType to BACnetOptionalPriorityFilterChoice.
When the cache polls using readProperty a COV notification is sent twice when the present value property is subscribed.
The cache module test to determine if a device supports COV notifications should be that it can execute SubscribeCOV services.
When there is a readPropertyMultiple failure in the cache module fallback all items in the request to readProperty.
The BACnet/SC hub is slow to accept connection because of the call to getnameinfo which can take 5-10 seconds to complete.
Version 6.0.92 - 18 June 2024
Added invalid-operation-in-this-state to the BACnetErrorCode enumeration.
Added a new enumeration type for BACnetOptionalPriorityFilterType.
Added BACnetHealth, BACnetPropertyStatesExtendedEnumeratedValue and BACnetOptionalPriorityFilter to the template library.
Version 6.0.91 - 17 June 2024
When a confirmed request is made using a MAC address the service complete callback does not always return.
Updated the #define statements to remove build errors when compiling on Windows X64. Added a stack trace to the windows X64 unit tests.
Unable to decode UCS2 strings on Alpine Linux, all strings are returned as empty.
Version 6.0.90 - 26 April 2024
The add list element request does not update the MAC address of an existing device address binding.
Added support for generating a certificate signing request.
The EOF flag is not set when an AtomicReadFile service is made.
Added BACnet/SC State Changed messages to the event message stack.
BACnetAuditNotification uses incorrect data types in the ASN parser. Invoke-id should be Unsigned8. source-user-id should be Unsigned16. source-user-role should be Unsigned8
The packet logger is not restarting after a restart.
Incorrect JSON parsing of ListOfGroupMembers property when using a writeProperty request.
There is no Iam message after a warmstart.
Version 6.0.89 - 25 March 2024
Added a new param setting called /bacnetip/addSelfToBdt to control if the API will add a default entry to the BDT for it's own IP address. The default value is 1.
Possible unhandled exception when network port mode is set to bbmd and accept foreign device is false.
Added callbacks for addListElement and removeListElement to the BACnetObject schema.
Updated the networkPort BACnetList properties to support add/remove list element requests.
Updated the network port validation rules preventing write access based on the ip mode.
Incorrect encoding/decoding of BACnetAuditNotification in the pdu parser.
Added changes pending support to add/remove list element callbacks.
The network port hub function status should be set to no hub connection when operating as a hub and advertisement should return no hub connection when operating as a hub.
The packet logger is not restarting after a restart.
Version 6.0.88 - 4 February 2024
Added additional helper methods to BACnet/SC port class.
Unable to write with array index 0 to the listOfObjectPropertyReferences property of the trendlogMultiple object.
Added MinReconnectTime, MaxReconnectTime, HeartbeatTimeout, ConnectWaitTimeout, and DisconnectWaitTimeout to the BACnetSC port connect string
The enumeration type is not set in the asn parser for array of enumerated properties.
Added support for the priority array in all of the objects, it was only supported in Analog, Binary and Multistate.
The status flags does not update when the reliability is updated in the characterStringValue object.
Incorrect unit name, "joule-per-hours” should be “joules-per-hour”.
The auditPriorityFilter property should be of type BACnetOptionalPriorityFilter not BACnetBitString.
Encode/Decode error in the BACnetAuditNotification class when some items are optional.
The targetProperty in BACnetAuditNotification structure should be a BACnetPropertyReference.
The BACnetAuditLogQueryParameters datatype use boolean instead of BACnetSuccessFilter for successful-actions-only and it is always manditory. The targetDeviceIdentifier is always manditory.
The schedule object does not report the correct required properties.
The present value property of an analog object should have the config flag set.
The property in BACnetHealth is always transmitted in the PDU with a value of -1.
The BACnetAuthenticationPolicy policy member is converted to a boolean in the ASN json parser, it should be a sequence of BACnetAuthenticationPolicyItem.
Implemented support for auditNotification and auditLogQuery services.
Decode error in the BACnetAuditNotification request PDU, the targetTimestamp property is not decoded.
Property StartAtSequenceNumber is type of uint (UInt32) but the specification says it should be ulong (UInt64).
Property RequestedCount is type of int (Int32) but the the specification says it should be ushort (UInt16).
Implemented missing properties in the StructuredView object.
Incorrect ASN string parsing of the BACnetNameValueCollection data type used by the subordinateTags property in the structuredView object.
EnumTypeMap BACnetLocationSpecifierMap has the heap flag set.
Incorrect encoding/decoding of the BACnetAccessRule data type.
Changed the BACnetLandingCallStatusChoice enum to match the choice id numbers from the ASN layout.
Added a define statement for the flags property of the BACnetNameValue structure.
The status flags property in the device object is not functional.
Writing to the IPAddress property of the network port object does not update changes pending.
Version 6.0.87 - 12 January 2024
Incorrect Encoding/Decoding to an ASN string for BACnetCovMultipleSubscriptionSpecification.
The AuditPriorityFilter property (AuditReporter object type) should be of type BACnetPriorityFilter. Instead, it is using OptionalPriorityFilter type.
BACnetTimeValueChoice.Unsigned should be unsigned int for ASN.1 conversion
Cannot set Reference property of BACnetFaultParameterExtendedItem object.
Added helper methods to the BACnetNameValue class to get and set the HasValue property.
Version 6.0.86 - 5 December 2023
When a cache COV occurs and the statusFlags has the fault state set then the errorClass and ErrorCode will be set to services, other.
When the Add/RemoveList element with property ListOfGroupMembers contains more than 1 element and the listOfPropertyReferences is empty then erray element is not sent.
Added config parameters for controlling the CPU usage in the main thread.
Version 6.0.85 - 19 November 2023
RemoveListElement for Group / List_Of_Group_Members is sent empty
When the listOfPropertyReferences is empty then the removeListElementRequest contains an empty list.
Added ArrayOfEventParameterExtendedItem to the BACneAny class
The BACnet/SC link layer does not respond to broadcast messages sent by itself.
Added a new callback handlers for read_object_property_with_error_begin_ex and write_object_property_with_error_end_ex which include a flag to indicate if it is internal access.
Version 6.0.84 - 11 November 2023
Added a new callback handler called write_object_proprietary_property_with_error_ex which includes a flag to indicate if the write was due to internal access.
When the BACnet/IP layer is bound to a network interface card with a subnet of 255.255.255.255 confirmed request are not processed.
AddListElement does not encode List of Group Members
Time sync message is not sent to the BBMD when operating as a foreign device.
When the restartRecipient list has the destination set to the IP local brodcast address the packet is not sent to the foreign device.
Add/Remove ListElement - wrong index on invalid-data-type
The fdBbmdAddress property does not support the host name option.
CoV - BACnAPI does not respond correctly on Negative tests. When using process identifiers an event is raised to the application when a value changes.
Add/Remove list element does not trigger OnChangedProperty.
ipDefaultGateway and ipDnsServer not populated in the network port.
The property ArrayOfPropertyReferences not in BACnetAny.
Writing to the device object with instance 4194303 should return an error.
RP broadcast when timeSynchronization is set.
NetworkDiscovery - local network broadcast not working.
Time sync message is not sent to the BBMD when operating as a foreign device.
Additional logging added for Time Synchronization service.
Event notifications incorrectly parsed to JSON.
When the network number is not zero the networkNumberQuality should be set to configured.
Network Discovery not working with high limit 4194303.
Incorrect JSON parsing of EnrollmentSummary Request.
properties set as ArrayOfConstructedValue instead of the proper data type.
Version 6.0.83 - 3 October 2023
Added a new config parameter /default/disableIam which will prevent iAm notifications from being generated when the API starts and in response to whoIs requests.
Loopback ConfirmedCOV notifications are not working after a loopback subscribeCOV request is sent.
Mismatch of the data types for ASN structures.
Incorrect property list for Network port object when schema is used.
The fdSubscriptionLifetime property accepts a value less than 30.
Incorrect process identifier set for subscribeCOV requests made by the cache module.
When the network number is not zero the networkNumberQuality should be set to configured.
The ipDefaultGateway and ipDnsServer properties are not populated in the network port object.
The subscription lifetime property can be set to a value above 65535.
The BACnetEnrolmentSummary request is not correctly encoded/decoded to JSON.
Version 6.0.82 - 26 September 2023
Notification recipients set with a recipient address of local broadcast are not sent to the foreign device with a distribute broadcast to network messaage.
ASN parser fails for change of state event notification when the present value is not present.
Added COV Service validation for the process identifier to return an error if there is no corresponding subscription within the cache module.
When the DeviceObjectPropertyValue is not consistent the API is not able to parse the data type to JSON.
Always use COV process identifiers in the cache module and return an error if the subscription does not exist when a notification is received.
Api param get with path "/default/defaultCharacterSet" returns an invalid character set.
The BACnet API is responding to confirmed broadcast requests. This happens when multiple threads are used in the BACnet/IP link layer.
When Segmentation is set to none, the maxSegmentsAccepted property should be set to 1 instead of 2.
Incorrect number of bits returned in protocol services supported when the revision number is set to 22.
Hidden proprietary properties are readable from BACnet services. They should return an error such as read access denied.
The setpointReference property is decoded as constructed when the reference is null.
When the character set is not set to UTF8 and the characterset conversion to UTF8 fails an empty string is returned.
Typo in the name confirmedCovotification, it should be confirmedCovNotification.
Version 6.0.81 - 13 September 2023
Implemented JSON service request support for send COV and Event notification messages.
Some properties are still writable even when the property is set as readOnly.
Added support to disable routing of the network ports with a new proprietary property.
Added an API get parameter /objsct/schema/get/{ObjectId}/{schemaName} to return the available properties for the object type.
Added an object schema for each BACnetObject type to define the properties within it. This allows for different properties and access levels to be set up on objects of the same type.
The BACnet/SC primary and failover url's are not set correctly in Visual Studio 2005.
Added an API parameter called /bacnetsc/pkiFileLocation to set to location of the BACnet/SC PEM files when a datalink layer connect string is used.
Version 6.0.80 - 23 August 2023
Revised the operation of network_is_forwarded_npdu() to ensure that the forwarded NPDU get's called to the calling application.
Added support for compiling under Visual Studio 2005.
Version 6.0.79 - 21 August 2023
Unable to write to the bbmdBroadcastDistributionTable property of the network port object.
The bdt table is not populated from the network port object.
Added support for compiling under Visual Studio 2005.
The defaultCharacterSet API setting is not set correctly.
Added unit tests for subscribeCovMultiple.
Added support for sending a COV notification to the restartNotificationRecipients.
Removed compiler warnings from visual studio x64 build.
When the recipient notification is configured to use a device id then a COV notification is not sent after a device restart or warmstart.
When the fdSubscriptionLifetime property is set with a value of less than 30 it is updated 60 instead of 30.
Conversion of a byte array to string is taking too long in the BACnetOctets class.
Unhandled exception when debug logging is selected and a service request returns an error.
When using the cache_insert_device_ex() method the capabilitiesKnown flag is always and the cache will use readProperty requests.
Added a COV notification to the cache watch when the device status changes to offline or back to normal.
BACnet/SC node is not responding to service requests.
Version 6.0.78 - 10 July 2023
The presentValue property of the CharacterStringValue object is unable to be written to when the outOfService property is not supported.
The presentValue property of the CharacterStringValue object is unable to be written to when the priorityArray property is not supported.
Version 6.0.77 - 28 June 2023
PDU decoding of ArrayOfBACnetRouterEntry fails when the performance index is not present.
Version 6.0.76 - 27 June 2023
Linux release not handling BACnet/IP packets after the change to prevent the API from responding to broadcast confirmed request messages.
Version 6.0.75 - 26 June 2023
The NetworkPort instance number should use a value in the range 1 to 255.
The system status for virtual devices are not set to operational at startup.
Version 6.0.74 - 21 June 2023
The fdSubscriptionLifetime property is not being loaded into the network port object.
Version 6.0.73 - 20 June 2023
Delete object service returns error dynamic Creation not supported.
Possible unhandled exception in the AlertEnrolment object when a read request is performed.
Version 6.0.72 - 15 June 2023
Removed offline devices from the list of address bindings.
Before running a device scan set the online flag to false for each of the devices in the range.
Added support to set the parameters when inserting a device.
Added config parameters to control the CPU usage in the main thread.
Version 6.0.71 - 13 June 2023
Introduced a new param setting called /default/fileAccessMethod to allow recordAccess to be used as the default access method.
Unable to load a private key when the PEM file contains EC PARAMETERS.
When the BACnet/SC hub sends a response with no source address included, the packet is ignored in the API.
Reinstated the parameter to run multiple threads.
Revised the main thread to yield more frequently to use less CPU time.
Version 6.0.70 - 29 May 2023
The bacnet/sc port fails to start when multiple ports are defined.
An unhandled exception occurs when the API is stopped and an unsent BVLC message is in the BACnet/SC iniating node thread.
Log message for task delay not showing correct value.
Revised the BACnet/SC port stop routines.
When a trendlog is set to use cov notifications, the API does not send a subcribeCOV notification to cancel the subscription when enable is set to false.
Incorrect decoding of BACnetPropertyStates signed integer value.
Parse error in the JSON encoder when an action list contains an unexpected data type.
The API is responding to broadcast confirmed request messages, it should only respond to unicast confirmed requests.
Async services using static address bindings do not return when the deviceAddress binding fails or contains duplicate entries.
Decode error in the ASN BACnetNameValue data type when the optional value parameter is not present.
Version 6.0.69 - 11 May 2023
The BACnet/SC http header parameters are case sensitive, changed to case insensitive.
The initiation object identifier is not set in eventNotification messages.
Version 6.0.68 - 08 May 2023
Updated the C++ Windows sample projects.
Incorrect required properties returned when record access is the accessType in a file object.
The file object does not show the record count when using recordAccess.
Version 6.0.67 - 05 May 2023
The maxForeignDevices setting is not loaded into the BACnet/IP port when connect strings are used.
Async services that use a static address do not fire the callback method when a device is offline.
The relinquish default property is not defined as a config property. Revised the float and double comparison routines.
Duplicate port validation not called when a network port starts.
When a device does not support COV notifications the cache module still attempts to subscribe for COV notifications.
When the API is started from a JSON string some properties of the network port are not loaded.
When the fdBBMD address of the networkPort object is set to none there is a segmentation fault.
Moved object meta data from static memory to dynamic for each channel.
Added the GUUID property to the C++ template library.
Version 6.0.66 - 08 April 2023
The NetworkPort object contains incorrect required properties when the application type is BACnet/IP and the revisionLevel is set to 22 or lower.
Version 6.0.65 - 07 April 2023
The eventDetectionEnable property is missing from the trendlogMultiple object..
Replaced openssl depreciated functions and removed initialization functions that are no longer required.
When operating as a foreign device the API sends out a broadcast Iam onto the local message. It should send a forwarded Iam request only.
The system status property allows allows writing.
The cache module does not fallback to readProperty when a readPropertyMultiple request returns a error of unknown property (for the entire request).
Add memory cleanup of temp strings when application exists.
Version 6.0.64 - 24 March 2023
When port hierarchies are disabled BBMD and Foreign device network ports not populated when configured with a connect string.
Version 6.0.63 - 24 March 2023
Remove port hierachies from the network port object and added a new config setting called /network/usePortHierachy to control when port hierarchies will be used.
Added a pre-processor definition call BACNETSC_DISABLED to remove support for BACnet/SC from the build.
Unable to set Network Port properties using BACnetObjectAttribute class.
Version 6.0.62 - 22 March 2023
Unable to set the access level of the description property of the network port object to read only.
Added a pre-processor definition call BACNETSC_DISABLED to remove support for BACnet/SC from the build.
When a device is offline then the cache module does not immediately send a COV notification after a new subscription is made.
When the primaryNode fails it should attempt to reconnect to the primary before alling back to the failover hub.
When a BAcnet/SC connection fails it does not fallback to using the hub.
Enumeration missing from propertyStates.
Version 6.0.61 - 22 February 2023
Updated the services and object types supported to be configurable per device and channel.
ASN parser error for property states that use extended non ASN encoding.
Added helper functions to verify BACnet/SC certificates.
Standby to failure for BACnet/SC not working.
The BACnet/SC port will sometimes cause a deadlock deadlock when it stops.
Implemented support for BACnet/WS direct connect initiate.
Revised the direct connect operation for BACnet/SC.
BACnet/SC driver does not responding to the Advertisement Solicitation message.
Updated helper function to return properties that are not writable.
Analog output and binary value event algorithms not working.
Updated helper function to return properties that are not writable.
Trendlog event notifications from a virtual device have an incorrect source address.
Audit operations and tags properties are not implemented.
Event notifications from a virtual device have an incorrect source address.
Changed the services and object type supported properties from static to within a channel to allow channels to use unique settings.
Possible segmentation fault when BACnet/SC is stopped after the primary node has failed to connect.
When a virtual device is non operational it should not respond to BACnet requests.
The BACnet/SC minumum reconnect timer is not working correctly.
Heartbeat ack message is not being handled in the BACnet/SC driver and BACnet/SC initial values are being overridden.
Invalid characters appearing in the logs for BACnet/SC
Linux release uses incorrect call to sleep.
Unable to open pkcs12 keys.
Added a new helper function to open a pkcs12 certificate.
Added the password to the pks12 file create.
Added port health to all datalink types
Incorrect error in currentHealth
Incorrect time stamp in the currentHealth property
Added support for currentHealth to the BACnet/SC network port object.
Version 6.0.60 - 14 January 2023
Disable the BACnet/SC tpc listener when not operating as a hub and not taking direct connections.
BACnet/SC does not validate that an issuer certificate has been loaded.
BACnet/SC cannot load private key PEM file that use BEGIN EC PRIVATE KEY.
Version 6.0.59 - 14 December 2022
Implemented updates for addendum CC final
BACnet/SC file objects are not serialized.
Implemented support for the modification date in the BACnet SC file objects
When the virtual network port starts or stops update the system status property for each device in the virtual network.
Incorrect heartbeat timer comparison in the accepting node.
Remove validation of restore if executed internally.
Unhandled exception when coping from a BACnetNotificationParameter and the destination type does not match the source.
The file objects are not loaded from the BACnet/SC network port.
Revisied the operation of the networkPort object for BACnet/SC to use Adendum CC.
Revisied the operation of the readFile and writeFile services to use callbacks inside the file object. The file object can be used to perform the write operation.
Implemented the missing properties for intrinsic reporting.
The ASN parser encoding/decoding of a writePropertyRequest returns an error when there is only one element.
Initial changes to put the async requests onto a stack.
Hide the schemaName property from BACnet services.
Renamed .net class for audit logging.
The json parser ignores the EnumAsString option for the object identifier property.
Added callbanks to indicate when an object has been created and deleted by a BACnet service.
Unable delete objects from the 2020 spec using a bacnet service.
The BDT table in the BACnet/IP link layer is loaded with an invalid entry of 0.0.0.0 at startup.
Version 6.0.58 - 22 September 2022
Version number is not updated in the .net core and standard versions.
Added a new proprietary property called directConnectAcceptEnable to BACnet/SC
Add default entries to the hub function accept uris when empty and hub function enable is set to true.
When the BACnet/SC datalaink layer does not support directions it does not send a NAK to an address resoultion request.
BACnet/SC crashes when a direct connect accepting node is forcebly disconnected.
BACnet/SC properties for primary and failover URI do not fire a changed event.
The BACnet/SC initiating node does not send a disconnectRequest when it stops.
The BACnet/SC initiating node does not disconnect when a heartbeat ack is not received.
Don't log the value of properties that contain an octet string.
A disconnect request message from a BACnet/SC connection causes an unhandled exception.
Version 6.0.57 - 8 September 2022
Updated the c++ sample applications
Updated the linux samples make script.
Updated the linux makefile to use openssl for supporting BACnet/SC
Validate optional property access level for objects that have a schema name specified.
When the cache is not using the parameter pollBefureSubscription and the device responds with an unrecognised service error it fails to fallback to polling.
A unnecessary directed whoIs message is sent to device when it is configured to use a static address binding.
While the hub connection to the failover hub function is established, attempts to re-establish the hub connection to the primary hub function shall be continued respecting the reconnect timeout
BACnet/SC communication not re-established when only primary Hub is set.
Changed to static string buffers used as the return result to some functions to use a value stored per thread.
Unable to changeover from primary to standby BACnet/SC connection.
The BACnet/SC link layer does not reload if there is an error in the tcp socket select handler.
Version 6.0.56 - 28 July 2022
When the jsonEnumAsString is set to 0 the objectType within the BACnetObjectIdentifer still returns a string.
Version 6.0.55 - 8 July 2022
The contents of the value property in the object override handler should be a copy to prevent it from being modifed.
Version 6.0.54 - 5 July 2022
When the protocolRevision is set to 14 and the network port is started with a non zero network number device address bindings no longer work.
Version 6.0.53 - 4 July 2022
Static address bindings on the local network do not work when a single port is started and the network number is not configured as 0.
Compilation error when ASN1VER401 defined.
Version 6.0.52 - 30 June 2022
The async_data value set in an asynchronous service request is not passed through to the result when using the message stack.
The loop object fails to deserialise.
The profile name is not serialized with the object.
There is a build issue in datatype_string_utils when ASN1VER401 is set.
Resolved a linux build error in the call to THREAD_CLOSE_HANDLE
The static address bindings are not woring when there is a single network port defined with a non zero network number and a static address binding configured with network number zero.
The originating adress should not be present when sending a directed packet to the BACnet/SC hub.
Failover to standby hub is not working correctly for BACnet/SC.
The peer address is not used when the hub forwards a BACnet/SC packet.
Version 6.0.51 - 20 June 2022
When the BACnetAPI is serialised active subscriptions are removed from the local objects.
Version 6.0.50 - 13 June 2022
Resolved a build issue with the JAVA version of the API.
Version 6.0.49 - 10 June 2022
Added logging to indicate when a subscription has been added or removed.
When 2 or more foreign device connections are made with the same IP Address the packets are always sent to the same port number.
After a readPropertyMultiple requests fails with an error of unrecognisedService the API does not immediately send the next request.
Added extern to global variables for channel_head and big_endian_flag.
When a BufferOverflow error occuyrs during a readPropertyMultiple request it should fallback to using a readPropertyMultiple request with smaller chunks.
Version 6.0.48 - 26 May 2022
After a readPropertyMultiple requests fails with an error of unrecognisedService the API does not immediately send the next request.
Added extern to global variables for channel_head and big_endian_flag.
When a BufferOverflow error occurs during a readPropertyMultiple request it should fallback to using a readPropertyMultiple request with smaller chunks.
Version 6.0.47 - 20 May 2022
The cache module does not fallback to readProperty if the readPropertyMultiple request returns an unrecognised service error.
Version 6.0.46 - 17 May 2022
The whoIs discovery resolution truncates the miliseconds of the APDU timeout.
When a device responds to a subscribeCOV request with an unrecognised service response the cache does not fall back to readProperty or readPropertyMultiple requests.
When the priorityArray is disabled for binaryValue objects the alarm algorithm for intrinsic reporitng does not get called.
Added a config setting to allow IFANY to be set in the BACnet/IP link layer.
The array mapper for BACnetTimerStateChangeValue is selecting an incorrect data type.
Version 6.0.45 - 1 April 2022
If the revision number is 19 the set the object type supported for the network port to 1.
When the statusFlags property is subscribed by the cache and readProperty requests are used it does not return a COV notification.
After a point is unsubscribed from the cache the error code is not reset to zero which prevents a COV after the next time it is subscribed.
Added a new config parameter /bacnetip/disableBdtFile which will disable the bdt.txt for loading the bacnetbroadcastdistribution table.
COV notifications are repeatedly transmitted when a property is subscribed in the cach and an error occurs.
Remove the vendor name and object type from the schemaName property.
Added a new proprietary property called schemaName to replace the internal function of the profileName property which can be used by a third party application to store text.
Sending unicast unconfirmed requests is not supported by the json interface.
Renamed ArrayOfObjectPropertyReference to ArrayOfDeviceObjectPropertyReference.
Updated the validation of the max segments accepted property.
The BDT table in the BACnet/IP link layer is loaded with an invalid entry of 0.0.0.0 at startup.
Added the machine name to the security serial number generation.
Added support dynamic object creation to all objects
Added a function to validate a registration code.
The logger creates a new channel when no channels exist which can prevent a new channel from being created.
Revised the bit string length for the objectTypesSupported and services supported when revision 22 is set.
Renumbered the BACnet/SC property identifiers for BACnet/SC to proprietary properties.
Version 6.0.44 - 14 January 2022
The API does not respond to whoHas requests.
Updated the BACnet/SC after end to end tests with delta controls.
Updated the BACnet/SC sample application.
Version 6.0.43 - 10 January 2021
Updated the csharp sample application for BACnet/SC
Added the certificates to the port editor screen.
Updated the unit tests for openssl support
Modified BACnet/SC to use openssl.
Added getter and setters for the operational certificate.
Updated the BACnet/SC unit tests to support openssl.
Renamed BACnet/SC connect string variable name to PRIVATEKEY
Version 6.0.42 - 22 October 2021
Update the registration unit test.
Updated the .net unit tests
Revised the csharp build to seperate the registration and reemoting from the unmanaged dll
Moved the RegistrationGenerator and BACnet remoting into a seperate dll.
Fixed an invalid IP address in the unit test
Added a new preprocess directive to allow to ignore the CRegistrationCodeGenerator class from the tl_driver.h header file.
Version 6.0.41 - 15 October 2021
If a point is subcribed in the cache module with either readProperty or readPrpertyMultiple and device goes offline the cache module does not resume polling after the device returns to online.
Version 6.0.40 - 11 October 2021
Removed compiler warnings
Exported the bacnapi_ticks function from the API.
Fixed an issue with the unit tests which were not running to completion.
Resolved a possible exception error when there are duplicate client TSM's in use.
A subscribeCOV may not sent by the API if the operating system recently been restarted.
Modified the function bacnapi_driver_asn1_json_load_objects to run it on the main thread to ensure that it is thread safe.
Version 6.0.39 - 21 September 2021
Modified the function bacnapi_driver_asn1_json_load_objects to run it on the main thread to ensure that it is thread safe.
Version 6.0.38 - 20 September 2021
When an atomicFileRead request is made with record access specified the API disregards the record count and returns a single record.
Revised the logic for offline status checking of device in the address binding module.
Possible exception in the BACnet/SC datalink layer when reinitializing the device with pending changes set.
The json paser returns an invalid enum type for negative enum values.
The json parser does not load the network ports correctly if they have a reference port defined.
Added callbacks for processing client devices on a periodic basis and for checking if a device is still online.
Version 6.0.37 - 3 September 2021
The BACnetTimerStateChangeValue choice for integer is incorreclty labelled as signed.
Fixed a parsing issue in the device status refresh method after unit testing.
Implemented a new method to refresh the subscriptions within the cache module for updating values that are subscribed for COV notifications.
The refresh will poll the current value with a readProperty or readPropertyMultiple request.
Revised the read, write, writeRequest and changed callbacks to support the changesPending property for the networkPort object and implemented the support for writing to objects that require changesPending to be set.
Changed the config flag for the relinquish default and priority array properties to false.
When a property within an object changes, an internal changed event is required in order to full support covProperty and covPropertyMultiple services. In order to support this the alarm algorithms require changes to raise the changed event when the eventState, eventMessageText, statusFlags, etc are updated during processing.
Version 6.0.36 - 22 August 2021
Revised the operation of the request semaphores to resolve a undhandled exception on the Raspberry PI
Version 6.0.35 - 20 August 2021
Removed linux compiler warning and resolved sync request issue on Linux.
Version 6.0.34 - 4 August 2021
The interop project file dosn't open in visual studio 2017 on the build server.
Resolved a failure in the .net unit test
Updated the unit tests for testing the json for the CBACnetServiceEventNotificationRequest class.
Added support for changing the notification paramaters type from the CBACnetServiceEventNotificationRequest class.
Version 6.0.33 - 3 August 2021
Json deserialize does not update the notification class property of an object which leads to an incorrect notification class being set at startup.
Updated the csharp explorer application.
Updated the BACnet/SC csharp sample application.
Version 6.0.32 - 2 August 2021
Added a new helper class called CBACnetServicEventNotification for sending event notifications manually from a C++ application.
Serializing the BACnet objects to json using the call to jsonSerialize can produce invalid JSON for some configurations.
Added a unit test for json serialization.
Version 6.0.31 - 29 July 2021
When the packet logger file name is changed at runtime, the existing log file is not closed and a log file with the new name is not started.
Added a method to return the device id for a virtual device from the source address.
Unable to set packet logging at runtime.
Added a callback which is raised when a config parameter is changed.
Updated the BACnet/IP unit test
Reset maxForeignDevices to zero when bbmdAcceptFdRegistrations is false.
Added validation for a valid driver and channel before calling an async request.
Updated the Unit test to generate pcap files
When a service is override for a virtual device, the device id is not pssed to the override handler.
Added a unit test for BBMD operation
Version 6.0.30 - 21 July 2021
Resolved a linux build error in the bacnet ip module.
Added support to return a list of configurable properties from the ASN 1 parser for each object profile.
The BACnet AcknowledgeAlarm Service overide callback function has not been implemented.
Fixed possible unhandled exception when the BACnet IP link layer is restarted, this issue was introduced in a recent change to improve ther performance of the BACnet IP sender thread.
Updated the BACnet/IP sender thread to send out packets immediately when required by removing a 10ms delay inside the thread.
Added an option to return config properties from the ASN parser.
Added additional validaion to the service cancelation request to prevent a cancellation after the service has been destroyed.
The cache module is building requests before a service request has finished causing too many requests to go out onto the network.
When an async request is executed from the BACnet API main thread using a callback it cannot be cancelled by an external thread.
The object serializer is loading the activeSubscriptions even when SERIALIZE_ACTIVE_SUBSCRIPTIONS is set.
When a service request fails with an error the execute() routine should return the corresponding error code from the error class and error code in the bacnet service error response.
Version 6.0.28 - 6 July 2021
The port number is not loaded correctly when using the CPortMstp class in C++ and revision number 19 is used.
Removed uuid dependency for the Linux build by adding a preprocessor directive called NO_UUID
Removed the the last request time index from the cache object list and revised the operation of cache housekeeping to improve performance.
Added a processor direcive to enable serialization of activeSubscriptions.
Removed the the last request time index from the cache object list and revised the operation of cache housekeeping to improve performance.
Incorrect dtata type used for the change-of-reliability notification parameter.
The property name for the notificationParameterChangeOfReliability is incorrectly named as eventParameterChangeOfReliability
Incorrect name type in the ASN Parser for the property alternativeNames.
The ChangeOfCharacterString, CnetNotificationParameterdoubleOutOfRange, ChangeOfReliability and ChangeOfTimer properties have incorrect name types in the ASN Parser.
Added a helper function bacnapi_driver_get_object_json() to serialize a BACnetContainer to JSON.
Revised the operation of all bacnet services to return an error when operating syncronously and an error response was returned from the device.
Updated the unit tests for MSTP.
Introduced a new getter GetJson() on the CBACnetContainer class to serialize to object as a json string.
Updated the unit tests to verify that a bacnet services returns an error when operating syncronously and an error is returned from the device.
Version 6.0.27 - 22 June 2021
The setting for BBMDMAXFOREIGNDEVICES in the BACnetIP is being ignored and overriden with the value of 1.
The ASN JSON parser updates the DOW in the date when the the months value is 13 or 14 and when the Date value is 32, 33 or 34.
The ASN parser does not handle the anyValue choice in for BACnet log records which is required when decoding a double value.
Fixed possible exception in the packet logger when a file rollover takes place. 5/ Updated the windows version for the lookup of NIC adapters to use dynamic memory instead of static.
The packet logger shows an incorrect port number in a packet is sent to UDP port number different to the on bound to by the BACnet/IP port.
The ASN parser updates the DOW in the date when the the months value is 13 or 14 and when the Date value is 32, 33 or 34.
Fixed possible exception in the packet logger when a file rollover takes place.
Fixed possible unhandled exception when the invoker is destroyed during the unloading of the BACnet API stack.
Added pcap logging support to the linux version of the api.
Added the double data type to the log record.
Added a unit test for special events
Added a new unit test for forwarded whoIs requests.
Version 6.0.26 - 15 June 2021
Removed compiler warnings from linux build.
Added pcap logging support to the linux version of the api.
Updated the c++ sample applications
Updated the linux version to support pcap logging.
Added a unit test for sending confirmed event notification service messages.
Version 6.0.25 - 3 June 2021
Removed unused source files from the windows directory.
Fixed link error during build
Added new exported functions for adding static address bindings and static router to network addresses.
Added a periodic flush for the pcap file.
Revised the cache to always use subscribeCov requests.
Version 6.0.24 - 21 May 2021
Possible exption during sending of segmented requests if there is a timeout during sending one of the segments due to an invalid window size returned.
When the IP Address of a NIC adapter is changed on a windows system while the API is running the BACnet/IP datalink layer is unable to send packets. The port requires a restart to bind to the new ip address when this happens.
Added a unit test for multiple ports
Version 6.0.23 - 7 May 2021
After a driver restart with BBMD enabled it is not loading correctly.
The JAVA release failed to build due to a link error from GetEnumerationTpye()
Added a helper function to return the enumeration data type for an object property
Added a unit test for the loop object to test writing to the controlledVariableValue
Version 6.0.22 - 6 May 2021
Added valgrind to the jenkins build to check for memory leaks during the build process.
Changed th raspberry pi build to statically link to libuuid
Fixed errors in the linux install.sh batch script.
Fixed undefined reference in linux makefile
Added BACnetSC to the linux build
Added BACnetSC to the linux makefile.
Changed the raspberry pi build to statically link to libuuid
The MAC Address lookup for local devices fails if the device ID equals zero, or if the first byte in the MAC address is zero.
The ip address of a BACnet/IP port is ignored when it is assinged to a virtual NIC adapter, the default IP address is used instead.
Updated the unit tests for the Analog Input object.
Revised the operation of the fault algorithm for the analogInput object to validate that the min/max_fault exist. Removed the validation of the reliability property if outOfService is set to true. Added a new config parameter called validateMinMaxPresentValue which can be used to deactivate the validation of the Min/Max values when the presentValue is written to.
Revised the address binding double linked list and added unit tests to provide better code coverage when adding and removing items to the unknown device list. The error in the link list can cause a service request to fail to complete.
Updated the makefile for the linux unit tests.
Compile error in BACnetSCWS.c when using the raspberry pi cross compiler.
Valgrind show possible memory leak in the serialize object module.
Valigrind is showing a false error in the json parser..
COV reporting multiple requests are not sorted correctly which can lead incorrect COV Multiple notifications when a value changes.
Valigrind is showing a false positive for a memory leak in the cov_reporting module.
Valgrind is reporting uninitialised values in the unit test.
After updating a hash key in the store with a zero length key the item should not be inserted into the hash table.
Version 6.0.20 - 2 April 2021
Added a unit test for validating that the driver cannot be started twice.
Removed the pem file option from the BACnet/SC port configuration screens.
Added additional logic to prevent the driver from being started twice.
Version 6.0.19 - 1 April 2021
Added support for signed long data types to the JSON parser
The JSON parser returns the wrong type for a writePropertyMultiple service error structure.
Version 6.0.18 - 31 March 2021
Added multithreaded support to the MAC Address lookup functions to allow multiple threads to access the shared memory.
Updated the CBACnetAnyParser to include signed and unsigned long data types.
The cpp files from the core directory are not copied to the subversion release during the build process.
Updated the CBACnetAnyParser to include signed and unsigned long data types.
Version 6.0.17 - 30 March 2021
Revised the build script for updating the firmware revision number.
Added .net unit tests for the BACnet/SC callback functions
Added additional parameters to the new BACnet/SC Callback for certificate validation.
Added new BACnet/SC Callbacks for certificate validation and hub connection status changed.
Version 6.0.16 - 22 March 2021
Added an additional variable to check if the service request is made in asyncronous mode which is used to free the memory allocated by the request.
Reverted the change to add a mutex around the channels global variable
When the the SetListener class is used to listen for callbacks, a possible unhandled exception can occur if the driver is destroyed before the listener class is destroyed when an application exits.
Version 6.0.15 - 21 March 2021
The calback for on_sc_request_public_private_keys() is not called when the array contains values. It should be called always.
Added protection around adding/removing chanels to the API
Version 6.0.14 - 21 March 2021
Changed the return type for the OnNetworkLoadSecureConnectKeys virtual function to boolean.
The .net unit tests failed due to duplicate port usage.
Added new .net unit tests for static address bindings.
Revised the unit test for the OnNetworkLoadSecureConnectKeys function.
Added a new .net unit test for the OnNetworkLoadSecureConnectKeys function.
If a single port is configured and a non zero network number is specified then static bindings set for devices connected to the local network will cause service timeouts.
Version 6.0.13 - 18 March 2021
Added .Net unit tests for the CBACnetDriver callback routine fired when the port changes state.
Activate the BACnApi CSharp unit tests in the Jenkins build system.
Added chsarp unit tests to the jenkins build system
Added callbacks the CBACnetDriver class to fire when the port changes state and the BACnet/SC certifcates require loading.
Updated the method signature for CBACnetDriver.OnNetworkPortStateChange
The unit tests results are failing to parse the list results due to the call to enable junit xml
The unit tests results are failing to parse the list results. The call to produce the list results are not required.
Added new unit tests for the BACnet/SC port and async operation.
Added new unit tests for the BACnet/SC port and async operation.
Version 6.0.12 - 25 February 2021
The serial number callback is not called in the Linux version of the API.
When the bacnet ip link layer binds and fails to determine which primary ethernet adapter is in use the socket is not closed and will fail to restart after it is called again.
Revised the signiture of on_network_port_state_change to include the network port instance number.
Added new callback function fired when the port changes status to running, failed and stopped.
Added new unit tests for expired certificate support in BACnet/SC
Added suport to load the BACnet/SC private/public keys from a callback function and implemented a unit test that uses openssl to test the callbacks.
When the JSON parser is used to execute a whoIs request, the service response flag for whoIs shows false.
Logging fails if the driver has a NULL value for the Debug build, there is no issue with the Release build.
When the JSON parser is used to execute a whoIs request, the service response flag for whoIs shows false.
When a subscribeCOVMultiple request is sent with no maxNotificationDelay specified the API returns with an inconsistentParameters error.
Version 6.0.11 - 22 February 2021
The date string and json parser does not set the dayof week flag to 0xFF when the month or day wildcard options are set.
The controller unit test is reporting some false failures.
The date string and json parser does not set the dayof week flag to 0xFF when the month or day wildcard options are set.
Some unit tests fail due to missing test bacnet database files.
Unit test reporting false errors in the object tests.
When the port is disabled, the network port does display an error message after the activateChanges property is set.
BACnet/SC unit tests are giving a false failure.
BACnet/SC unit tests are giving a false failure.
JSON parser unit tests are giving a false failure due to an incorrect string comparison.
When an internal BACnet object object is created, the object name is initialized with random characters.
Version 6.0.10 - 17 February 2021
BACnet/SC is using TLS1.2 instead of TLS1.3
Revised the development build scripts to build the security module.
Reverted back to visual studio 2005 for building BACnDgl.dll
Version 6.0.8 - 10 February 2021
Enable internal writes to the controlledVariableValue of the loop object.
When the reliability is set to a value other than NoFaultDetected then 2 COV notifications are transmitted, the first has the alarm bit set and the second has both the alarm and fault bit set. Only 1 covNotication should be sent with the alarm bit and fault bit both set.
If the faultParameters property is not present disabled the fault algorithm on the event enrolment object.
Added a BACnet/IP unit test for getting/setting the NIC params.
Added support for generating a new tagged release when the version number is incremented
Revised jenkins to use a multibranch pipeline.
Updated the script for incrementing the version number to change to the development branch
Version 6.0.7 - 22 January 2021
Updated the online help system
Revised the naming convention for the linux shared library.
Updated the csharp swig generator to support the nuget package on linux.
Migration from subversion to git
Fixed compiler error in old versions of visual studio.
Added BACnet SC source files
Version 6.0.6 - 12 January 2021
BACnet Server API Revision History (BACnet 2016 Version 1 Revision 19)
Version 5.1.11 - 6 December 2020
When using revision 19 of the API with network ports enabled the connect string is not correctly saved in the bacnet.db file.
Version 5.1.10 - 20 November 2020
If a static address binding is added with an empty mac address, the driver stops responding to bacnet services.
Version 5.1.9 - 17 November 2020
After the driver is restarted the EventMessage stack does process messages correctly.
Version 5.1.8 - 26 October 2020
The cancellation function performs a lookup rather than accessing a volatile variable to remove any possible chance of unhandled exceptions.
Fixed an error in the build process
Ensure backward compatibility for existing apps configured with UNICODE.
The service override handler is not working when multiple channels are defined.
Version 5.1.7 - 10 October 2020
When a timeout occurs reading the services support, the device remains in the wrong state and stops updating points.
The JSON parser returns an error when a NULL value is defined in a write Property request.
Version 5.1.6 - 2 October 2020
Add support for queueing TSM requests when more than 128 requests are made at the same time to a single device.
Incorrect enumeration type for EventType in the ASN parser for EventEnrolmentSummaryAck
Version 5.1.5 - 1 September 2020
If a property was previously subscribed in the cache and then resubscribed a COV is not issued for the resubscription.
BACnetObjectBase::SetStringValue() does not initialize the transmitted character set to 0.
The JSON parser for .net has a compatibility issue for the servers GetAlarmSummary, GetEnrolmentSummary and GetEventInformation which causes the services to fail in the .net release.
Moved the CBACNetDriver constructor and destructor out of the header files.
When multiple static IP addresses are assigned to a single network interface card, the BACnet/IP driver selects the first IP address for the network adapter instead of the one that has been assigned in the network port object.
The ASN parser does not handle Infinity and negative infinity values for both JSON and ASN string values.
The schema plugins are not all loaded, only the default schema is being loaded up.
The BACnetObject Execute base method does not call the instrinsic reporting algorithm.
Introduced a new method called GetObject() on the BACnetObject class to find an existing object in the device.
Version 5.1.4 - 1 July 2020
If a property is subscribed into the cache using readProperty requests then the cache module sends out a readPropertyMultiple request for polling.
After a property has been resubscribed in the cache module a COV event is not immediately sent.
The PDU parser does not correctly parse the proprietary property for staticRouterToNetwork bindings.
Reinstated the enum values for the BACnetPriorityValueTypes from the version 4 release to keep backwards compatibility.
Version 5.1.3 - 22 June 2020
The CBACnetStringBuilder class does not handle the character sets for JIS X 0208, ISO 10646 (UCS-4) and ISO 10646 (UCS-2)
Json parser fails for DateTime datatype if an invalid date or time is specified.
Reinstated enum values from the version 4 release to keep backwards compatibility.
Revised the Visual Studio C++ distribution zip files to include a Visual Studio 2019 version and a seperate Visual Studio 2005 version.
Unable to bind the adapter via name on linux, the specified adapter was “eht1” but the communication went through “eth0”.
Unable to send packets to eth1 after setting the ipaddress corresponding to eth1 on a linux system.
The datelist property returns valueOutRange when an addListElement request is made.
When an IP address is pass in as the only parameter to the connect string for a BACnet/IP port on the linux release it reverts back to the default ethernet adapter.
Revised the operation of the device scan to search for gaps on a second pass with a small delay between whoIs requests.
Added a new global setting for /cache/device/[DEVICE_ID]/numberOfAPDUretries
Added a new global setting for /cache/config/maxPointsPerReadPropertyMultiple
Remove the priority text from the log message description.
The sequence number is not populated after a readRange request with type ByTime.
The event message stack was not deleted which causes an issue after restarting the BACnet driver.
Possible deadlock when restarted the driver. It occurs if a call is made into the driver by another thread while the driver is being stopped.
Unable to add 2 BACnet/IP ports with different IP Addresses that use the same UDP port number.
Csharp and Java builds are failing on Linux operating systems
When setting a character string value using the asn1_string_set method the ASN parser can be bypassed to copy the string directly.
Updated the local objects samples to decouple the priority array.
Added new network port objects which will be inherited from a BACnetIp port running in normal ip mode. When the port runs as a foreign device a new network port object will be created with a reference to the BACnet/IP port running in normal ip mode. Multiple network port objects can be added in this way.
Updated the local objects samples to decouple the priority array.
Added support to decouple the priority array from the present value of objects that support the priority array.
Added a static method to the CBACnetObjectContainer class called DecouplePriorityArray which will decouple the priority array from the present value. A class that implements BACnet Writes to an object with a priority array will listen for change of event notifications to the priority array and then use this to update the present value.
Added the routerToNetwork address of service indications, for example when an Iam message is received the callback function will pass the address of the routerToNetwork or null if the device is on the local network.
Extend writing of the status flags property for internal objects to permit the override flag to be written to.
Version 5.1.2 - 1 April 2020
Extend writing of the status flags property for internal objects to permit the override flag to be written to. Internal writes only are permitted, writes from BACnet services will still return an error to indicate that write access is denied.
The event state is incorrectly set as required for many of the newly defined BACnet 2016 objects.
The BACnet ASN string parser does not include the day of week unless it is a wildcard date.
Implemented a new data type for storing an array of BACnet Addresses and a new proprietary property for storing the static routerToNetwork Addresses.
Implemented a new proprietary property for storing the static address bindings.
Added a new properties to the BACnetApiProperties class for storing the WhoIsReattemptTime and the WhoIsTimeBetweenSend.
Added pdb files to the distribution packages.
Unhandled exception when using the x64 bit version with logging set to Debug due to a missing header file declaration.
Changed the unmanaged dll's for cbmsBACnet to statically linked.
When a network is unknow, the router continuously sends a whoIsRouterToNetwork message, it should give up after 6 attempts.
When BACnetRemoting is used and multiple BACnet/IP ports are configured then service timeouts can occur for devices connected to the local networks.
Use the NIC adapter name to perform a lookup of the IP Address if it is passed through in the connection string for the BACnet IP port.
If the MSTP datalink layer is restarted after failure then the system status state goes into downloadInProgress.
Added additional debug logging for service indication and object access.
COV messages sent by a virtual devices are not sent immediately. The client TSM lookup fails for the simpleAck message and results in a timeout.
Log messages contain duplicate text for the priority level.
Address binding lookup messages are continuously logged when the reference is for the local device id and no mac address is specified.
The bacnet reinitialize device service returns an error when it is operated called by the API itself.
Added support for the device scan from the parameter get/set api using bacnet_param_get and bacnet_param_set.
Unhandled exeption when call parameter bacnet_param_set with the path /default/vendorName.
Revised the operation of ASN parser for constructed data types.
The EDE file loader returns an error when loading to the local device.
If a sendto error occurs and logging is enabled then packet is retransmitted continuously.
When a value in the cache is updated a resort of the last update time is required.
When the driver is configured with an ANEX-H port and the local device object is queried a timout might occur.
Updated the Jenkins automated builds for visual studio 2013, 2015, 2017 and 2019
Version 5.1.1 - 17 Dec 2019
- Optimised deletion of an item from the array when indexes are used. It currently does a resort of the array index after the removal of each item.
- Incorrect error message after bind fails in the BACnet/IP link layer.
- Unable to set network to zero if only one network is defined.
- Reset the NIC adapter settings after a period of seconds from the last query.
- Added thread synchronization to the bacnet file logger
- Revised the flush operation of the wireshark packet logger.
- Possible crash of after a restart of the API if there are pending services waiting to complete.
- When 2 or more ports are configured there can be timeouts when sending a BACnet service to the local port.
- When a COV subscription is made from the API to itself, the API incorrectly sets the device id to zero for COV notifications.
- CPU runs at 100% when multiple ports have been configured with the same network number.
- Updated the C++ sample applications to include a static address binding.
- Updated the object access sample.
- Unable to Add/Remove routerToNetworkAddressBindings using the Add/Remove list element services because the property is configured as readOnly.
- The routerToNetworkAddressBindings property displays the results from the internal port router tables.
- If the destination MAC Address length is greater than 1 and the destination network is not the local network then the number of TSM'S per router setting is ignored.
- Updated the Jenkins automated builds for visual studio 2013, 2015, 2017 and 2019
- The watch default of 5 is always used.
- The JSON Time converter returns an exception if the hundreds of a second are out of range.
- Static address bindings can be created with a network number of 0 (local device)
- When there is only 1 port defined and the static address bindings contain a network number that references the local network timeouts will occur.
- Internal logging to a file is not working.
- The create object service returns an error if a local service is initiated and the the API is not configured to support the createObject service.
- Dynamic binding fails when a request was previously made using the Network/MAC Address. This can happen when the database was saved with an active COV subscription.
- Added Visual Studio 2017 build.
- Unable to set the network number to 0 when 1 port is configured.
- Added additional unit tests to the bstack module
- When many events are stored in the EventHandler module the last event may not be returned until a new event appears in the handler.
- Debug log message when dynamic binding fails is called continuously.
- Added additional log statements to the cache logging.
- Add the timestamp to Visual Studio console output.
- After changing the device id of a device while the BACnet API is already running the API times out after trying to read from the device.
- When the presentValue property is subscribed from the cache module it will attempt to read the statusFlags property even though they do not exist.
- Unable to write an empty string to the description property.
- After receiving a segmented Ack messages it does not lookup the client or server tsm correctly.
- The counters do not update when refreshAll is called.
- When the deviceId is to 4194302 it will send an Iam message.
- The packet logger does not roll over the log file correctly.
- Added support for winpcap packet logging.
- Added an OnCOV event to the cache module when the system status property is changed.
- Unable to select the second NIC interface card when using BACnet/IP.
- If 1 port is configured and the network number is not sent to 0 then timeouts will occur when sending a service to the local device.
- The CLogging::OnMessage() virtual function signature should be OnMessage(int priority, char* message)
- Removed references to wpcap.lib and revised to use callback functions using getprocaddress.
- The last write error is not stored in the cache module.
- Revised the thread synchronization within the Message Stack to improve performance.
- Introduced a small delay between sending of packets to prevent missed packets on slower devices.
- Added a sender thread to the bacnet/ip data link layer.
- Implemented a worker thread for BACnet/IP UDP send and receive. This is to ensure that all packets are received as quickly as possible to prevent any loss of packets.
- Added additional logging for dynamic address bindings.
- Added support for npcap to all visual studio builds.
- Updated the cbms_bacnet application to include a client test application for polling data.
- Added a switch to provide packet logging.
- Added X64 support for BACnet Ethernet.
- When 2 or more ports exist with routing disabled the vendor proprietary private transfer requests are not working.
- When entries from the hash table are deleted the has table size does not get reduced which can cause the size to increase to a large value.
- Revised the operation of the channels to support previous versions.
- Additional performance improvements to the hash table traverse.
- Added new stats logging group for the BACnet Driver.
- Updated the cache stats with additional values.
- Performance improvements for the cache module.
- Stop queuing TSM's if they are on the local network.
- Implemented memory leak testing from the unit tests.
- Added additional logging for statistics.
- Revised the operation of CTSM's for VirtualDevices to include the NDPU source address in messages.
- Revised the operation of STSM's to complete immediately.
- Implemented dongle support for the CBMS version.
- Revised the address binding lookup table to use hash lookups in place of a binary search.
- After a restart the cache parameters are reset back to the initial state.
- When process identifiers are not used, set the process identifier to an 0xFFFFFFFF to indicate that the identifier is not used.
- Optimized the EDE file loader.
- Revised the logic for locating a device using dynamic binding.
- After restarting the network ports when running in protocol revision 18 mode the ports are not created from the connect strings.
- Added a proprietary property to the network port to disable the port.
- Cache does not revert to readProperty polling after a subscribeCov failure.
- Added a new parameter /global/mem/usage to return the memory usage of the process.
- Removed Linux compiler warnings
- Removed "strict" decoding for writeProperty requests.
- CurrentCommandPriority is not set for the characterstringvalue object
- The characterStringValue returns a propertyIsNotArray error when reading from the eventTimeStamps with an arrayIndex set.
- Added propertyGrid support to the JSON ASN objects.
- After a reboot the cache module does not send out a SubscribeCOV request immediately because the "ticks" value starts from zero.
- When a device is offline when the driver starts the device capabilities are not read which causes the cache to use readProperty for updating the values.
- Updated the Build for the nuspec packaging.
- Added Global Parameters and helper functions.
- Object serialization error in the device object for properties that contain null values.
- Implemented the default handler for the characterstringvalue object.
- Revised the operation of the schedule object for processing the presentValue.
- Added the arrayIndex to the object_container_getXXX and object_container_setXXX functions.
- The reliability property of an analogInput is an optional property.
- The propertyList is returning the incorrect properties.
- The alarmValues and faultValues property of the multistateInput and multistateValue objects are acting like an array.
- Maintain an invoke id for each device for sending service requests.
- Incorrect properties listed under required and optional for the eventEnrolmentObject
- The scheduleDefault does not return an error when an array index is specified.
- Added configurations for the different .Net framework versions.
- Added additional log statements for writeProperty requests.
- Revised the Object handler functions
Version 5.1.0 - 27 Oct 2019
- Refactored to remove all static variables and replace them with dynamically loaded variables assigned to a stack object. This makes it possible to run multiple instances of a BACnet driver with each instance isolated from the other. Each driver maintains it's own list of networks, devices and objects.
- Refactored to pass the stack object to the function calls. The calling application must pass the stack object to service requests to use the appropriate BACnet driver.
- Introduced Channels to the stack for multiple instances of the BACnet Driver.
- Added a new constructor to the CBACnetDriver class to specify the channel name associated with the class. If multiple CBACnetDriver classes are instanciated then each instance must have it's own unique name. If no name is given then only 1 CBACnetDriver class is allowed within the application.
- Added new constructors to all BACnet service class to set the CBACnetDriver to be used.
- Added new helper functions SetProprietaryDataType() and GetProprietaryDataType() to the CBACnetDriver class for setting the datatype of a proprietary property used by a Vendor. Properties are then encoded/decoded to the specified data type.
Version 5.0.18 - 27 March 2019
- Transformation between string types is incorrect if the string length is greater than 64.
- Updated the error handling for sending of UDP packets.
- Local broadcast messages use the incorrect BVLL function.
- When the recipient is defined set to network 0, no mac address (local network) unconfirmed event messages are not sent.
- If the enumerated value is greater than 1 then writing to a binary value succeeds, either an error should be returned or the value should be adjusted to 1.
- WhoIsRouterToNetwork is sending an invalid network number when the network is greater than 255.
- Optimised the EDE file loader.
- When the notificationClass recipientList property contains a destination with the recipient type set to BACnetAddress and issueConfirmedTransactions is set to false then an event may not be sent. The API does not send out a whoIs request for dynamic binding and the events are held in the queue until an Iam is received which prevents the event message from being sent.
- The status flags property in the character string object does not update after writing to the outOfService property.
- Unconfirmed Event notification messages are not being broadcast onto the local network.
- When writing to a property with a TimeValue type the API does not return a valueOutOfRange error when if the time has a wildcard value. For example Any Minute for the Hour 12. The value should only be accept values for a specified time.
- When writing to a property with a DateRange type the API does not return a valueOutOfRange error when if the date has a wildcard value. For example Any Month in the Year 2018. The value should only be accept for a specified date, or an unspecified date.
- After receiving an AckAlarm Service, the API sends a confirmedEvent message with an invalid priority.
- After sending a deviceCommunicationControl request with disable set to true the API responds with an abort PDU to further packets. It should send no response at all.
- The createObject service returns AnalogInput 0 in the ack response.
- Unable to set the currentCommandPriority property to unsupported due to it being a supported property in revision 19, however it does not exist in earlier revisions.
- When the eventDectionEnable property is set to false the eventMessageTexts, ackedTransitions and eventTimestamps are not reset.
- When the eventEnable property is set to false the ackedTransitions and eventTimestamps are not reset.
- After an acknowledgeAlarm service is resent an invalid event state error is returned.
- Modified the schedule object after testing.
- The profileName property in the characterstringValue object is readable even though it has been set to not supported.
- Removed the calculation for getting the last active value for the schedule object.
- Possible segmentation fault when writing to the characterStringValue object presentValue.
- The timestamp of the confirmedEvant following an ackNotification should be the time of acknowledgement.
- The changes made for the deviceCommunication control effected the transmission of whoIs requests
- After a DeviceCommunicationControl service has been received the API still responds to packets.
- Incorrect error code sent after a response to an AcknowledgAlarm request.
- Revised the operation of the network port object to automatically restart after a reinitialzeDevice service is sent to activate the changes.
- When a writePropertyMultiple request is sent with the propertyValue omitted the API responds with an invalid data type response. It should respond with a reject message of inconsistent parameters.
- Changed the properties fdbbmdaddress and subscriptionlifetime to make them writable.
- Added data transformation to the schedule object for writing to the object property references.
- When an exception schedule exists for a day in the past and it does not contain a paired time value with a NULL entry then the exception schedule is not use.
- Return an error if create object is called when the object type is not supported.
- CurrentCommandPriority is not set for the characterstringvalue object
- The characterStringValue returns a propertyIsNotArray error when reading from the eventTimeStamps with an arrayIndex set.
- Exception error in the scheduleObject when the effectiveDataRange returns false and the presentValue changes state. First seen in build version 5.0.17 build 508
- Changed the PDU decoded to return an error when decoding the propertyValue in writeProperty, writePropertyMultiple and createObject requests when the dataType written does not match the expected data type.
- If the presentValue object of AnalogValue, BinaryValue and MultistateValue objects are not commandable then the stack returns writeAccess denied even though the property has been configured as readWrite.
- When writing to the recipient list the fromDate and toDate should only accept a specific time. Wildcard or unspecified times should return a valueOutOfRange error when writing to the recipient list.
- Implemented the wildcard address of 4194303 for the network port object.
- Added additional callback functions to the ASN1 property maps to set the access level and to determine if a property is excluded. Removed unused callback functions from the property map.
- When the readPropertyMultipleService handler is overriden and the client application calls GetSize on GetListOfWriteAccessSpecifications, the array contents are erased.
- The bacnet api does return an error when the createObject service is executed with invalid properties.
- Incorrect required properties returned from MultistateOutput, Schedule, CharacterString and NetworkPort objects.
- Incorrect update interval for cache points that use readProperty or readPropertyMultiple.
- PDU parser should return inconsistent parameters when a packet fails to be decoded. It currently returns "constructed" data when decoding fails.
- Maintain an invoke id for each device for sending service requests.
- Revised the network ports to load a single Port for each data link layer. Port references are not used.
- Revised the operation of the schedule object for processing the presentValue.
- Implemented the default handler for the characterstringvalue object.
- Revised the operation of the schedule object for processing the presentValue.
- The calendar object does not correctly update the present value when a BACnetWeekNDay entry is selected.
- Incorrect error code returned for some object access requests.
- Incorrect properties listed under required and optional for the eventEnrolmentObject
- Added the arrayIndex to the object_container_getXXX and object_container_setXXX functions.
- The reliability property of an analogInput is an optional property.
- The propertyList is returning the incorrect properties.
- The alarmValues and faultValues property of the multistateInput and multistateValue objects are acting like an array.
- The recipientList property of the notification class object is acting like an array when reading from it.
- Reading the stateTest property with an array index of zero does not return the record count.
- Writing to the stateText with an unsigned integer value with array index zero does not adjust the size of the array.
- Writing to the priorityForWriting property does not return an error when the value is 6 or outside bounds.
- Writing to the numberOfStates property does not return an error when the value is outside bounds.
- When a readProperty request is made using the wildcard device ID, the response should have the actual device id in it.
- When 2 or more recipients are added to the recipient list of a notification class object no events are sent to the second recipient.
Version 5.0.17 - 24 July 2018
- The cache module does not always resend a subscribeCOV service to a BACnet device when using COV notifications to update values. The points will fail to update values when this occurs.
- Setting the cache parameters from the helper function SetAppIntSetting() does not work for some settings.
- Added a new helper function in the BACnet core to determine if an index is dirty.
- Added a new configuration parameter in the CBACnetDriver class call SetPollBeforeSubscribing() to allow an application to turn on or off polling before a subscribeCOV notification is sent.
- Unable to write internally to readOnly properties.
- Revised the name of some internal properties in the cache module.
- Revised the device discovery timeout to prevent service requests from timing out before a whoIs request has been sent.
- If the cache module is using COV notifications then it should remove the subscriptions before it stops. The CBACnetDriver::Stop() method has 2 additional parameters which can be used to unsubscribe from the devices before shutdown. There is a new function called ShutdownInProgress() which can be called to detirmine if all the subscriptions have been sent.
- When there is a subscribeCOV error within the cache module it will automatically revert to polling with readProperty or readPropertyMultiple. After the resubscription time has expired attempt to resubscribe to the point again. After 3 attempts permanently revert to polling.
- Added Setter and getter functions for UseCovProcessIdentifier to the CCacheParameters class.
- Unable to run the JAVA sample applications on Linux.
- Added -lstdc++ to the makefile for the linux build.
- For internal objects decouple the priority array from the presentValue.
- The OnWriteProperty() callback is not being fired from the API.
- Restart the MSTP port if the COM port fails to send or receive any BYTES after a period of 30 seconds.
- Added an uptime parameter to the MSTP driver stats.
- Writing to the presentValue of an analogOutput or analogValue does not return an error when the minPresValue and maxPresentValue properties are supported.
- Unable to write to the reliability property when outOfService is true.
Version 5.0.16 - 11 June 2018
- If the priorityArray and reliablity properties are set to NOT_SUPPORTED for commandable objects (eg AnalogOutput) then a BACnet client is still able to write to the object and internal writes no longer work as expected.
- When operating as a BBMD the stack will rebroadcast an invalid packet if it receives a Forwarded NPDU. This bug was introduced in release 5.0.15 after changes were made to allocate memory statically.
- Updated the cache module to send multiple parallel requests to a device. For example if a device only supports readProperty then allow up maxTsmQty parallel requests per device to be sent.
- Added a new helper function SetMaxTsmQuantity() to configure the property for each device. There is a global setting for maxTsmQty and this setting is used as the default value for a device which can then be set at the device level.
- The ServiceAck pdu decoding fails if the response type is a BACnet Error.
- The BACnetCharacterset transmitted datatype is not set to zero in some methods resulting in an incorrect encoding/decoding of the character set.
- The EditPorts dialog box is not functioning correctly, the adapter name and subnet masks are blank.
- Fixed a memory leak in the CSharp version of the API which can occur when a string is returned from the API.
- Added an additional parameter called transmittedType to the SetString() of the CBACnetCharacterString and CBACnetAny classes which will set the character string used when sending bacnet services.
- The helper function IsNullPriorityArray() returns false when it should be true.
- Increased the setting for BUF_GROW_BY_SIZE from 64 to 2056 to improve the performance of the API counters.
Version 5.0.15 - 7 May 2018
- Refactored the network and datalink layers to cache the stack buffers rather than allocate memory dynamically.
- Changed the ARM build to use the memory pool to manage the memory and limit the calls to malloc and free of the operating system.
- Refactored the memory allocation calls to use the macros for mem_malloc and mem_free rather than direct calls to malloc and free. The macros are used for unit testing purposes.
- Incorrect Encoding/Decoding of a BACnetError PDU. This problem surfaced in revision 5.0.10.229
- Changed the name for notificationParameterBufferReady to notificationParameterBufferReadyLegacy in the JSON parser.
- Changed the name for notificationParameterBufferReadyNew to notificationParameterBufferReady in the JSON parser.
- Added new helper functions to the CBACnetObjectContainer class to Get and Set any property. The new helpers are GetI4Value, SetI4Value, GetBoolValue, SetBoolValue, GetR4Value, SetR4Value, GetStringValue and SetStringValue.
- Added new helper functions to the CBACnetAny class to Get and Set JSON strings. The new helpers are GetJson() and SetJson()
- Added new helper functions to the CBACnetDriver class to Serialize and Deserialize to a file in JSON format. The new helpers are JsonSerialize() and JsonDeserialize()
Version 5.0.14 - 13 April 2018
- The outOfService getters and setters are missing on some of the object classes, for example AnalogOutput, AnalogValue, BinaryOutput and BinaryValue.
- Implemented the minPresValue and maxPresValue properties in the AnalogValue object.
- OnWritePropertyComplete callback always returns error BACnetErrorCodeOther.
Version 5.0.13 - 4 April 2018
- The more items flags is not being set in the readRange response when the range type is sequence.
- The readRange service returns an empty data set when the range type is sequence and the totalRecordCount is greater than the number of records.
- Revised the watchdog handler for all of the datalink layers.
- Added restart logic to the datalink layers. If there is an unrecoverable coms error then the link layer will close it's associated port and reopen it.
- Changed the True state in the ASN data types from 0xFF to 1.
- Rolled back changes made to the UTF8 conversions for csharp made in build 213, those changes were not correctly converting UTF8.
Version 5.0.12 - 26 March 2018
- Added an index to the cache point queues to indicate the time in ticks when the request was made. The index used to process the oldest entry in the queue.
- Added a new define statements to set the maximum protocol revision and the default protocol revision. The maximum is 19 and the default is 18. If 19 is selected then Network Port objects will be created.
- Added new static functions the BACnetApiDriver class for setting/getting internal parameters within the API.
- Updated the unit tests.
- Revised the watch logic for MSTP.
- Added additional comments and unit tests to the bacnet/ip data link layer.
- Changed enum name BACnetExtendedNotificationChoiceReference to BACnetExtendedNotificationChoicePropertyValue
Version 5.0.11 - 9 March 2018
- The API crashes when handling a whoHas request if more than 1 virtual device exists and multiple IHave messages are sent.
- Virtual device remain in the downloadInProgress state if the reinitializeDevice service has been deactivated before the driver starts.
- Resolved memory leak in the JSON parser.
- The PD parser has a memory leak when decoding some array types.
- Implemented the network port object.
- Added SubscribeCOVMultiple to csharp samples.
- Updated COV reporting sample for csharp.
- COV Multiple callback handler is not being fired on an event.
- Memory leak in the CBACnetDateTime() class when calling GetDate() and GetTime().
- Object name and description is not reloaded into the objects from the database file.
- Revised the JSON parser.
Version 5.0.10 - 4 December 2017
- Memory leak in the CSharp version when a string is returned from the API.
- When activing as a BBMD Server the stack does not forward local broadcast messages to the foreign device, instead it broadcasts them back onto it's own network.
- Revised the JSON ASN parser to include bacnet services.
- The disableRouter option does not disable all routed messages as expected.
- The API does not handle whoIsRouter to network messages correctly.
- The router does not forward broadcst messages when they are sent to a specified network.
- Introduced profile names the allow an application to configure object properties at run time.
- Reading the service indications stats from the API causes an unhandled exception error.
- BACnetScale property is incorrectly decoded as unsigned integer instead of signed integer.
- Replaced stricmp with strcmp in the file security.c
- Incorrect encoding/decoding of eventParameter type none.
Version 5.0.9 - 22 August 2017
- Searching for an unknown network can fail due to an unitialized variable, as a result executing a service will generate a timeout.
- Remove all instances of memcmp() for comparing of structures.
- Implemented GET, POST and PUT JSON handlers.
- Updated the registration handler for Linux.
Version 5.0.8 - 26 July 2017
- The atomicReadFile service returns an error when an empty file is being read using the recordAccess option.
- The validation for an empty error string in CBACnetDriver::Start() is incorrect.
Version 5.0.7 - 11 July 2017
- Changed eventDetectionEnable property type to optional intrinsic.
- The Action property of the Loop object is not mapped to an enumerated data type
- Introduced Getter functions to the LightingCommand object to indicate if the optional fields are present.
Version 5.0.6 - 23 May 2017
- Reinstated Iam unicast to a whoIs request. BTL testing was successful with Unicast messages following the modified tests released by the BTL.
- Revised the operation of the eventMessageTexts and eventMessageTextsConfig properties. The eventMessage text property remains empty until an event occurs, it will then update with the message sent when the event is generated. The eventMessageTextsConfig property contains the message to send. A callback function can be implemented to replace placeholders with the text message.
- Disabled the TimeSyncronization handler for the Windows build. A time sync message from bacnet will not change the clock on a windows PC.
Version 5.0.5 - 1 May 2017
- Revised the maxAPDUlength calculation for 1476 to ensure that the maximum packet length fits within the 1500 limit of an ethernet frame.
- The maxAPDUlenght of the API is not used when a device responds with a higher maxAPDUlength than that of the API.
- The API is incorrectly sending an Abort - Buffer overflow packet when the response is too large for 1 segment.
- Possible crash in the CBACnetAnyParser class when the parse method is called.
- When the protocol revision is 14 or less the object and service supported bitstrings lengths must be 51 and 40.
- The BBMD is forwarding NPDU messages as a broadcast instead of unicast.
- The cov_notification callback handler is called twice when an object has been written to from a BACnet service.
- Priority array 6 is always set for BinaryOutput and BinaryValue objects when a write request is made. It should be ignored when the minimum on/off times are zero.
- Added support for alarmMessageTextConfig by implementing a callback function.
- Encode/Decode error in the BACnetFaultParameter fault-state type of the ASN parser.
- Revised the ASN string parser to format unsigned strings using %u instead of %d
- Added a #define tag called ASN1VER401 to allow the asn1-string_parse to decode the time value with a : in the string. This matches the formatting in datatype_string_util.
- Elements within the parameters of the Exended EventParameter are always set to null.
- Added code to the BACnetLightingCommand setter functions to set the corresponding flags property. The flags indicates if the property is optional or not.
- When the stack responds to a whoIs request it should respond with a OriginalBroadcastNPDU if the packet is unicast.
- Reinstated Iam broadcast to a whoIs request to satisfy BTL testing.
- The stack is incorrect encoding/decoding BACnetEventParameter type none.
Version 5.0.4 - 9 March 2017
- The BTL test 14.3.5 fails. When operating as a BBMD the device should validate the BDT contents to check that an entry for the local device exists.
- Revised the I-Have response to a who-Has request to use a global broadcast instead of a unicast message.
- Decoding of the BACnetLightingCommand fails when some properties are optional.
Version 5.0.3 - 18 February 2017
- BDT.txt table is not loading at startup.
- In the CSequenceOfBACnetPropertyValue::Add function, the ArrayIndex parameter is not being set.
- The ASN1 parser does not encode/decode correctly for eventParameters type None.
- The ASN1 parser does not encode/decode correctly for faultParameters type faultStatusFlags.
- The ASN1 parser does not encode/decode correctly for faultParameters type faultListed.
- Possible crash when copying from the SequenceOfBACnetReadAccessPropertyValue data type.
- ASN parser not working for the Notification type Command Failure.
- Unconfirmed event notifications are not received.
- Added a JSON to ASN1 parser
- Unconfirmed event notifications are not sent.
- Added linux help files.
- Revised the PriorityValue helper class.
- Reading an array element of an Event_Time_Stamp property returns data type Constructed.
Version 5.0.2 - 9 January 2017
- When the choice is BACnetReadAccessReadResultTypePropertyAccessError the deep copy of the CBACnetAny class will set the values error code and error class to zero.
- Removed lua source files from release version
- Updated Linux customer release.
- Updated the visual studio 2015 build.
- Updated windows tagged release.
Version 5.0.1 - 6 January 2017
Version 4