Skip to content

CommsDSL schema-based definition of MQTT v5 protocol

Notifications You must be signed in to change notification settings

commschamp/cc.mqtt5.commsdsl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overview

MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol. This project implements all the messages from the protocol specification v5 .

The protocol is defined in the schema file using CommsDSL. The commsds2comms code generator from commsdsl project is used to generate C++11 code of the protocol implementation.

The src folder contains additional and/or overriding default functionality code snippets, that get injected into the generated code.

The code generators from the commsdsl repository generate full CMake projects. Some of these generated projects are hosted as separate repositories that can be viewed and used independently.

License

Please read License section from commsdsl project.

How to Build

This project uses CMake as its build system. Please open main CMakeLists.txt file and review available options as well as mentioned available parameters, which can be used in addition to standard ones provided by CMake itself, to modify the default build.

This project also has external dependencies, it requires an access to the COMMS Library and code generators from commsdsl projects. These dependencies are expected to be built independenty and access to them provided via standard CMAKE_PREFIX_PATH and/or CMAKE_PROGRAM_PATH (for the binaries of the code generators). There are also scripts ( script/prepare_externals.sh for Linux and script/prepare_externals.bat for Windows) which can help in preparation of these dependencies. They are also used in configuration of the github actions.

The project's cmake configuration options allow building bindings to other high level programming languages using swig and emscripten, see relevant commsdsl's documentation pages for details.

Linux Build

$> cd /source/of/this/project
$> mkdir build && cd build
$> BUILD_DIR=$PWD CC=gcc CXX=g++ COMMON_INSTALL_DIR=$PWD/install COMMON_BUILD_TYPE=Release ../script/prepare_externals.sh
$> cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install -DCMAKE_PREFIX_PATH=$PWD/install
$> make install

Windows Build

$> cd C:\source\of\this\project
$> mkdir build && cd build
$> set BUILD_DIR=%cd%
$> set GENERATOR="NMake Makefiles"
$> set QTDIR=C:\Qt\5.15.2
$> set COMMON_INSTALL_DIR=%cd%/install
$> ..\script\prepare_externals.bat
$> cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_INSTALL_PREFIX=%cd%/install -DCMAKE_PREFIX_PATH=%cd%\install 
$> nmake install

Supported Compilers

Please read Supported Compilers info from commsdsl project.

How to Build and Use Generated Code

Please read the Generated CMake Project Walkthrough documentation page for details on the generated project internals.

The release artifacts contain doxygen generated documentation of the protocol definition.

Contact Information

For bug reports, feature requests, or any other question you may open an issue here in github or e-mail me directly to: arobenko@gmail.com. I usually respond within 24 hours.