Skip to content

Add Zenoh raw MAVLink driver#217

Closed
joaoantoniocardoso wants to merge 14 commits into
bluerobotics:masterfrom
joaoantoniocardoso:add-zenoh-raw-driver
Closed

Add Zenoh raw MAVLink driver#217
joaoantoniocardoso wants to merge 14 commits into
bluerobotics:masterfrom
joaoantoniocardoso:add-zenoh-raw-driver

Conversation

@joaoantoniocardoso

@joaoantoniocardoso joaoantoniocardoso commented Jun 10, 2026

Copy link
Copy Markdown
Member

Summary

  • Extract MAVLink JSON zenoh driver into src/lib/drivers/zenoh/json.rs
  • Share zenoh session via singleton in zenoh/mod.rs
  • Add ZenohRaw driver for raw MAVLink frame pub/sub over zenoh topics
  • Add parallel-safe integration test helpers, cargo-nextest, and zenoh integration tests

Topic layout

Driver Subscribe Publish
Zenoh (JSON) mavlink/in mavlink/out
ZenohRaw mavlink_raw/in mavlink_raw/out

Follow-up

CI improvements (sccache, cross, shared frontend) are stacked in joaoantoniocardoso#13 commits on top of this branch. Open upstream CI PR after this merges.

Test plan

  • CI green on 4746cfe: run 27261818195
  • cargo nextest run (integration tests process-isolated)
  • Confirm zenoh:// / zenohraw:// URL host/port intentionally ignored (session from --zenoh-config-file / defaults)

@joaoantoniocardoso

Copy link
Copy Markdown
Member Author

Split from former #216 for review:

Co-authored-by: Cursor <cursoragent@cursor.com>
@joaoantoniocardoso

Copy link
Copy Markdown
Member Author

Fixed CI failure in 11a4ea8:

  • Cause: parallel-safe integration tests (no `#[ignore]`) were still run via `cargo test`, which executes all tests in one process → driver UUID collisions.
  • Fix: switch test job to `cargo nextest run` (process-per-test isolation). Also removed stray `println!` in `ZenohRaw::create_endpoint_from_url`.

@joaoantoniocardoso

Copy link
Copy Markdown
Member Author

#217 CI is green on `11a4ea8`.

Stacked CI branch rebased onto this commit:

…rser

Co-authored-by: Cursor <cursoragent@cursor.com>
@joaoantoniocardoso

Copy link
Copy Markdown
Member Author

Review notes (ZenohRaw / topic layout)

Topics

Driver Subscribe (input) Publish (output)
Zenoh (JSON) mavlink/in mavlink/out
ZenohRaw mavlink_raw/in mavlink_raw/out

Loopback prevention uses origin tag "zenohraw" on the raw path (JSON driver uses its own origin).

Session

  • Shared singleton via OnceCell + watch channel; reconnect loop with 1s backoff.
  • Default client connects to tcp/127.0.0.1:7447 unless --zenoh-config-file is set.

Endpoint URL

  • zenoh:// / zenohraw:// host/port are parsed but not passed into the driver (session comes from global config). Worth confirming that is intentional for multi-router setups.

Cleanup in 4746cfe

  • Removed stray println! from Zenoh JSON create_endpoint_from_url (same as raw driver fix in 11a4ea8).

@joaoantoniocardoso

Copy link
Copy Markdown
Member Author

CI green on 4746cfe (includes json println cleanup): https://github.com/bluerobotics/mavlink-server/actions/runs/27261818195

@patrickelectric

Copy link
Copy Markdown
Member
image

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.

2 participants