Skip to content

jarnax: swap udp::Socket for udp::Dispatcher in CyphalUDPInterface (issue-61) - #66

Merged
emrainey merged 1 commit into
developfrom
issue-61
Sep 18, 2026
Merged

emrainey merged 1 commit into
developfrom
issue-61

Conversation

@emrainey

Copy link
Copy Markdown
Owner

Progress on #61: replaces the udp::Socket abstraction with udp::Dispatcher in CyphalUDPInterface.

Summary

  • CyphalUDPInterface now depends on udp::Dispatcher (Join/Leave/Send) instead of udp::Socket; incoming datagrams are pushed in by the dispatcher implementation (libhypha on target).
  • New application-owned nucleo::cyphal::HyphaUdpDispatcher adapts libhypha's UDP callback and multicast TX/RX preparation to udp::Dispatcher. Leave() stops local dispatching because libhypha has no unprepare API.
  • GoogleTest suite migrated to MockUDPDispatcher (gmock); still 62/62 in jarnax-cyphal alone.

Verification

  • on-host-native-llvm: 21/21 tests pass
  • on-host-native-clang: 21/21 tests pass
  • on-target-cortex-m4-gcc-arm-none-eabi / on-target-cortex-m7-gcc-arm-none-eabi: build clean
  • ./scripts/build-all-presets.py: all working presets pass. on-host-native-gcc fails on Darwin only (Homebrew gcc cannot find its own stdlib headers — documented in AGENTS.md; CI runs that job on Linux where it passes).
  • act could not be run locally (no Docker daemon on this host).

Work split

  • AI (DeepSeek V4 Flash 0731): migrated tests to MockUDPDispatcher, deleted stale TODO.md, verified all presets, rebased issue-61 onto current develop.
  • Prior AI sessions: dispatcher abstraction, interface, hypha adapter, test suite (see issue Encapsulate libudpard in a jarnax::cyphal::Interface implementation #61 comments).
  • Human: accepted the Xcode license to unblock local builds.

Remaining per #61

  • Refactor CyphalApp onto CyphalUDPInterface (remove inline udpard plumbing)
  • Hardware verification via pylink-square-mcp/RTT + yactui
  • Final ./scripts/build-all-presets.sh pass before merge

…ssue-61)

CyphalUDPInterface now depends on udp::Dispatcher (Join/Leave/Send) rather than udp::Socket; incoming datagrams are pushed in by a Dispatcher implementation (libhypha on target). Adds the application-owned nucleo::cyphal::HyphaUdpDispatcher adapter, updates the GoogleTest suite to MockUDPDispatcher (62/62 pass on LLVM and AppleClang; M4/M7 cross builds pass), and drops the stale TODO.md (issue-62 checklist).

AI (DeepSeek V4 Flash 0731): migrated tests to MockUDPDispatcher, deleted TODO.md, verified all presets. Prior AI sessions: dispatcher abstraction, interface, hypha adapter, test suite (see PLAN.md). Human: accepted Xcode license to unblock local builds.
@emrainey
emrainey merged commit e0a8eaf into develop Sep 18, 2026
4 checks passed
@emrainey
emrainey deleted the issue-61 branch September 18, 2026 13:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant