PX4/Firmware — pull request #1276 by DrTon (2014-08-15 11:46:30+00:00)
Title: uORB2 added, WIP

New version of uORB implemented, attempt to fix issues with old uORB version:
- Using file descriptors requires a lot of memory when app uses a lot of subscriptions.
- Updates queue is useful for some kind of topics, e.g. vehicle_command, to avoid loosing multiple commands that sent immediately.
- Old style C API is verbose and not convinient, it's very easy to make bugs. C++ wrappers needed to make code more beautiful.

Features:
- Written in C++, including client API.
- Not uses files / file descriptors, subscriptions/publications are very memory-cheap.
- Threads synchronization via irqsave()/irqrestore().
- More simple API for publishing, not advertise/publish, but create Publisher and publish.
- Queues support: it's possible to specify queue size in topic definition, subscriber can get next or last value. Useful for commands or text messages.

TODO
- Semaphores and blocking poll() function to get updates on topics immediately.
- Now it's C++ only, C wrappers may be added later for backward compatibility. C++ apps will use native API, i.e. not C++ -> C -> C++ as with uorb_tiny/controllib.