Uavcan gui tool over ethernet ip/udp


There is a need to use the GUI_TOOL configuration utility in the local ETHERNET network. SLCAN (USB-> CAN) was handy for close connection and configuration, but
now the task is to significantly increase the distance from the gui_tool to the uavcan network. Therefore, in this regard, there are several questions:

  1. Is it possible at the current time to connect uavcan gui tool via Ethernet? And how to do it if there is such an opportunity …
  2. Is there a ready-made project on a microcontroller (STM32, NXP, ATMEL, etc.) that would act as a slcan adapter, broadcasting all raw can traffic to an ethernet network?

I have looked at the information on this forum on similar topics: SOCKET_CAN as well as the documentation
but didn’t find a ready-made solution.

  1. Is the implementation of “CAN frame transmission commands - SLCAN commands” (which wrap raw can frame in a capsule), the description of which is located in the file Zubax_Babel_Datasheet.pdf, sufficient to create
    adapter ‘socket_can_udp’?
  1. No.

  2. I am not aware of any.

  3. I wouldn’t do it this way because SLCAN is more of a quick hack rather than a proper protocol. It is highly inefficient, does not support CAN FD, designed for unframed low-level byte-oriented links, and there is no single commonly supported standard – vendor-to-vendor variability is huge. My educated (and biased, admittedly) opinion is that UAVCAN/UDP is much better suited for the task of transferring CAN frames (or any other real-time data, for that matter) over a UDP/IP network. Just make a pair of publishers/subscribers on either end of the link and exchange messages of type uavcan.metatransport.can.Frame between them. There is also a full-featured exploratory CAN adapter control interface defined but it is more of a network service design excercise than a production-ready solution because it was never deployed in any practical application: On CAN adapters and stateless interfaces

If you decided to go this way, you can use PyUAVCAN on the host side and a somewhat modified Libcanard (or a trivial custom implementation) on the device side.

Edit: added an elaboration about libcanard