diff --git a/CHANGELOG.md b/CHANGELOG.md index 53872347..0c3707d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,151 @@ The git repositories are hosted at the following sites: ### Fixed ### Removed +## [1.4.0] - 2024-11-04 + +### Security + +* Secured BACnetAccessRule encoding and decoding and added unit testing. + Fixed BACnetAccessRule application integration into Access Rights object. + Improved unit testing and code coverage. (#790) +* Secured Active-COV-Subscriptions property encoding. (#763) +* Secured COV handling after refactor to using local buffer. (#802) + +### Added + +* Added BACnet Secure Connect datalink. Added BACnet/SC hub application. (#818) +* Added WriteGroup service to blinkt app demo. (#843) +* Added blinkt and piface build in gcc pipeline to prevent bit rot. (#842) +* Added missing MS/TP zero configuration preferred address API and usage. (#840) +* Added unit testing for FIFO peek feature. (#839) +* Added IPv6 Zone Index function to return ASCII. (#838) +* Added network port callbacks for pending changes activate and discard. (#836) +* Added WriteProperty setter for BACnet Unsigned Integer values. (#834) +* Added linker specific code for Darwin for compiling mstpcrc. (#833) +* Added WriteGroup service and Channel object interfaces. (#829) +* Added common property test for BACnetARRAY. (#828) +* Added code to parse BACnetAccessRule from ASCII command line. (#827) +* Added a common BACnetARRAY write property iterator function. (#826) +* Added cmake build artificats to gitignore. +* Added some optional properties into the object property lists up to + protocol-revision 22. (#789) +* Added serial-number property to basic device object example. (#789) +* Added optional description property to basic network port object + example. (#788) +* Added ucix_get_list and ucix_set_list function. (#780) +* Added uci include and lib for cmake. (#779) +* Added BACnet Ethernet support for MacOS X via pcap library. (#775) +* Added local tool aptfile to use with apt based development + installation. (#772) +* Added MS/TP support for MacOS X. (#764) +* Added pre-commit clang-format 17 format check in pipeline. Formatted + entire code base except external/ folders. (#755) +* Added RP and RPM error code indications in callbacks in bac-rw.c + module handling. (#756) +* Added editorconfig, a widely used and supported file in profession IDEs. + The configuration file indicates how files should be formatted. (#753) +* Added pre-commit configuration which can automatically check some basic + code formatting rules everytime someone makes commit. This can also be + used in the pipeline during a pull-request for automated checking. + pre-commit can also be used in a local workspace or within an IDE. + pre-commit makes it easy to select clang-format version so everyone is + using same one. +* Added basic object-name get for ASCII names to enable free if they were + dynamically created. Added unit testing to validate the basic object + ASCII object-name API. (#754) + +### Changed + +* Changed the lint apt install in quality pipeline to be consistent (#837) +* Changed apps/epics by enabling BACnetARRAY checking. (#823) +* Changed BACnet Ethernet and IPv6 on win32 by switching from + WinPcap to npcap. Included npcap SDK in cmake and libs for + IPv6 in cmake. (#774) +* Changed pipeline gcc.yml to reduce known warnings from legacy + API by adding LEGACY flag to make bip-apps with GNU99. (#795) +* Changed ATmega168 example for ATmega328 on Arduino Uno R3 with DFR0259 + RS485 shield. Added ADC interface from BDK port and mapped to some AV + objects. Removed MS/TP MAC address DIP switch GPIO and moved MS/TP + configuration to AV objects. Added AV units property. Added some + Uno R3 Digital Inputs and outputs mapped to some BV. Added AVR EEPROM + from BDK port and mapped some non-volatile data + including MAC address and max manager and baud rate, + device ID and names and description and location. (#784) +* Changed the datalink abstraction to enable selecting multiple datalinks + using BACDL_MULTIPLE and one or more other BACDL defines. (#717) +* Moved west manifest, zephyr folder, and ports/zephyr folders to + another repository https://github.com/bacnet-stack/bacnet-stack-zephyr + so that the rapid pace of Zephyr OS development changes will have + a less impact on the development of the BACnet Stack library. (#757) +* Removed static scope on character array used for object-name since the array + gets copied into characterstring array and static is not needed. (#754) +* Changed clang-format rules to always align const to left side, + and insertbraces to avoid having to use clang-tidy. (#753) +* Moved external files, such as driver libraries, to external/ folders. + It is lot easier to work with automatic formatters if we have external + files in different folder. For some tools we can just exclude + external folder all together. (#744) +* Changed most of the functions use of pointer parameters to const. + Used clang-tidy and sonarlint to help find places where const could be + easily applied. (#714) +* Changed bacapp_snprintf_value() to be const correct. After that + we got a warning that the 4th function call argument is an uninitialized + value in bacapp_snprintf_weeklyschedule(). Fixed the warning by setting + array_index to zero. (#714) + +### Fixed + +* Fixed MS/TP zero-config preferred-station setting to not filter getter. (#844) +* Fixed MS/TP module flush stderr compile error from leftover. (#844) +* Fixed device object compile errors and added IPv6 recipes for blinkt + and piface (#841) +* Fixed BACnet basic file object to have dynamic name, mime-type, path. (#835) +* Fixed MS/TP Slave Node FSM to enable receiving DNER frames. (#832) +* Fixed BACnetLightingCommand decode options by setting them. (#830) +* Fixed jquery.js used for syntax highlighting in PERL documentation. (#817) +* Fixed EXC_BAD_ACCESS in datalink_set() strcasecmp(). (#816) +* Fixed BACNET_APPLICATION_DATA_VALUE declarations to be initialized so + that the next pointer is NULL by default. (#814) +* Fixed mstpcap utility by setting This-Station to the MS/TP promiscuous + mode address 255. Fixed MS/TP receive filter for valid data frames which + was missing. Fixed MS/TP zero-config duplicate node detection. Reset + silence during MS/TP capture after writing packet to prevent endless + packets when stream is interrupted. (#812) +* Fixed the Linux MSTP turnaround delay implementation. (#809) +* Fixed app/router compiled with optimize Os when the program exits with + bit out of range 0 - FD_SETSIZE on fd_set. Solution disables optimize + for size by static set optimize 2 for GCC. Fixes (#793) (#808) +* Fixed app/router-ipv6 duplicate symbol by using Device_Object_Instance_Number + from device-client.c module. Fixes (#778). (#806) (#807) +* Fixed bsd/bip6.c:35:16: error: variadic macros are a C99 feature (#805) +* Fixed MS/TP FSM TS (this station) filter that was removed for zero-config + permiscuous feature. (#803) +* Fixed app router-ipv6 cmake (#800) +* Fixed app router cmake (#799) +* Fixed IP_DHCP_Enable property being present in Network Port object + by adding compiler define. (#796) +* Fixed app/router in cmake recipe. (#794) +* Fixed mismatched comments in netport.c module. (#792) +* Fixed app/server when compiled with BAC_ROUTING. (#783) +* Fixed a warning emitted from arm-none-eabi-gcc in hostnport.c (#785) +* Fixed duplicated C file in CMakeLists.txt (#781) +* Fixed cmake dependencies to build readbdt, readfdt and router-ipv6 + if BACDL_BIP=OFF. (#777) +* Fixed compiler warning in ports/bsd/rs485.c module. (#771) +* Fixed UTF-8 passwords for DeviceCommunicationControl to hold up to + 20 UTF-8 characters. (#767) +* Fixed "types-limits" compiler warnings. (#766) +* Fixed variable data type for boolean in RPM structure. Fixed RPM error + handling to use callback. Fixed bacrpm app example when not enough + command line parameters are used. Fixed empty-list EPICS printing. + Fixed RPM-Ack processing for end of list-of-results. Added minimal + handling for segmentation-not-supported during RPM of object + properties. (#765) +* Fixed the order of operations in SubscribeCOV so the dest_index gets written + to the correct slot instead of an initial MAX_COV_SUBSCRIPTIONS-1. (#761) +* Fixed some spelling typos in comments. (#762) +* Fixed COV detection in the basic Binary Output object example. (#751) + ## [1.3.8] - 2024-08-26 ### Security @@ -31,6 +176,9 @@ The git repositories are hosted at the following sites: ### Added +* Added BACDL_ETHERNET build in the pipeline for MacOS Linux and Windows. (#822) +* Added apps/router to ports/bsd by sharing API with ports/linux. (#821) +* Added missing router-mstp in cmake (#820) * Added shield option explanation to ports/stm32f4xx/README.md (#749) * Added API for intrinsic reporting properties in Binary Value and Binary Input objects (#742) diff --git a/CMakeLists.txt b/CMakeLists.txt index 751a4f88..5bce3b2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5 FATAL_ERROR) project( bacnet-stack - VERSION 1.3.8 + VERSION 1.4.0 LANGUAGES C) # diff --git a/README.md b/README.md index 54dc51a0..af2d801d 100644 --- a/README.md +++ b/README.md @@ -46,13 +46,21 @@ This BACnet protocol stack implementation is specifically designed for the embedded BACnet appliance, using a GPL with exception license (like eCos), which means that any changes to the core code that are distributed are shared, but the BACnet library can be linked to proprietary code without the proprietary -code becoming GPL. Note that some of the source files are designed as -skeleton or example or template files, and are not copyrighted as GPL. +code becoming GPL. The text of the GPL exception included in each source +file is as follows: -The text of the GPL exception included in each source file is as follows: + * SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0 - * SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0 - ^^^^^^^^^^^^^^^^^^^^^^ +Note that some of the source files are designed as skeleton or example +or template files, and are not copyrighted as GPL. The text of the license +for these files is designated in each source file as follows: + + * SPDX-License-Identifier: MIT + * SPDX-License-Identifier: Apache-2.0 + +A software bill-of-materials can be generated using grep: + + $ grep -nrw SPDX --include=*.[c,h] The code is written in C for portability, and includes unit tests (PC based unit tests). Since the code is designed to be portable, it compiles with GCC as diff --git a/src/bacnet/version.h b/src/bacnet/version.h index e59add86..b53a758e 100644 --- a/src/bacnet/version.h +++ b/src/bacnet/version.h @@ -15,8 +15,8 @@ #define BACNET_VERSION(x, y, z) (((x) << 16) + ((y) << 8) + (z)) #endif -#define BACNET_VERSION_TEXT "1.3.8" -#define BACNET_VERSION_CODE BACNET_VERSION(1, 3, 8) +#define BACNET_VERSION_TEXT "1.4.0" +#define BACNET_VERSION_CODE BACNET_VERSION(1, 4, 0) #define BACNET_VERSION_MAJOR ((BACNET_VERSION_CODE >> 16) & 0xFF) #define BACNET_VERSION_MINOR ((BACNET_VERSION_CODE >> 8) & 0xFF) #define BACNET_VERSION_MAINTENANCE (BACNET_VERSION_CODE & 0xFF)