Skip to content


USBUART is a cross-platform libusb-based library for reading/wring data via USB-UART adapters with Android support.
It implements a relay from endpoints of a USB-UART converter to a pair of I/O resources, either appointed by given file descriptors, or created inside the library with pipe(2). User application may then use standard I/O operations for reading and writing data.

cojson tutorial v2.0

1. Getting Started

For a quick start the easiest way is using codegen. Paste you JSON into the left editor, hit button Run and collect results in the right editor. Adjust options if necessary and build with your application.

With instructions, given in this tutorial, you may manually craft or adjust auto-generated structure of your JSON object by mapping its elements to cojson elements, bind them to members of your C++ class (see Section 2), implement the interfaces for the data streams you have, and build cojson library with your application (see Section 3).


cojson – a JSON parser for constrained platforms


cojson is a C++ pull-type JSON parser/serializer for constrained platforms, such as bare metal applications on low-end MCUs. It does not use memory allocation and has almost no external dependencies. It is not intrusive – it neither forces nor implies any particular design of the application. Instead it adapts to fit any existing application code. It is tolerant to data type mismatching. When such occurs, parser just skips mismatching data and makes best efforts to continue parsing. The parser is recursive, e.g. nested JSON elements are handled with the recursion. However, this recursion is driven by the structure definition, not by the input data, which prevents stack faults on malformed input data.

cojson is character type neutral – it can work with signed or unsigned character, as well as with standard wide character types: wchar_t, char16_t and char32_t. It is also transparent for UTF8 and properly handles BOM sequence.


Моторес додаток для Android смартфону



Бензинові двигуни в косарках, мотоблоках та садових тракторах потребують регулярного обслуговування (заміни оливи, повітряного фільтра, тощо) кожні 20-30 годин роботи. Цей додаток допоможе відстежувати мотогодини в ручному режимі, коли користувач власноруч ініціює події пуску і зупинки, чи у напівавтоматичному режимі через "прислуховування" до шуму. Коли лічильник мотогодин досягне відмітки в графіку обслуговування, додаток відобразить цю подію на екрані. Індикація події на екрані буде зберігатись поки не буде явно знята через пункт меню. Відвідайте сторінку додатку в PlayStore


Motores app for Android phones



Petrol engines used in lawnmowers, tillers, garden tractors require regular maintenance (such as changing oil, air cleaner, etc) every 20-30 hours of runtime. This app helps tracking engine runtime in manual mode, when user initiates start and stop events or in semi-automatic mode by "listening" to the noise. Once engine's runtime reaches a point from a predefined maintenance schedule the app indicates this event on the screen. The indication will remain until explicitly cleared via a menu command. Visit app page in PlayStore


Simple RJ45-pluggable IR-repeater

Design of this IR-repeater is based on a photo detector TSMP58138 made by Vishay. This detector differs from many others of this kind by the carrier out signal. The datasheet gives a sample circuit for a repeater application. This design offers slightly modified circuit with visual feedback and an implementation in form of a RJ45 plugin.

Implementing C++ designated initializers with templetized constructor

C99 facilitates support designated initializers:

struct XYZ {
	int x,y,z;

static const struct XYZ zyx = {
	.z = 1, .y = 2, .x = 3

static const struct XYZ yxz = {
	y : 1, x : 2, z : 3

I found this handy feature very useful, since it does not require remembering order of the struct fields and simplifies refactoring and/or evolving of the existing code.
C++0X and C++1X does not allow this (please follow this link for more details)
This page has inspired me on a practical solution to this problem.

Tablet-friendly web gallery engine

Recently I’ve been looking for a tablet-friendly web gallery engine to browse our family’s photo archive. I’ve googled a lot, read couple dozen of reviews, and finally came up with a short list of five galleries to evaluate. Indeed, managed to install only three of them and, unfortunately, none of them was exact match to my expectations. So, I took the best match – the PHP Picture Index and make a theme for it.
The results you may see on this demo page
The theme phppi-theme-max-1.0 is available for downloading via this page

Model-Document-Renderer Design Pattern

Model-Document-Renderer is an evolution of Passive-View design pattern, suggested by Martin Fowler [1]. The difference is mainly in the terminology and in the suggested way of decomposing the application. (Continued)

Case study on web frameworks


The goal of this case-study is to make a short overview of the development tools for developing web-based business applications. The tools must (should) satisfy the following criteria:

This blog is protected by dr Dave\'s Spam Karma 2: 216 Spams eaten and counting...