All Projects → bacnet-stack → bacnet-stack

bacnet-stack / bacnet-stack

Licence: other
BACnet Protocol Stack library provides a BACnet application layer, network layer and media access (MAC) layer communications services.

Programming Languages

c
50402 projects - #5 most used programming language
assembly
5116 projects
Makefile
30231 projects
CMake
9771 projects
HTML
75241 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to bacnet-stack

Aggregator
A stand-alone class implementation of the IPv4+IPv6 IP+CIDR aggregator from CIDRAM.
Stars: ✭ 19 (-90.45%)
Mutual labels:  ipv6, ipv4, ip
Ship
A simple, handy network addressing multitool with plenty of features
Stars: ✭ 81 (-59.3%)
Mutual labels:  ipv6, ipv4, ip
ip
Immutable value object for IPv4 and IPv6 addresses, including helper methods and Doctrine support.
Stars: ✭ 212 (+6.53%)
Mutual labels:  ipv6, ipv4, ip
Geolocate-IP-Browser-Extension
A browser extension, which shows you the origin of your IP address.
Stars: ✭ 21 (-89.45%)
Mutual labels:  ipv6, ipv4, ip
IPpy
🚀 Ping IP addresses and domains in parallel to find the accessible and inaccessible ones.
Stars: ✭ 54 (-72.86%)
Mutual labels:  ipv6, ipv4, ip
Php Ip Tools
Useful tools for IP manipulations
Stars: ✭ 152 (-23.62%)
Mutual labels:  ipv6, ipv4, ip
Ip
🌏根据IpV4、IpV6地址获取定位信息的PHP🐘组件 PHP components that obtain location information based on IpV4, IpV6 addresses
Stars: ✭ 23 (-88.44%)
Mutual labels:  ipv6, ipv4, ip
go-external-ip
a Golang library to get your external ip from multiple services
Stars: ✭ 55 (-72.36%)
Mutual labels:  ipv6, ipv4, ip
uC-TCP-IP
A compact, reliable, high-performance TCP/IP protocol stack. Features dual IPv4 and IPv6 support, an SSL/TLS socket option, and support for Ethernet, Wi-Fi, and PHY controllers.
Stars: ✭ 66 (-66.83%)
Mutual labels:  embedded, ipv6, ipv4
Iptools
PHP Library for manipulating network addresses (IPv4 and IPv6)
Stars: ✭ 163 (-18.09%)
Mutual labels:  ipv6, ipv4, ip
private-ip
Check if IP address is private.
Stars: ✭ 26 (-86.93%)
Mutual labels:  ipv6, ipv4, ip
captcp
A open source program for TCP analysis of PCAP files
Stars: ✭ 110 (-44.72%)
Mutual labels:  ipv6, ipv4, ip
SixIndicator
SixIndicator is a WebExtension Plugin which indicates via an icon, if you are viewing the website with IPv6 or IPv4.
Stars: ✭ 17 (-91.46%)
Mutual labels:  ipv6, ipv4
TFTPServer
Managed TFTP server implementation, written in C#. Features: IPv4 and IPv6, blocksize, single port mode, windowed mode, unlimited transfers, MIT licensed
Stars: ✭ 28 (-85.93%)
Mutual labels:  ipv6, ipv4
accomplist
ACCOMPLIST - List Compiler
Stars: ✭ 51 (-74.37%)
Mutual labels:  ipv6, ipv4
ipv6
IPv6-adresse.dk source & data
Stars: ✭ 27 (-86.43%)
Mutual labels:  ipv6, ipv4
zx-ip-address
Deprecated
Stars: ✭ 96 (-51.76%)
Mutual labels:  ipv6, ipv4
masscanned
Let's be scanned. A low-interaction honeypot focused on network scanners and bots. It integrates very well with IVRE to build a self-hosted alternative to GreyNoise.
Stars: ✭ 50 (-74.87%)
Mutual labels:  ipv6, ipv4
php-ip-anonymizer
IP address anonymizer library for PHP
Stars: ✭ 55 (-72.36%)
Mutual labels:  ipv6, ipv4
PHP-IPAddress
IP Address utility classes for PHP
Stars: ✭ 63 (-68.34%)
Mutual labels:  ipv6, ipv4

BACnet Stack

BACnet open source protocol stack for embedded systems, Linux, and Windows http://bacnet.sourceforge.net/

Welcome to the wonderful world of BACnet and true device interoperability!

Continuous Integration

This library uses automated continuous integration services to assist in automated compilation, validation, linting, security scanning, and unit testing to produce robust C code and BACnet functionality.

Actions Status GitHub Workflow: CMake build of library and demo apps on Ubuntu, Windows and MacOS

Actions Status 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 GitHub Workflow: scan-build (LLVM Clang Tools), cppcheck, codespell, unit tests and code coverage.

Actions Status GitHub Workflow CodeQL Analysis

About this Project

This BACnet 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 containing data that are understood by other BACnet compliant devices. The BACnet standard defines a standard way to communicate over various wires or radios, 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, HTTP (Web Services), and Websockets.

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.

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 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 well as other compilers, such as Clang or IAR.

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

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

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 as well as various controllers and workstations. It has been included in many products that successfully completed BTL testing.

Using the Makefile in the project root directory, a dozen sample applications are created that run under Windows or Linux. They use the BACnet/IPv4 datalink layer for communication by default, but could be compiled to use BACnet IPv6, Ethernet, ARCNET, or MS/TP.

Linux/Unix/Cygwin

$ make clean all

Windows MinGW Bash

$ make win32

Windows Command Line

c:\> build.bat

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 default.

The library is also instrumented to use CMake which can generate a project or Makefiles for a variety of IDE or compiler. For example, to generate a Code::Blocks project:

$ mkdir build
$ cd build/
$ cmake .. -G"CodeBlocks - Unix Makefiles"

c:\> mkdir build
c:\> cd build/
c:\> cmake .. -G"CodeBlocks - MinGW Makefiles"

The unit tests also use CMake and may be run with the command sequence:

$ make test

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 uses LCOV. The HTML results of the unit testing coverage are available starting in the test/build/lcoverage/index.html file.

The demo applications are all client applications that provide one main BACnet service, except the one server application and one gateway application, a couple router applications, and a couple of MS/TP specific applications. Each application will accept command line parameters, and prints the output to stdout or stderr. The client applications are command line based and can be used in scripts or for troubleshooting.
The demo applications make use of environment variables to setup the network options. See each individual demo for the options.

There are also projects in the ports/ directory for ARM7, AVR, RTOS-32, PIC, 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 there are project files for IAR Embedded Workbench and Rowley Crossworks for ARM.

Project Documentation

The project documentation is in the doc/ directory. Similar documents are on the project website at http://bacnet.sourceforge.net/.

Project Mailing List and Help

If you want to contribute to this project and have some C coding skills, join us via https://github.com/bacnet-stack/bacnet-stack/ or via https://sourceforge.net/p/bacnet/src/ and create a fork or branch, and eventually a pull request to have your code considered for inclusion.

If you find a bug in this project, please tell us about it at https://sourceforge.net/p/bacnet/bugs/ or https://github.com/bacnet-stack/bacnet-stack/issues

If you have a support request, you can post it at https://sourceforge.net/p/bacnet/support-requests/

If you have a feature request, you can post it at 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 [email protected]

ASHRAE® and BACnet® are registered trademarks of the American Society of Heating, Refrigerating and Air-Conditioning Engineers, Inc. 180 Technology Parkway NW, Peachtree Corners, Georgia 30092 US.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].