Reliable UDP for Embedded Targets

udplink

A reliable UDP library for embedded and MCU-class targets. The repository already has a validated C++ core, a minimal C ABI, installed-package consumers, a strong Windows validation path, and an Arduino-first bring-up route for later board-backed verification.

C++ core validated on Windows / Linux / macOS Minimal C ABI with installed-package consumers Windows validation path is currently the strongest PlatformIO stays Arduino-first and intentionally narrow

Choose Your Path

The homepage should help you decide where to go next. Start with the path that matches your current goal rather than reading every maintainer page up front.

Current Repository Read

The homepage should not repeat the full repository README or the maintainer status page. Use this section to decide which document holds the detail you actually need.

READMEbuild, test, install, and API surface
Project Statuscurrent blockers, route, and decision posture
C ABIimplemented, but intentionally still wait
Board pathrun pack is ready, hardware evidence still missing

Read the repository guide

  • README.en: build, test, install, and public API quick views.
  • README: the fuller Chinese repository guide.
  • Use these files when you want commands and supported consumer paths rather than governance status.

Read the current project state

  • Project Status: what is already closed, what is still open, and what should happen next.
  • C API Quickstart: the currently supported public C entry points.
  • Use these pages when you need the current decision posture rather than the full repository tour.

Read the narrow follow-up paths

5-Minute Start

If you only want to know whether the project works on your machine, start with the host-side validation path. Only then decide whether to continue into C ABI or board bring-up work.

Build and test

git clone https://github.com/KairuiKin/udplink.git
cd udplink

cmake -S . -B build
cmake --build build --config Release

# Unix-like
ctest --test-dir build --output-on-failure

# Windows PowerShell
ctest --test-dir build -C Release --output-on-failure

If you only run one path, Windows is currently the strongest maintained validation route because it includes install-consume and release-style verification.

What to read next

Minimal Endpoint Snippet

This block stays synced with the repository source and shows the smallest useful combination of Config, Hooks, and StartConnect().

rudp::Config cfg = rudp::ConfigForProfile(rudp::ConfigProfile::kBalanced);
cfg.enable_auth = true;
cfg.auth_key0 = 0x0706050403020100ull;
cfg.auth_key1 = 0x0F0E0D0C0B0A0908ull;

rudp::Endpoint a;
rudp::Endpoint b;
rudp::Hooks ha = {&wire, NowMs, SendA, 0, DeliverA, 0, 0};
rudp::Hooks hb = {&wire, NowMs, SendB, 0, DeliverB, 0, 0};
if (!a.Init(cfg, ha) || !b.Init(cfg, hb)) return 1;
a.StartConnect();

Go Deeper By Role

The site now separates user-facing paths from maintainer-facing decision pages instead of flattening every internal draft onto the homepage.

Use and verify

Decide and maintain