Skip to content

Fix EUI64 endianness for Ziggurat-in-OT - #73

Merged
puddly merged 1 commit into
devfrom
fix/src-match-ext-byte-order
Oct 30, 2026
Merged

puddly merged 1 commit into
devfrom
fix/src-match-ext-byte-order

Conversation

@puddly

@puddly puddly commented Oct 30, 2026

Copy link
Copy Markdown
Member

Fixes #72 by adding big endian construction to the Eui64 struct and ensuring all EUI64 addresses leave the Rust side in memcpy-able form.

Copilot AI balanced review requested due to automatic review settings October 30, 2026 03:59

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues remain for the EUI64 byte-order changes.

No open issues 🎉

What changed in this PR

This PR addresses #72 by correcting EUI64 byte order at the Rust–OpenThread boundary, fixing reversed source-match entries that prevented some routers from joining.

Changes:

  • Adds big-endian conversion methods to Eui64 while preserving its internal over-the-air byte order.
  • Converts outgoing OpenThread addresses in Rust and moves hardware-address conversion out of C++ glue.
  • Reuses the shared conversions in Spinel and updates Rust/C interface documentation.
File Description
firmwares/​glue/​ziggurat_glue.cpp Returns hardware EUI64 bytes without reversing them.
crates/​ziggurat-spinel/​src/​lib.rs Removes Spinel-specific EUI64 conversion helpers.
crates/​ziggurat-spinel/​src/​client.rs Decodes hardware addresses with Eui64::from_be_bytes.
crates/​ziggurat-phy-spinel/​src/​lib.rs Uses shared big-endian conversion for Spinel addresses.
crates/​ziggurat-ot/​src/​platform.rs Documents OpenThread byte-order requirements at the Rust interface.
crates/​ziggurat-ot/​src/​link_ops.rs Sends configured and source-match addresses in OpenThread byte order.
crates/​ziggurat-ot/​src/​lib.rs Converts hardware EUI64 bytes into the internal representation.
crates/​ziggurat-ot/​include/​ziggurat.h Aligns C header comments with the byte-order contract.
crates/​ziggurat-ieee-802154/​src/​types.rs Adds shared big-endian EUI64 conversions and documents existing byte order.

Review effort: Balanced

@puddly
puddly merged commit fa047c8 into dev Oct 30, 2026
2 checks passed
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.

ESP32-C6 RCP: source-match EUI64s reach the radio byte-reversed, so joining routers never get "frame pending" and can't join

2 participants