Libuavcan is quite a large framework which will take a lot of work to migrate to V1 - and so far, I don’t believe that anyone has offered to do the work.
To this regard, I have the following radical proposal:
Either to replace (or in addition to if we don’t want to let go of libuavcan), I propose that we create small, C-based application layer helper libraries for different use cases.
For example, there would be something on the lines of libucanapp for the standard application layer, libudral for UDRAL logic and PnP allocation, etc.
Benefits:
- small
- modular
- provides the batteries-included application layer logic without a lot of added baggage
- C implementation, no requirement on C++. C++ support could also be provided if people want it.
- provides a consistent, cross-ecosystem reference implementation of application layer help for projects that want it - reducing the amount of testing/validation that needs to be conducted on e.g. autopilot implementations.
The only few downsides I see:
- people who want to migrate from libuavcanv0 will find no 1:1 alternative
- people who want a C++ API may be disappointed
- Abstraction for the physical layer (e.g. socketcan) will have to be moved somewhere else.
Thoughts?