Skip to main content

MeshHeader

Struct MeshHeader 

Source
pub struct MeshHeader {
    pub src: u8,
    pub dst: u8,
    pub seq: u16,
    pub ttl: u8,
    pub flags: MeshFlags,
    pub hop_count: u8,
}
Expand description

Mesh packet header

+-------+-------+-------+-------+-------+---------------+
| Magic |  Src  |  Dst  | SeqHi | SeqLo | TTL | Flags   |
|  1B   |  1B   |  1B   |  1B   |  1B   | 4b  |   4b    |
+-------+-------+-------+-------+-------+---------------+
Total: 7 bytes

Fields§

§src: u8

Source node ID

§dst: u8

Destination node ID (0xFF = broadcast)

§seq: u16

Sequence number (for duplicate detection)

§ttl: u8

Time-to-live (hops remaining)

§flags: MeshFlags

Flags

§hop_count: u8

Hop count (how many hops traversed)

Implementations§

Source§

impl MeshHeader

Source

pub fn new(src: u8, dst: u8, seq: u16, ttl: u8) -> Self

Create a new mesh header

Source

pub fn broadcast(src: u8, seq: u16, ttl: u8) -> Self

Create a broadcast header

Source

pub fn is_broadcast(&self) -> bool

Check if this is a broadcast message

Source

pub fn for_relay(&self) -> Option<Self>

Create header for relay (decrements TTL, increments hop)

Source

pub fn encode(&self, buf: &mut [u8]) -> Result<usize>

Encode header to buffer

Source

pub fn decode(buf: &[u8]) -> Result<Self>

Decode header from buffer

Source

pub fn message_id(&self) -> u32

Get unique message ID for duplicate detection

Trait Implementations§

Source§

impl Clone for MeshHeader

Source§

fn clone(&self) -> MeshHeader

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MeshHeader

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for MeshHeader

Source§

fn eq(&self, other: &MeshHeader) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for MeshHeader

Source§

impl Eq for MeshHeader

Source§

impl StructuralPartialEq for MeshHeader

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.