Awesome Open Source
Awesome Open Source
xpcc logo

Cross Platform Component Communication

The xpcc project consists of two main parts:

  • First part is the xpcc communication module, a packet oriented communication protocol, enabling transparent communication between components on different platforms (from PCs to small 8-bit microcontrollers). It provides an interface to communicate via CAN, TCP/IP or TIPC.
  • The second part is a ever growing universal but a bit robotic oriented C++ library for microcontrollers.

The primary aim has been the usage of this system in autonomous robots for the EUROBOT competition, but it can be used for many other purposes as well.

Get the Code

$ git clone git:// xpcc
$ cd xpcc


The main documentation is created from doxygen files in the doc-folder. It can be found [online here] (

Development Model

The new things we are working on are created on feature branches, and as soon as they compile, merged into the develop branch. We do annual releases on our master branch. They contain the code that has been tested on our robot for the past season. So if you want to have a somewhat stable and tested codebase and you are satisfied with the features it contains, we recommend you use one of our releases. On the other hand, if you want to use the most recent code (and don't mind us breaking APIs now and then), or if you want to develop for xpcc, you should use the develop branch.

Folder structure

Temporary folder, build files created during building the unit tests etc. go in here. Can be deleted to save disk space.
Documentation, mainly the doxygen documentation. The online documentation on is build by running 'doxygen doxyfile' in this folder.
Example projects that show the usage of parts of the xpcc library. These projects are always up to date and are tested to compile before a release.
Among other things some test programs which are run before a release to check that everything is compiling correctly.
SCons tools (e.g. for the build process, for compiling for AVR microcontrollers, for compiling for ARM7 and Cortex-M0/3/4, etc.)

Look at the SConstruct files in the example folder and the online documentation to see how to use the provided scons tools.

Source files for the xpcc library
Template files for xpcc, Unit-Tests etc.
Test programs, used during the development of the library. May be out of date or not working at all.
Supporting tools for the usage of the library.

For example the communication builder, used to generate header files for the communication architecture from XML-files.

How can I contribute?

Use the library and give us some feedback. That's the easiest way for you and the best way for us to see if something is unclear or missing.

There is a mailing list: xpcc-dev

If you need a specific feature just drop us a mail and we will look into it. But don't expect a quick response, we are always busy building robots ;-)

If you want to change the library be sure to read the developer section, to familiarize yourself with the coding convention, design decisions etc. The source code is freely available, so feel free to adapt it to your needs. The only thing we ask you to do is to contribute your changes back. That way everybody can profit from it.

Have fun!

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
C Plus Plus (370,748
C (276,169
Arm (1,386
Stm32 (1,224
Microcontroller (935
Avr (725
Gcc (534
Cortex M (204
Related Projects