Updated readme and fixed some spelling and grammar.
This commit is contained in:
@@ -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.
|
||||||
|
|
||||||
[](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
|
[](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
|
||||||
|
|
||||||
[](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.
|
[](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,28 +125,37 @@ 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
|
||||||
be used in scripts or for troubleshooting.
|
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
|
||||||
setup 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
|
||||||
|
|||||||
Reference in New Issue
Block a user