- CommsChampion Ecosystem

Core Projects

Repository Details
COMMS Library The core component of the ecosystem, allows protocol definition to be simple, declarative statements.
CommsDSL Specification The CommsDSL specification.
Code Generators CommsDSL schemas parsing and code generation tools.
Tutorial The official tutorial on how to define protocol, generate and use protocol definition code.

.

Synthetic Demo Protocols

Main Repository Generated Code Details
cc.demo1.commsdsl cc.demo1.generated Demo protocol to demonstrate definition of various fields as well as simple protocol framing.
cc.demo2.commsdsl cc.demo2.generated Demo protocol to demonstrate protocol versioning, where every message reports protocol version in its transport frame.
cc.demo3.commsdsl cc.demo3.generated Demo protocol to demonstrate protocol versioning, where one “connect” message reports protocol version for all the subsequent messages.

.

Real Life Open Protocols

Main Repository Generated Code Details
cc.mqtt311.commsdsl cc.mqtt311.generated Defines MQTT v3.1.1 protocol, where message ID shares the same byte with extra flags, that may define existence of the fields in message payload as well as influence how message needs to be processed.
cc.mqtt5.commsdsl cc.mqtt5.generated Defined MQTT v5.0 protocol. Similar to v3.1.1, but also adds a heterogeneous list of various properties.
cc.mqttsn.commsdsl cc.mqttsn.generated Defines MQTT-SN protocol, where field of remaining length of the message can have either 1 or 3 bytes length, depending on the value it contains.
cc.ublox.commsdsl cc.ublox.generated Defines UBX protocol used by various u-blox GPS receivers. The protocol itself is quite complex with hundreds of messages. It uses custom checksum calculation algorithms and injects multiple code snippets to fix incorrect or incomplete functionality available by default.

.

Binary Data Encoding / Decoding

Main Repository Generated Code Details
cc.asn1.commsdsl   Provides CommsDSL schema definition to allow ASN.1 encoding.
cc.x509.commsdsl cc.x509.generated Provides definition of the X.509 public key infrastructure certificate.

.

Protocol Handling Libraries

Repository Details
cc.mqttsn.libs MQTT-SN client and gateway libraries.
cc.mqtt311.libs MQTT v3.1.1 client library.
cc.mqtt5.libs MQTT v5 client library.

.

Tools

Repository Details
CommsChampion Tools Plugin based tools to visualize protocol definition and debug exchange of the protocol messages.
cc.demo1_protocol.cc_tools_plugin The demo1 synthetic protocol plugin.
cc.demo2_protocol.cc_tools_plugin The demo2 synthetic protocol plugin.
cc.demo3_protocol.cc_tools_plugin The demo3 synthetic protocol plugin.
cc.mqtt311_protocol.cc_tools_plugin The MQTT v3.1.1 protocol plugin.
cc.mqttsn_protocol.cc_tools_plugin The MQTT-SN protocol plugin.
cc.mqtt5_protocol.cc_tools_plugin The MQTT v5 protocol plugin.
cc.ublox_protocol.cc_tools_plugin The U-blox (UBX) protocol plugin.
cc.mqtt311_client_filter.cc_tools_plugin The MQTT v3.1.1 client filter plugin.
cc.mqtt5_client_filter.cc_tools_plugin The MQTT v5 client filter plugin.

.

Package Managers and Build Systems

Repository Details
meta-commschamp CommsChampion Ecosystem recipes provided as a layer of the yocto project.
cc.buildroot CommsChampion Ecosystem packages as an external customization of the main buildroot build tree.
cc.vcpkg CommsChampion Ecosystem packages as a ports overlay directory of the vcpkg package manager.
cc.cmake CommsChampion Ecosystem projects bundled into a single CMake one. Expected to be used in a signle ExternalProject_Add() invocation.

.