BACnet Stacks for Linux
If you're a software developer tasked with implementing BACnet on a Linux-based platform, you've come to the right place. If you've looked at the BACnet standard, you know that it's very complex, and you probably don't have the time to become that much of a BACnet expert. You probably don't have the time or resources necessary to develop BACnet support from the ground up. You've already realized that BACnet isn't just a "driver", it's a whole complex philosophy. You need a source for reliable platforms to help jumpstart the process of getting your products communicating with other BACnet devices. You need PolarSoft®.
Full FreeRange (FFR) - when you need extensive functionality
PolarSoft FreeRange is a set of modular software component modules that provide BACnet client and server application layer, network layer and media access (MAC) layer communications services to embedded systems programs. FreeRange is written entirely in the C language for ease of portability to various platforms, and comes with examples for Linux out-of-the-box.
FreeRange interfaces with the embedded system through simple function calls. FreeRange abstracts underlying tasking and I/O to simplify implementation on different platforms and operating environments. FreeRange implements nearly every BACnet service in client and server forms. However a unique conditional compilation feature allows configuration of specific subsets of services for smaller and easier-to-implement products with corresponding reduction in resource requirements.
The stack also includes full routing functionality and a high-performance MAC layer interface. You can use FreeRange with a single media type, or with multiple ports with N-way routing. The BACnet device object may be homed on any single media type. In addition it supports Segmentation, BBMD functionality, MS/TP Proxy functionality and virtual devices.
VSBHP - when you need a smaller implementation
Not all BACnet devices require the power and sophistication of FreeRange. Often a much smaller set of capabilities are required, as well as more restricted resources in terms of CPU and memory. For these applications we created Very Small BACnet (VSB). This is a family of BACnet stacks that are tailored to constrained devices ranging from the very smallest sensor to fairly modest capability controllers. While not as capable as FreeRange, VSB stacks pack a big punch and are widely used in many industry-leading devices. While VSB was intended for small platforms, a surprising number of customers use VSBHP on embedded Linux platforms in situations where the power and complexity of FFR isn't required. Like it's big brother, VSBHP comes with a Linux example.
LKM - when you need to implement MS/TP under Linux
The MS/TP MAC layer of BACnet requires fairly precise control over timing. Many developers have discovered that you can't reliably achieve this performance using traditional user-mode serial port handling under Linux. For this reason we developed a Linux Kernel Module (LKM) that implements timing-critical portions of MS/TP as a kernel mode driver. LKM is available for 2.4, 2.6, 3.0 and 4.0 kernels and later. You must have patched the system for 1ms timer ticks (HZ=1000). LKM can be used with FFR, FR-RC and VSBHP.