Become a sponsor to Alex Robenko
Over the years I had to implement multiple binary communication protocols used by various embedded systems. Every time I got annoyed and frustrated over a necessity to manually write error prone boilerplate code. There are so many available serialization tools and libraries (such as protobuf, and many others), but not a single one was adequate for my needs. Most of these tools focus on data serialization and facilitation of RPCs. Their main goal is to make data serialization and network transfer as quick as possible. It is a noble cause, but not really a first priority for embedded systems. For the latter it is much more important to protect against the malformed data and reduce amount of boilerplate code than to gain a couple of extra CPU cycles when performing the (de)serialization.
In all the solutions I've reviewed and analyzed the generated code is not customizable and in most cases not really suitable for embedded systems, especially bare-metal ones. There are no means to introduce some compile or generation time updates such as configuring polymorphic interfaces required for a particular application or choosing particular data structures, disable usage of RTTI or exceptions, etc... The code generated by all the tools still requires a significant amount of integration boilerplate code to be written. All of the available solutions focus on supporting multiple programming languages in their code generation rather than a quality of the code for a particular language (C++ in my case).
To rectify the situation I decided to implement my own C++ and embedded systems focused solution. It's called CommsChampion Ecosystem. There are multiple repositories all hosted under the roof of the commschamp github organization
2 sponsors have funded arobenko’s work.
Featured work
-
commschamp/comms_champion
C++(11) library to implement and tools to monitor binary communication protocols
CMake 243 -
commschamp/CommsDSL-Specification
Specification of Domain Specific Language (DSL) to define binary communication protocol for comms_champion project.
CMake 8 -
commschamp/commsdsl
DSL schemas parser and code generators for CommsChampion Ecosystem
C++ 21 -
commschamp/cc_tutorial
Tutorial for CommsChampion Ecosystem
C++ 12 -
commschamp/cc.ublox.commsdsl
CommsDSL schema-based definition of UBLOX protocol
CMake 43 -
commschamp/cc.ublox.generated
UBLOX (UBX) protocol definition, generated by commsdsl2comms out of cc.ublox.commsdsl schema
C++ 19
$1 a month
SelectAcknowledgement - a simple thank you from an individual sponsor to acknowledge that my work is been used and it's useful.
$5 a month
SelectRecognition - a BIG thank you from an individual sponsor to let me know that my work is crucial to your projects' success, that its constant maintenance and new features development are important. The name of the sponsor can be added to the README file if requested.
$25 a month
SelectAcknowledgement and recognition from a small organization (company) to support the development and maintenance. The name and/or logo of the supporting organization (company) can be added to the README file if requested.
$50 a month
SelectAcknowledgement and recognition from a bigger business to support the development and maintenance. The name and/or logo of the supporting organization (company) can be added to the README file if requested.