Skip to content
You must be logged in to sponsor arobenko

Become a sponsor to Alex Robenko

@arobenko

Alex Robenko

arobenko
Brisbane, Australia

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.

Private Sponsor
@bearbattle

Featured work

  1. commschamp/comms_champion

    C++(11) library to implement and tools to monitor binary communication protocols

    CMake 243
  2. commschamp/CommsDSL-Specification

    Specification of Domain Specific Language (DSL) to define binary communication protocol for comms_champion project.

    CMake 8
  3. commschamp/commsdsl

    DSL schemas parser and code generators for CommsChampion Ecosystem

    C++ 21
  4. commschamp/cc_tutorial

    Tutorial for CommsChampion Ecosystem

    C++ 12
  5. commschamp/cc.ublox.commsdsl

    CommsDSL schema-based definition of UBLOX protocol

    CMake 43
  6. commschamp/cc.ublox.generated

    UBLOX (UBX) protocol definition, generated by commsdsl2comms out of cc.ublox.commsdsl schema

    C++ 19

Select a tier

$ a month

Choose a custom amount.

$1 a month

Select

Acknowledgement - a simple thank you from an individual sponsor to acknowledge that my work is been used and it's useful.

$5 a month

Select

Recognition - 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

Select

Acknowledgement 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

Select

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