About Cyphal serial transport and libserard

Hi, we have successfully integrated cyphal with libcanard in several of our products (small satellite radios).

We are now looking into adding cyphal over serial (rs422) as a fallback transport, but we cannot find any working implementation of libserard or any other example.

The only repository with some code is this: GitHub - OpenCyphal-Garage/libserard: A compact implementation of the Cyphal/serial protocol in C for high-integrity real-time embedded systems , but it contains only headers without any implementation.

If a working/beta implementation of libserard is not available, could we implement that ourselves by following the specification ?

We saw that yakut already supports serial transport and we can receive and decode the generated messages, but how do we pass the received frames to the upper layer ? Does exist something like a ‘canardRxAccept’ but for serial ?

Thanks for any input/help on the issue :slight_smile:

1 Like

Our very own @coder_kalyan has been working on the implementation in his fork of libserard:

He asked me to provide feedback on his work to eventually merge it into upstream, but I’ve been postponing that for a lack of time – sorry about that. I will pick it up as soon as time permits, but for now, consider using his fork as-is (YMMV). If you happen to have any feedback, feel free to open tickets and send pull requests.

Sorry for the delays.

Thanks a lot for the quick reply :slight_smile:

We plan to integrate and test the code next week.

We are happy to try it and give feedback as soon as possible.

1 Like

I got it to work for my use case of bridging between an OpenCyphal Can network and yakut on my laptop using a serial connection. I had to tweak one include and add an additional test before assigning an optional parameter in serardRxAccept.

In the spirit of least surprise, I suggest to keep the different transport libraries as aligned as possible and stress differences in the documentation.

Details are documented in https://github.com/coderkalyan/libserard/issues/2

1 Like

That’s an interesting use case. Why not use a CAN adapter on your laptop?

Hey Pavel, the use case is two fold. First, I don’t have a can adapter yet for the laptop. Second, the serial connection will ultimately be replaced with a radio link.