As we talked about in the dev call, I’m creating this to track some of the progress and issues with the v1 re-write. Preferably, specific tracking issues for individual tasks will be created (as opposed to the current overall tracking issue).
Previous discussion/Tasks to complete
Copy pasted from my email conversation with Alexander, the main tasks are:
Two API issues that need to be addressed.
- Timestamping in a no_std environment, right now I use std::time::Instant to handle everything, which doesn’t fly in a no_std environment. It will likely require some tweaks to the overall API as well
- Random source node IDs (for use in anonymous frames) - not really essential, it can be pushed to the user’s application. Thinking about it right now, that’s probably what I’ll do anyways.
And general work to be done before release is:
- Message structure generation (via templating in nunavut)
- Message serialization/deserialization (can be nunavut or via Rust macros, I’m leaning towards macros but not by a lot)
- UAVCAN/UDP transport support
- no_std, but alloc-capable SessionManager
Work that I would like to be done, but not considered essential for release:
- no_std, fully static SessionManager (I don’t think anyone actually wants that other than me, so this isn’t really essential)
- UAVCAN/Serial transport support
- some form of automated testing to continuously verify interoperability with pyuavcan
Dev call details
Minor Notes
- Crate should provide no_std by default, only enable std with a feature
- Probably
copyborrow canadensis’ solution for Instant (check canadensis_core crate)
Alexander’s tasks (subject to modification due to thesis and general progress)
- Work on implementing more generic timestamping
- Work on
no_std
SessionManager - Work proc_maco side of generation (David will do Nunavut templating - should be pretty easy)
Action Items
- (David) Get example working again (or more robust against dependency issues if that’s the problem)
- (David) Create tracking issues for smaller tasks
There was also some talk about future abstractions on top of the library. I generally didn’t include any of that in my roadmap because I wanted to focus on the core, but there is lots of room for upward growth and nicer things. (Specifically talked about implementing things like Heartbeat)