Skip to content

COJSON library for Arduino

COJSON library is also available as Arduino Studio .ZIP library:


cojson tutorial for C++17

C++17 has simplified use of template parameters. Instructions, given in this tutorial, describes how to define JSON model with cojson::autos templates.
Note: GCC 7 or higher is required to compile cojson_autos.hpp !


COJSON Code Generator

cojson v.2 offers an easy start option by using C++ code automatically generated from a JSON sample the user needs to parse or to write.
To use this option just open codegen page, load or copy-&-paste your JSON and copy-&-paste or save the generated C++ code.
And then build your application with cojson sources .


Enabling C++ for PSoC projects

PSoCProgrammable System on Chip - is an ARM Cortex based family of MCUs (wiki) by Cypress Semiconductor. Cypress offers developers a dedicated IDE - PSoC Creator. Unfortunately, PSoC Creator, (as of version 4.2) does not support C++, despite the underlying GGC Toolchain (arm-none-eabi-gcc-5.4) has C++ support at descent level.

PSoC Creator has an option for migrating to Eclipse CDT IDE, however, migrated projects has no C++ support either

This post explains how to enable C++ for PSoC projects, imported in Eclipse CDT IDE.


Building OpenSplice DDS for LinkIt Smart 7688 (and other OpenWRT on MIPS)

This post describes how to build OpenSplice DDS for LinkIt Smart 7688 and other OpenWRT targets

USB++ a C++14 template library for handy descriptor definition


USB++ (usbplusplus) is a C++14 template library that gives the user a simple and error-prone way for defining USB descriptors, suitable for embedded projects.


VLC multiroom

VLC-multiroom is a shell script that on a Linux-based media computer configures systemd to run multiple VLC Media Player instances for audio playback via all available ALSA sound cards and for web based remote control with a purpose to make the media computer the core of a multiroom audio system.

Building MiniDLNA for OpenIndiana

MiniDLNA is a lightweight media server available for Linux platforms. It also may work on a wider range of Unix systems, but that capability does not come out of the box.

This post provides some instructions on building MiniDLNA on OpenIndiana, Hipster release.


μcuREST Tutorial

Getting Started

With μcuREST you can implement REST services and/or a web application for communication with your embedded application. First you’ll need to decide which resources (variables or functions of your application) you wish to expose via HTTP and assign URI to those resources. Then define a μcuRESTresource map, binding URI names to the resources. Use this map to instantiate a micurest::application and start a network stack for that application.


Cascaded Configuration Sets for C++1y


Preprocessor macros are widely used in C++ for configuring reusable modules, targeting different platforms or working around compiler’s differences. Such approach is inherited from C and used even in modern pure C++ libraries, such as boost.

The aim of this work is to research on suitability of C++ templates and language features for establishing and maintaining compile time configuration of run-time values without use of the preprocessor. Although there are many disputes on advantages and disadvantages of templates vs macros, author’s belief is templates are better in many cases just because they are the first class citizens of C++ language.