Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

eXtensible Bit Vector Communication (protocol)

Project Description
XBVC: eXtensible Bit Vector Communication (protocol...)

The 'e' is silent.

XBVC is a compact, endian independent, framed message passing protocol
suitable for use in embedded systems, or whatever you feel like
throwing it in.

Messages and Enumerations are defined in YAML using the following

#This is an example Extensible Bit Vector Communication protocol message definition

#Integer types:
#u32: unsigned 32 bit integer
#s32: signed 32 bit integer
#u16: unsigned 16 bit integer
#s16: signed 16 bit integer
#u8: unsigned 8 bit integer
#s8: signed 8 bit integer
#y[x]: array of type 'y', 'x' members long

#Example enumeration
# enumeration values are parsed in order
get_target: {

# Example Messages
# Note that there are two special fields in each command
# _targets: this specifies which target (i.e. which end of the message pipe)
# will be responsible for generating this message. Since this protocol was made
# with embedded targets in mind, this is important for space savings in the code
# Note that it is not necessary for all language targets to adhere to this directive
# _id: This specifies the unique message id and allows for somppe minor extensibility
- _targets: {host}
- _id: 0
- Target: u32
- Fluff: u8[10]

The tool then converts this yaml definition into source
code for any of the supported platforms (c and python for now, more to

This source code contains the message definitions, enumerations, and the
framer / message arbitration mechanism. The only things the user must
provide are read/write/init functions, and the individual message
handlers. (Note: The message handling paradigm varies by language)

For example:

1. In the c implementation, the user must provide: xbvc_platform_init,
xbvc_platform_write, and xbvc_platform_read
2. in the python implementation, the user must subclass XBVCEdgePoint
and provide connect, _read, and _write functions (see the generated
python code for an example that provides a loopback test)

## Prerequisites
1. Python 2.7
2. pyyaml (via pip)
3. jinja2 (via pip)

## Installation
1. Clone repository
2. run 'python install' in the project root

## Use
1. Create a yaml file containing your messages and enumerations using
the schema outlined above
2. Call, passing in your yaml file as the input parameter,
a destination folder as the output parameter (this will be created
for you), and the targets and languages

./ -i msgs.yaml -o code -t device -l python

3. Integrate the generated files into your build (I suggest making
this a phony target in your makefile and copying the files into
their final destination)

4. Provide the platform specific functionality functions and implement
your message handlers.

## License
This software, including all language target templates is provided
under the GPLv2 license. HOWEVER, all generated code is the property
of it's respective owner to be licensed however they wish. Please see
the LICENSE file for a copy of the GPL.

1. Provide a python package
2. Whip up some platform examples (pyserial, c loopback, c socket, c
3. Add more platforms (java, c++, go)
4. Think about providing some baked in messages (unknown message /
problem decoding)
Release History

Release History

This version
History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
XBVC-0.0.1.tar.gz (15.8 kB) Copy SHA256 Checksum SHA256 Source Dec 16, 2014

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting