diff --git a/bacnet-stack/doc/htdocs/images/BACnet.png b/bacnet-stack/doc/htdocs/images/BACnet.png new file mode 100644 index 00000000..29c7b57d Binary files /dev/null and b/bacnet-stack/doc/htdocs/images/BACnet.png differ diff --git a/bacnet-stack/doc/htdocs/index.html b/bacnet-stack/doc/htdocs/index.html new file mode 100644 index 00000000..aa528b68 --- /dev/null +++ b/bacnet-stack/doc/htdocs/index.html @@ -0,0 +1,483 @@ + + + + + BACnet stack - open source BACnet protocol stack + + +

BACnet Stack

+

An open source BACnet protocol stack for embedded systems

+
+

About this Project

+

This BACnet protocol stack library + provides a BACnet application layer, network layer and media access (MAC) + layer communications services for an embedded system.

+ +

BACnet - A Data Communication Protocol for Building + Automation and Control Networks - see bacnet.org. BACnet is a standard data + communication protocol for Building Automation and Control Networks. BACnet + is an open protocol, which means anyone can contribute to the standard, and + anyone may use it. The only caveat is that the BACnet standard document + itself is copyrighted by ASHRAE, and they sell the document to help defray + costs of developing and maintaining the standard (just like IEEE or ANSI or + ISO).

+ +

For software developers, the BACnet protocol is a standard way to send and + receive messages on the wire containing data that is understood by other + BACnet compliant devices. The BACnet standard defines a standard way to + communicate over a number of wires, known as Data Link/Physical Layers: + Ethernet, EIA-485, EIA-232, ARCNET, and LonTalk. The BACnet standard also + defines a standard way to communicate using UDP, IP and HTTP (Web + Services).

+ + There are other open source projects for BACnet:

+ + +

There are also commercial BACnet protocol source code libraries for BACnet + that are designed for embedded use:

+ + +

Licensing

+

Our 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 + made available, but the BACnet library can be linked to + proprietary code without it becoming GPL. + See the eCos license overview for + easy to read details about this exception to the GPL. + The license does not require users to release the source code of any + applications that are developed with this BACnet stack.

+ +

The text of the GPL exception included in each source file is as + follows:

+ +
+

"As a special exception, if other files instantiate templates or + use macros or inline functions from this file, or you compile + this file and link it with other works to produce a work based + on this file, this file does not by itself cause the resulting + work to be covered by the GNU General Public License. However + the source code for this file must still be made available in + accordance with section (3) of the GNU General Public License."

+

+ +

The source code

+

The source code is written in C for portability, and includes + unit tests (PC based unit tests) and example application code. + Since the code is designed to be + portable, it compiles with GCC as well as other compilers, + such as Borland C++, Visual C++, MinGW, or MicroChip C18. + The source code is also designed to be readable, understandable, + and most importantly, easy to use.

+ +

The BACnet protocol is an ASHRAE/ANSI/ISO standard, so this library + adheres to that standard. BACnet has no royalties or licensing restrictions, + and registration for a BACnet + vendor ID is free.

+ +

What the code does

+ +

The stack comes with unit tests and demo applications + that can be run under Linux, Win32, RTOS-32, or just about any embedded + microcontroller.

+ +

The unit tests can be run in a command shell on Linux using the + unittest.sh script, or using individual .mak files. They were tested under + Debian GNU/Linux and Ubuntu Linux.

+ +

The BACnet stack was functionally tested + using VTS (Visual Test Shell), + another project hosted on SourceForge, as well as various BACnet controllers, + BACnet workstations, and through BACnet routers.

+ +

Using a master Makefile in the project root directory, a dozen + demo applications can be created that run under Linux or Win32. + Linux supports BACnet Ethernet, BACnet/IP, or ARCNET data link layer + for communication, and BACnet/IP is supported under Win32. BACnet Ethernet + can also be used under Win32 with the WinPcap library. + Root priveleges are required to run the Ethernet or ARCNET interfaces + on Linux, but not needed to run BACnet/IP.

+ + + $ make clean all
+ $ demo/server/bacsrv 123
+ BACnet Server Demo - Device #123
+
+ $ demo/readprop/bacrp
+ bacrp device-instance object-type object-instance property [index]
+
+ $ demo/writeprop/bacwp
+ bacwp device-instance object-type object-instance property tag value [priority] [index]
+
+ $ demo/readfile/bacarf
+ bacarf device-instance file-instance local-name
+
+ $ demo/writefile/bacawf
+ bacawf device-instance file-instance local-name
+
+ $ demo/reinit/bacrd
+ Usage: bacrd device-instance state [password]
+ Send BACnet ReinitializeDevice service to device.
+
+ $ demo/whohas/bacwh
+ Usage: bacwh object-type object-instance | object-name
+ Send BACnet WhoHas request to devices, and wait for responses.
+
+ $ demo/dcc/bacdcc
+ Usage: bacdcc device-instance state timeout [password]
+ Send BACnet DeviceCommunicationControl service to device.
+
+ $ demo/timesync/bacts
+ Received TimeSyncronization Request
+ 2006/8/30 07:10:45.00
+
+ $ demo/ucov/bacucov
+ Usage: bacucov pid device-id object-type object-instance time property tag value [priority] [index]
+
+ $ demo/whois/bacwi
+ Usage: bacwi device-instance | device-instance-min device-instance-max
+ Send BACnet WhoIs request to devices, and wait for responses.
+
+ The device-instance can be 0 to 4194303, or -1 for ALL.
+ The device-instance can also be specified as a range.
+
+
+ +

