Template library intended to help with implementation of communication protocols.
COMMS Library

COMMS is the headers only, platform independent library, which makes the implementation of a binary communication protocol to be an easy and relatively quick process. It provides all the necessary types and classes to make the definition of the custom messages, as well as wrapping transport data fields, to be simple declarative statements of type and class definitions. These statements will specify WHAT needs to be implemented. The COMMS library internals handle the HOW part.

The internals of the COMMS library is mostly template classes which use multiple meta-programming techniques. As the result, only the functionality, required by the protocol being developed, gets compiled in, providing the best code size and speed performance possible. The down side is that compilation process may take a significant amount of time and consume a lot of memory.

The COMMS library allows having single implementation of the binary protocol messages, which can be re-compiled and used for any possible application: bare-metal with constrained resources, Linux based embedded systems, even independent GUI analysis tools.

The COMMS library was specifically developed to be used in embedded systems including bare-metal ones. It doesn't use exceptions and/or RTTI. It also minimises usage of dynamic memory allocation and provides an ability to exclude it altogether if required, which may be needed when developing bare-metal embedded systems.

How to Use Defined Custom Protocol is a tutorial on how to use already defined custom binary protocol. If you are about to develop one, it would be beneficial to read it as well in order to get an impresion on how the protocol definition code is going to be used.

How to Define New Custom Protocol is intended for developers that need to implement a library for custom binary protocol, which can be used in any application in the future, including bare-metal one with constrained environment.

Refer to comms/version.h file for the version information of the COMMS library and this documentation.