RELEASE NOTES 04/13/2022 Version 2.2.2 Issues Corrected in v2.2.2: (1) When building a Read-Property-Multiple list the driver would build the list greater than the size limit dictated by the device's MAX-APDU-LENGTH-ACCEPTED property. (1a) This function used to work properly in earlier releases but got broken in one of the subsequent fixes. 11/03/2021 Version 2.2.1 Issues Corrected in v2.2.1: (1) Segmentation fault on machines with gcc version higher than 4.8.5 (1a) The driver would crash on start up while it was trying to build a list of type read-property-multiple. A pointer in the list would become invalidated after calling the list.erase() function. (1b) Pointer validation was added to the BACnetDevice class to correct the error above. (1c) You now have to start the BACnet driver manually in the st.cmd file by calling 'drvBACnetStart' after 'iocInit'. 09/15/2020 Version 2.2.0 Issues Corrected in v2.2.0: (1) whois command-line tool would segmentation fault and/or output "ERROR!" (1a) The whois command-line tool would crash if the tool was executed and while at the same time another device on the network would also issue a whois request or a network layer message. The message would remain stuck in the buffer and generate the decoding errors below (i.e, 1b). (1b) Example Console Output Errors: ERROR! int BACnetConnection::recvFrom(BACnetDeviceAddress &src_addr, BACnetBuffer &buff) -> ERROR! int BACnetNpdu::decode(BACnetBuffer &buff) -> While decoding the buffer bit-7 of the NPDU-control octet is set, indicating that this is a network layer message, instead of a BACnet-APDU. I only know how to handle APDU-messages... ERROR! int BACnetConnection::recvFrom(BACnetDeviceAddress &src_addr, BACnetBuffer &buff) -> ERROR! size_t BACnetBVLL::decode(BACnetBuffer &buff) -> While decoding the buffer the BVLC-TYPE octet (0x01) is invalid. It must be 0x81 (1c) The above items were corrected by filtering out network layer messages and any other message that is not the expected BACnet I-AM message. Additionally, a speed enhancement was made to the whois tool by not waiting. Originally the tool would wait for 5 seconds for devices to reply after it was executed. Now it only waits when issuing the whois command for all devices on the network (./whois -i eth0 -p 47808). Otherwise, when searching for a single device (./whois -i eth0 -p 47808 1), or a range of devices (./whois -i eth0 -p 47808 1 100) it will return immediately after all of the devices searched for have replied with their I-AM messages. (2) readprop command-line tool would segmentation fault (2a) This fault was related to the the one above (1) and was corrected. (3) Some informational messages were prefixed with "ERROR" (3a) These messages were prefixed with ERROR and were confusing to users. This was corrected by prefixing the informational messages with "FYI" instead of "ERROR". 01/30/2019 Version 2.1.0 (1) Added 'readprop' command line tool. Used for reading properties from a device and printing to the result to the command line. (2) Added 'epicsAtExit()' to shutdown threads and free objects. 01/10/2019 2.0.0 Initial Release