Updated readme and fixed some spelling and grammar.

This commit is contained in:
Steve Karg
2025-03-19 09:03:20 -05:00
parent 4d62ec83d9
commit 8028d7b79a
+46 -40
View File
@@ -1,7 +1,7 @@
# BACnet Stack # BACnet Stack
BACnet open source protocol stack C library for embedded systems, BACnet open source protocol stack C library for embedded systems,
Linux, MacOS, BSD, and Windows Linux, macOS, BSD, and Windows
http://bacnet.sourceforge.net/ http://bacnet.sourceforge.net/
Welcome to the wonderful world of BACnet and true device interoperability! Welcome to the wonderful world of BACnet and true device interoperability!
@@ -13,7 +13,7 @@ This library uses automated continuous integration services
to assist in automated compilation, validation, linting, security scanning, to assist in automated compilation, validation, linting, security scanning,
and unit testing to produce robust C code and BACnet functionality. and unit testing to produce robust C code and BACnet functionality.
[![Actions Status](https://github.com/bacnet-stack/bacnet-stack/workflows/CMake/badge.svg)](https://github.com/bacnet-stack/bacnet-stack/actions/workflows/main.yml) GitHub Workflow: CMake build of library and demo apps on Ubuntu, Windows and MacOS [![Actions Status](https://github.com/bacnet-stack/bacnet-stack/workflows/CMake/badge.svg)](https://github.com/bacnet-stack/bacnet-stack/actions/workflows/main.yml) GitHub Workflow: CMake build of library and demo apps on Ubuntu, Windows and macOS
[![Actions Status](https://github.com/bacnet-stack/bacnet-stack/workflows/GCC/badge.svg)](https://github.com/bacnet-stack/bacnet-stack/actions/workflows/gcc.yml) GitHub Workflow: Ubuntu Makefile GCC build of library, BACnet/IP demo apps with and without BBMD, BACnet/IPv6, BACnet Ethernet, and BACnet MSTP demo apps, gateway, router, router-ipv6, router-mstp, ARM ports (STM, Atmel), AVR ports, and BACnet/IP demo apps compiled with MinGW32. [![Actions Status](https://github.com/bacnet-stack/bacnet-stack/workflows/GCC/badge.svg)](https://github.com/bacnet-stack/bacnet-stack/actions/workflows/gcc.yml) GitHub Workflow: Ubuntu Makefile GCC build of library, BACnet/IP demo apps with and without BBMD, BACnet/IPv6, BACnet Ethernet, and BACnet MSTP demo apps, gateway, router, router-ipv6, router-mstp, ARM ports (STM, Atmel), AVR ports, and BACnet/IP demo apps compiled with MinGW32.
@@ -27,7 +27,7 @@ About this Project
This BACnet protocol stack library provides a BACnet application layer, This BACnet protocol stack library provides a BACnet application layer,
network layer and media access (MAC) layer communications services. network layer and media access (MAC) layer communications services.
It is an open source, royalty-free library for a RTOS or bare metal It is an open source, royalty-free library for a RTOS or bare metal
embedded system, or full OS such as Windows, Linux, MacOS, or BSD. embedded system, or full OS such as Windows, Linux, macOS, or BSD.
BACnet - A Data Communication Protocol for Building Automation and Control BACnet - A Data Communication Protocol for Building Automation and Control
Networks - see [bacnet.org](bacnet.org). BACnet is a standard data Networks - see [bacnet.org](bacnet.org). BACnet is a standard data
@@ -38,7 +38,16 @@ standard document itself is copyrighted by ASHRAE, and they sell the
document to help defray costs of developing and maintaining document to help defray costs of developing and maintaining
the standard (similar to IEEE or ANSI or ISO). the standard (similar to IEEE or ANSI or ISO).
For software developers, the BACnet protocol is a standard way to send and BACnet utilizes an object-oriented approach in its application layer,
defining data as objects with properties, and it supports multiple data
link layers (e.g., MS/TP, BACnet/IP, BACnet/SC) for communication.
The BACnet object-oriented model uses data and actions that
represent objects and their properties that interact with services.
BACnet objects represent various aspects of a BACnet device,
allowing for standardized access to information without requiring
knowledge of the device's internal design.
The BACnet protocol defines a standard way to send and
receive messages containing data that are understood by other BACnet receive messages containing data that are understood by other BACnet
compliant devices. The BACnet standard defines a standard way to communicate compliant devices. The BACnet standard defines a standard way to communicate
over various wires or radios, known as Data Link/Physical Layers: Ethernet, over various wires or radios, known as Data Link/Physical Layers: Ethernet,
@@ -54,8 +63,8 @@ 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 Note that some source files are designed as skeleton or example
or template files, and are not copyrighted as GPL. The text of the license or template files, and are not licensed as GPL. The text of the license
for these files is designated in each source file as follows: for these files is designated in each source file as follows:
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
@@ -79,22 +88,16 @@ What the code does
For an overview of this library architecture and how to use it, see For an overview of this library architecture and how to use it, see
https://sourceforge.net/p/bacnet/src/ci/master/tree/doc/README.developer https://sourceforge.net/p/bacnet/src/ci/master/tree/doc/README.developer
This stack includes unit tests that can be run using the Makefile in the
project root directory "make test".
The unit tests can also be run using individual make invocations.
The unit tests run a PC and continue to do so with
every commit within the Continuous Integration environment.
The BACnet stack was functionally tested using a variety of tools The BACnet stack was functionally tested using a variety of tools
as well as various controllers and workstations. It has been included as well as various controllers and workstations. It has been included
in many products that successfully completed BTL testing. in many products that successfully completed BTL testing.
Using the Makefile in the project root directory, a dozen sample applications Using the Makefile in the project root directory, dozens of sample applications
are created that run under Windows or Linux. They use the BACnet/IPv4 datalink are created that run under Windows, Linux, BSD, or macOS.
layer for communication by default, but could be compiled to use BACnet IPv6, They use the BACnet/IPv4 datalink layer for communication by default,
Ethernet, ARCNET, or MS/TP. but could be compiled to use BACnet IPv6, Ethernet, ARCNET, or MS/TP.
Linux/Unix/Cygwin Linux/Unix/Cygwin/BSD/macOS
$ make clean all $ make clean all
@@ -107,11 +110,11 @@ Windows Command Line
c:\> build.bat c:\> build.bat
The BACnet stack can be compiled by a variety of compilers. The most common The BACnet stack can be compiled by a variety of compilers. The most common
free compiler is GCC (or MinGW under Windows). The makefiles use GCC by free compiler is GCC (or MinGW under Windows). Makefile builds use GCC by
default. default.
The library is also instrumented to use [CMake](https://cmake.org/) which can The library is also instrumented to use [CMake](https://cmake.org/) which can
generate a project or Makefiles for a variety of IDE or compiler. For example, generate a project or Makefile for a variety of IDE or compiler. For example,
to generate a Code::Blocks project: to generate a Code::Blocks project:
$ mkdir build $ mkdir build
@@ -122,17 +125,22 @@ to generate a Code::Blocks project:
c:\> cd build/ c:\> cd build/
c:\> cmake .. -G"CodeBlocks - MinGW Makefiles" c:\> cmake .. -G"CodeBlocks - MinGW Makefiles"
The unit tests also use CMake and may be run with the command sequence: This library includes unit tests that can be run from the Makefile in the
project root directory, and use a CMake framework that
enables full or individual module testing and debugging using Visual Studio Code
or other IDEs. The unit tests run in a POSIX environment and continue
to do so with every commit within the Continuous Integration environment.
The unit tests may be run with the command sequence:
$ make test $ make test
The unit test framework uses a slightly modified ztest, and the tests are located The unit test framework uses a slightly modified ztest, and the tests are located
in the test/ folder. The unit test builder uses CMake, and the test coverage in the test/ folder. The unit test builder uses CMake, and the test coverage
uses LCOV. The HTML results of the unit testing coverage are available starting uses LCOV (code coverage). The HTML results of the unit testing coverage
in the test/build/lcoverage/index.html file. are available starting in the test/build/lcoverage/index.html file.
The demo applications are all client applications that provide one main BACnet The demo applications are all client applications that provide one main BACnet
service, except the one server application and one gateway application, service, except for server applications and one gateway application,
a couple router applications, and a couple of MS/TP specific applications. a couple router applications, and a couple of MS/TP specific applications.
Each application will accept command line parameters, and prints the output to Each application will accept command line parameters, and prints the output to
stdout or stderr. The client applications are command line based and can stdout or stderr. The client applications are command line based and can
@@ -140,10 +148,14 @@ be used in scripts or for troubleshooting.
The demo applications make use of environment variables to The demo applications make use of environment variables to
set up the network options. See each individual demo for the options. set up the network options. See each individual demo for the options.
There are also projects in the ports/ directory for ARM7, AVR, RTOS-32, PIC, There are also sample projects in the ports/ directory for ARM, AVR, PIC,
and others. Each of those projects has a demo application for specific hardware. and others. Each of those projects has a demo application for specific hardware.
In the case of the ARM7 and AVR, their makefile works with GCC compilers and In the case of the ARM and AVR, their Makefile or CMakeLists.txt builds
there are project files for IAR Embedded Workbench and Rowley Crossworks for ARM. with GCC compilers. There are some project files for IAR Embedded Workbench
and Rowley Crossworks for ARM.
More microcontrollers are supported via the port to Zephyr OS which has moved to
https://github.com/bacnet-stack/bacnet-stack-zephyr
Project Documentation Project Documentation
--------------------- ---------------------
@@ -151,8 +163,8 @@ Project Documentation
The project documentation is in the doc/ directory. Similar documents are The project documentation is in the doc/ directory. Similar documents are
on the project website at <http://bacnet.sourceforge.net/>. on the project website at <http://bacnet.sourceforge.net/>.
Project Mailing List and Help Project Support, Bug Reports, and Help
----------------------------- --------------------------------------
If you want to contribute to this project and have some C coding skills, If you want to contribute to this project and have some C coding skills,
join us via https://github.com/bacnet-stack/bacnet-stack/ join us via https://github.com/bacnet-stack/bacnet-stack/
@@ -165,19 +177,13 @@ https://sourceforge.net/p/bacnet/bugs/
or or
https://github.com/bacnet-stack/bacnet-stack/issues https://github.com/bacnet-stack/bacnet-stack/issues
If you have a support request, you can post it at If you have a support request, feature request,
https://sourceforge.net/p/bacnet/support-requests/ a problem getting this library to work for
your device, or have a general BACnet question, please
tell us about it at
https://github.com/bacnet-stack/bacnet-stack/issues
If you have a feature request, you can post it at I hope that you get your BACnet project working!
https://sourceforge.net/p/bacnet/feature-requests/
If you have a problem getting this library to work for
your device, or have a BACnet question, join the developers mailing list at:
http://lists.sourceforge.net/mailman/listinfo/bacnet-developers
or post the question to the Open Discussion, Developers, or Help forums at
https://sourceforge.net/p/bacnet/discussion/
I hope that you get your BACnet Device working!
Steve Karg, Birmingham, Alabama USA Steve Karg, Birmingham, Alabama USA
skarg@users.sourceforge.net skarg@users.sourceforge.net