Skip to content
This repository has been archived by the owner on Jan 9, 2023. It is now read-only.

[UAVCAN] Architectural compatibility with other transport protocols and heterogeneous redundant transports #68

Open
pavel-kirienko opened this issue Jan 17, 2019 · 2 comments

Comments

@pavel-kirienko
Copy link
Member

There is a possibility that in the observable future, UAVCAN will support other transports besides CAN. The topic is reviewed in detail in this forum post: https://forum.uavcan.org/t/alternative-transport-protocols/324

Some UAVCAN implementations are more equal than others. The upcoming rewrite of Pyuavcan will be transport-agnostic, meaning that it is going to be architecturally compatible with UDP, and it will be extensible for other transport definitions that may come up in the future. Libuavcan and libcanard, on the other hand, are made to be CAN-only, non-transport-agnostic, due to historic reasons and also for reasons of resource optimization (it is expected that genericity will cost resources, which are limited on small CAN nodes).

Do we want the Rust implementation to be transport-agnostic or not?

@Hoeze
Copy link

Hoeze commented Feb 6, 2019

Having one protocol to rule them all would be cool 👍

Having UAVCAN supporting newer bus types would be very useful for applications with higher data rate requirements.
Also, UDP support would allow bridging UAVCAN between CAN/ethernet.
Therefore, I could have a CAN bus for small sensors and access them via TCP/IP.

@kjetilkjeka
Copy link
Collaborator

Finally internet again 🚀

Do we want the Rust implementation to be transport-agnostic or not?

I think Rust is a language where this is possible without many problems. The idea was to do this through the TransportInterface trait which can be implemented for different protocols. The idea is to use this to support static dispatch

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants