# LibUDPard demo application

**URL:** <https://forum.opencyphal.org/t/libudpard-demo-application/1977>\
**Category:** LibUDPard\
**Created:** [September 4, 2023, 11:07am UTC](https://forum.opencyphal.org/t/libudpard-demo-application/1977 "2023-09-04T11:07:29Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![pavel.kirienko](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/pavel.kirienko/32/9_2.png) [@pavel.kirienko](https://forum.opencyphal.org/u/pavel.kirienko)\
**Post date:** [September 4, 2023, 11:07am UTC](https://forum.opencyphal.org/t/libudpard-demo-application/1977/1 "2023-09-04T11:07:29Z")

</div>

This pull request adds a demo application showcasing the usage of LibUDPard to the demos repository:

> <https://github.com/OpenCyphal-Garage/demos/pull/16>
>
> The code is a little sloppy compared to the library itself but it should be adeq…uate for the demo.
> 
> I moved the platform-specific parts -- the UDP stack and the storage I/O -- into separate modules to make the API surface clearly visible. This also simplifies porting if one wants to run this demo on an MCU.
> 
> I avoided building strong abstractions on top of LibUDPard because that may obscure the API of the library and attract attention of the reader to the features of the demo instead of those of the library itself. The flipside is that \`main.c\` has to be fairly large.
> 
> The Cavl library was added by copying the header file instead of adding the submodule because the entire library is just a single file alone so the submodule approach seemed like an overkill. We can change this if necessary, though. See a related question here: https://github.com/OpenCyphal-Garage/libudpard/issues/11

Do try this at home and submit feedback!