The demos can be compiled under Win32 using Borland C++ or + Microsoft Visual C++, both of which + are free (as in beer) command line compilers. Be sure to pick up the free + patches (service packs) for the Borland C++ compiler (SP1, SP2), as well as the free turbo debugger. It might also be possible to create Win32 projects using the free Visual Studio Express Edition or MinGW - Minimalist GNU for Windows, but I have haven't tried it. I have used Code::Blocks for compiling the unit tests using the MinGW compiler, but have not tried to get the demos working with MinGW. I have used Code::Blocks with the Borland C++ compiler and it successfully compiles the code.

+ +

There is a Makefile in the ports/rtos32 directory, and a sample + application that runs under RTOS-32. + It currently uses the BACnet/IP data link layer for communication, and also + has an MS/TP datalink layer sample application. + It compiles using Borland C++.

+ +

There is a project in the ports/pic18 directory, and a sample + application that can be build using MP-Lab + and the Microchip compiler MCC18. The MS/TP portion is now working, + and had a good showing at the BACnet International plugfest.

+ + + +

BACnet services supported matrix

+

The BACnet stack currently implements the following services listed in the + the table. We plan to add the rest of the services as we go. + With the services that are implemented, you could build a BACnet device + that meets the standardized profile for a BACnet Smart Sensor, + BACnet Smart Actuator, or a BACnet Application Specific Controller.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BACnet ServiceInitiateExecute
Who IsYesYes
I AmYesYes
Who HasYesYes
I HaveYesYes
Read PropertyYesYes
Write PropertyYesYes
Device Communication ControlYesYes
ReinitializeDeviceYesYes
Atomic Read FileYesYes
Atomic Write FileYesYes
Time SynchronizationYesYes
UTC Time SynchronizationYesYes
Subscribe COV--
Confirmed COV NotificationYesYes
Unconfirmed COV NotificationYesYes
Read Property Multiple--
Read Property Conditional--
Read Range--
Write Property Multiple--
Get Alarm Summary--
Get Event Information--
Get Enrollment Summary--
Acknowledge Alarm--
Confirmed Event Notification--
Unconfirmed Event Notification--
Unconfirmed Text Message--
Confirmed Text Message--
Add List Element--
Remove List Element--
Create Object--
Delete Object--
Unconfirmed Private Transfer--
Confirmed Private Transfer--
VT Open--
VT Data--
VT Close--
+ +

BACnet Objects

+ +

The BACnet stack currently implements a Device Object, and + handles all of the ReadProperty inquiries for the required + Device Object properties. The stack handles Who-Is inquiries + with an I-Am, WhoHas with I-Have, and handles reject messages for + services not currently supported. There is built in handling for + DeviceCommunicationControl.

+ +

The example handlers interact with example objects, including + Analog Input, Analog Output, Analog Value, Binary Input, + Binary Output, Binary Value, Life Safety Point, + and Multi-state Output objects. + The objects can be accessed using WriteProperty, + ReadProperty, or Who-Has services. Adding other BACnet objects + is only a matter of setting up ReadProperty, WriteProperty, or + I-Have handling for the required properties and any other + properties that you want to support.

+ +

File Objects are conditionally included in the demonstation + applications. The files can be access using WriteProperty, + ReadProperty, Who-Has, AtomicWriteFile, or AtomicReadFile services.

+ +

Getting Involved

+ +

If you want to help out on this project, join the developers mailing list, introduce yourself, and tell us what you would like to do. + If you are trying to implement a BACnet device or service using this project, + you are welcome to join the developers mailing list as well.

+ +

More details about the project can be found on + the BACnet Source Forge Project Page

+ +

There is documentation that describes the mechanisms in the BACnet Stack. + I wrote up some answers to some frequently asked questions. Of course, + there are a handful of text files in the doc directory of the project.

+ +

BACnet + Stack file download

+ +

BACnet Developer Resources

+ +There are a number of resources that can help you develop a BACnet product or project. + + + +

BACnet Developer Help

+ +

BACnet® International Developer Resources

+ +

Products and Projects that use this BACnet Stack

+ +

Did you develop a product using this BACnet stack? Let us know, and you +can get a little recognition for your hard work!

+ +

SCInterface™ = Sensor Control Interface - middleware + platform for managing legacy and modern-day sensors through a centralized + interface

+ +

BACnetSim - a +portable implementation of the BACnet data communication protocol. +BACnetSim is meant for embedded devices and use MS/TP as the media +access layer. BACnetSim is a fork of bacnet-stack-0.0.1

+ +
+ + SourceForge.net Logo + +

ASHRAE® and + BACnet® are registered trademarks of the American + Society of Heating, Refrigerating and Air-Conditioning Engineers, Inc., + 1791 Tullie Circle NE, Atlanta, GA 30329.

+

Updated 24-Oct-2006 by Steve Karg

+ +