GitHub - OpenCyphal/libudpard: A compact implementation of the Cyphal/UDP protocol in C for high-integrity real-time embedded systems (original) (raw)

Compact Cyphal/UDP in C

Main Workflow Reliability Rating Coverage Forum

LibUDPard is a compact implementation of the Cyphal/UDP protocol in C99/C11 for high-integrity real-time embedded systems.

Cyphal is an open lightweight data bus standard designed for reliable intravehicular communication in aerospace and robotic applications via CAN bus, UDP, and other robust transports.

We pronounce LibUDPard as lib-you-dee-pee-ard.

Features

Some of the features listed here are intrinsic properties of Cyphal.

Usage

The library implements the Cyphal/UDP protocol, which is a transport-layer entity. An application using this library will need to implement the presentation layer above the library, perhaps with the help of the Nunavut transpiler, and the network layer below the library using a third-party UDP/IP stack implementation with multicast/IGMP support (TCP and ARP are not needed). In the most straightforward case, the network layer can be based on the standard Berkeley socket API or a lightweight embedded stack such as LwIP.

%%{init: {"fontFamily": "Ubuntu Mono, monospace", "flowchart": {"curve": "basis"}}}%% flowchart TD classDef OpenCyphal color:#00DAC6,fill:#1700b3,stroke:#00DAC6,stroke-width:2px,font-weight:600 Application <-->|messages,\nrequests,\nresponses| LibUDPard[fa:fa-code LibUDPard] class LibUDPard OpenCyphal LibUDPard <-->|multicast datagrams| UDP subgraph domain_udpip["3rd-party UDP/IP+IGMP stack"] UDP <--> IP["IPv4, IGMPv1+"] <--> MAC end MAC <--> PHY

Loading

To integrate the library into your application, simply copy the files under libudpard/ into your project tree, or add this entire repository as a submodule. The library contains only one translation unit named udpard.c; no special compiler options are needed to build it. The library should be compatible with all conventional computer architectures where a standards-compliant C99 compiler is available.

**Read the API docs in libudpard/udpard.h.**For complete usage examples, please refer to https://github.com/OpenCyphal-Garage/demos.

Revisions

v1.0

Initial release.