Skip to content
forked from LorenVS/bacstack

Open-source implementation of the BACnet (Building Automation Control network) protocol

License

Notifications You must be signed in to change notification settings

nizqsut/bacstack

 
 

Repository files navigation

bacstack

This project is in preliminary development, and right now can't really be used to accomplish anything usefull. However, progress is being made quickly on implementing absent core functionality.

An implementation of the BACnet (building automation control network) protocol. Provides datalink, network and application layer services for interacting and integrating with BACnet control networks.

Currently, this project only targets linux operating systems, and is being actively developed and maintains for ubuntu/mint. A windows port is planned in the future, but is far down on the list of priorities.

All works and code in this project are released under the MIT license (see included LICENSE) file

getting started

The current build environment for the bacstack depends on:

  • git (obviously)
  • gcc
  • g++ (for type-generator)
  • make
  • ctags (for test runner generation)
  • rsync (for include file copying)

If these are available on your machine, you should be able to get up and running by running something along these lines:

*note: the shared library generated by the bacstack are placed into the lib/ folder in the repository base. The export LD_LIBRARY_PATH... command can be replaced by any equivalent command on your system to ensure that path is used for finding shared library files */

git clone [email protected]:LorenVS/bacstack.git
cd bacstack
export LD_LIBRARY_PATH=path/to/repo/lib:$LD_LIBRARY_PATH
make (output is quite verbose, add -s most of the time)

Running make should generate a number of files in lib/ for each of the libraries included in the bacstack. It should also generate executables in bin/ for each of the executables in the bacstack.

"make" should also run all the tests in the tests/ project by default

bacutil

A small utility library providing some core functionality that most other libraries depend on. This library also serves as a small platform abstraction library, and includes some types and function for that purpose

type-generator

The type generator is (currently) the only project implemented in C++. It is used to transform the types.def file (located in the root of the repository) into C structures and functions that are useful for general-purpose BACnet programming.

This project is currently in a small state of disrepair, and some of the code (especially within the actual generator) needs to be reorganized

bactypes

Library which includes implementation for all BACnet primitive types, as well as the implementation for complex types generated by the type-generator

bacdl

Datalink implementations live within seperate processes from the main BACnet stack. They communicate with the stack using loopback (usually) TCP sockets. This library contains all the types and functionality for the communication protocol between a datalink and the stack

bvlc

Contains implementation of general purpose BACnet/IP structures and functionality. Support is planned for all 3 modes of BACnet/IP device (foreign device, regular IP and BBMD).

bacstack

Will contain implementation for all core bacnet logic above the datalink layer. This will include all network, application, and user-level APIs for working with the BACnet stack.

bacdb

This project is more a conceptual playground for me at the moment and has no usefull functionality right now

Will contain an implementation of a transactional database used for persisting BACnet objects. This will act as the backing store for all objects stored in the local device object hosted in the BACnet stack

bacip

An implementation of a datalink layer for the bacstack that allows for a foreign device connection to a remote bbmd. Eventually, support will be added for bbmd and regular IP modes, and more thorough configuration options will be available

bacsrv

Services daemon (eventually) for the bacstack, which generally just hosts an instance of a bacstack session

About

Open-source implementation of the BACnet (Building Automation Control network) protocol

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published