blob: 58208589a6d82796b88ddbee46a557f586c6d417 [file] [log] [blame] [view]
[![Build Status](https://travis-ci.org/cabo/cn-cbor.png?branch=master)](https://travis-ci.org/cabo/cn-cbor)
# cn-cbor: A constrained node implementation of CBOR in C
This is a constrained node implementation of [CBOR](http://cbor.io) in
C that I threw together in 2013, before the publication of
[RFC 7049](http://tools.ietf.org/html/rfc7049), to validate certain
implementability considerations.
Its API model was inspired by
[nxjson](https://bitbucket.org/yarosla/nxjson). It turns out that
this API model actually works even better with the advantages of the
CBOR format.
This code has been used in a number of research implementations on
constrained nodes, with resulting code sizes appreciably under 1 KiB
on ARM platforms.
I always meant to improve the interface some more with certain API
changes, in order to get even closer to 0.5 KiB, but I ran out of
time. So here it is. If I do get around to making these changes, the
API will indeed change a bit, so please be forewarned.
## Building
There is a `Simple-Makefile` for playing around, as well as a complete
[`cmake`](http://www.cmake.org)-based build environment.
(You can choose what fits your needs better.)
Building with `cmake`:
./build.sh
Building including testing:
./build.sh all test
Generating a test coverage report (requires lcov[^1]; result in `build/lcov/index.html`):
./build.sh all coveralls coverage_report
License: MIT
[^1]: Installation with homebrew: `brew install lcov`